PHP скриншоты с видео

Статус
В этой теме нельзя размещать новые ответы.

dimm666

Создатель
Регистрация
20 Мар 2009
Сообщения
25
Реакции
0
Доброго дня. Есть ролик в формате H.264 С него нужно сделать серию скринов (типа раскадровки). Может кто-нибудь подсказать, как это сделать? Может, хоть платное что-то есть?
 
установить на сервере ffmpeg или mplayer, но для mplayer нужны будут кодеки отдельно. Дальше через командную строку в php запускаем команду создания снимка, например

ffmpeg -i video.mp4 -y -f image2 -ss 8 -sameq -t 0.001 -s 320*240 screenshot.png

подробно команды


получается php скрипт такой
PHP:
exec("ffmpeg -i video.mp4 -y -f image2 -ss 8 -sameq -t 0.001 -s 320*240 screenshot.png");
тут скомпилированный ffmpeg для windows


например на windows подробная информация о видео файле
PHP:
//показать результат
$output = shell_exec("ffmpeg.exe -i video.mp4 2>&1");
echo "<pre>$output</pre>";

//результат в массиве по строчкам
exec("ffmpeg.exe -i video.mp4 2>&1", $output);
echo "<pre>";
print_r($output);
echo "</pre>";
 
Не могу понять, ffmpeg делает скрины только первых 53 кадров, а дальше - нет. Может, кто сталкивался?
 
может скрипт не успевает за 30 сек сделать скрины, если ошибка такая
Maximum execution time of 30 seconds exceeded
тогда можно увечил ограничение времени выполнения скрипта по умолчанию с функцией set_time_limit(секунд)

Ещё вариант запускать обработку видео в фоновом режиме через командную строку php, например скрипт обработки такой
PHP:
<?
//параметры из командной строки
$path = $_SERVER['argv']['1']; 
$video = $_SERVER['argv']['2']; 
$log = $_SERVER['argv']['3'];
$output = shell_exec($path."ffmpeg.exe -i ".$path.$video." -y -f image2 -ss 8 -sameq -t 0.001 -s 320*240 ".$path."screenshot.png 2>&1");
file_put_contents($path.$log, $output);
?>
а скрипт запуска скрипта обработки такой
PHP:
//запуск скрипта в фоновом режиме windows - "> nul", unix - ">/dev/null &"
exec("/usr/local/bin/php5.exe /home/ffmpeg/convert.php /home/ffmpeg/ video1.mp4 log1.txt > nul");
плюс что при запуске не надо ждать пока выполнится скрипт, минус не ясно когда закончится обработка но можно логи проверять, если есть лог то закончено. Ещё могут быть проблемы с видео файлом тогда по логам смотреть.
 
Разобрался более-менее. Осталась только одна проблема - делает скрины не дальше 600-700 кадра (при 20000 кадрах). Потом просто тихо, без ошибок умирает. Может, какие-то ограничения на хостинге?
$img=$movie->getFrame($frame)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху