Открытый вопрос — с уходом ffmpeg из Ubuntu, что придет на замену модулю php5-ffmpeg? Сообщите в комментариях, если вам что-то известно.
Под катом небольшая функция, написанная на PHP5, использующая модуль php5-ffmpeg, извлекающая скриншоты и статистику.
Установка модуля php5-ffmpeg в Ubuntu
sudo apt-get install php5-ffmpeg
Функция принимает параметры
$video — полный серверный путь до (загруженного) видеоролика
$screens_path — передать полный серверный путь, чтобы сделать скриншоты
$screens_count — количество скриншотов
function movie_progress($video,$screens_path = FALSE,$screens_count = 10) { $movie = new ffmpeg_movie($video); if ( ! $movie) { return; } $frame_count = $movie->getFrameCount(); // получаем скриншоты $screens = FALSE; if ($screens_path) { // определяем интервал, через который будем извлекать скрины $step = floor($frame_count / ($screens_count)); $screens = array(); // извлекаем скриншоты, и складываем пути в массив for ($i = $step; $i < $frame_count; $i += $step) { $filename = $path.md5(rand()).'.png'; $frame = $movie->getFrame($i); $image = $frame->toGDImage(); imagepng($image,$filename); if (is_file($filename)) { $screens[] = $filename; } } } // возвращаем статистику и список скринов return array( 'width' => $movie->getFrameWidth(), // ширина в пикселях 'height' => $movie->getFrameHeight(), // высота в пикселях 'frame_count' => $frame_count, // количество фреймов 'bitrate' => $movie->getBitRate(), // битрейт 'video_bitrate' => $movie->getVideoBitRate(), 'video_codec' => $movie->getVideoCodec(), 'audio_codec' => $movie->getAudioCodec(), 'screens' => $screens, // массив со скриншотами ); }
Можно модифицировать любым образом, по вашему усмотрению.
Методы $movie->getAuthor(), $movie->getCopyright(), $movie->getArtist(), $movie->getGenre() и подобные по неизвестным мне причинам приводят к фатальной ошибке, не отлавливаемой средствами PHP.
Документация на модуль ffmpeg-php.sourceforge.net/doc/api/index.php
ссылка на оригинал статьи http://habrahabr.ru/post/171239/
Добавить комментарий