Продолжаем делать ютуб.
Открытый вопрос — с уходом 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
Автор: customtema