Каков лучший способ создания эскизов из видео в PHP?

Я создаю сайт видеовещания, в котором мне нужно знать, как создавать эскизы из видео. Пожалуйста помоги. Любые предложения или рекомендации будут высоко оценены

Solutions Collecting From Web of "Каков лучший способ создания эскизов из видео в PHP?"

Вот фрагмент для захвата кадра из середины видео. Это старый код, в котором я лежал, поэтому я уверен, что его можно упростить. Обязательно настройте путь ffmpeg в строке 1, чтобы он соответствовал месту установки.

$output = shell_exec("/usr/local/bin/ffmpeg -i {$path}"); preg_match('/Duration: ([0-9]{2}):([0-9]{2}):([^ ,])+/', $output, $matches); $time = str_replace("Duration: ", "", $matches[0]); $time_breakdown = explode(":", $time); $total_seconds = round(($time_breakdown[0]*60*60) + ($time_breakdown[1]*60) + $time_breakdown[2]); shell_exec("/usr/local/bin/ffmpeg -y -i {$input_filepath} -f mjpeg -vframes 1 -ss " . ($total_seconds / 2) . " -s {$w}x{$h} {$output_filepath}"; 

Вы можете использовать ffmpeg .

Как только он будет установлен на вашем сервере, вы можете использовать его на PHP, написав командную строку и вызывая exec на нем.

например:

 exec('ffmpeg -i mymovie.mov -vcodec mjpeg -vframes 1 -an -f rawvideo -s 64x64 foo.jpg'); 

Я знаю, что этот вопрос старый. Но я столкнулся с этим, когда искал подобное решение. Вот мои выводы. Надеюсь, это поможет кому-то другому.

  • Html5 + JS. Вот мои демо / слайды по этой теме.

  • HTML в библиотеку Canvas не пошел по этому пути, но, возможно, это сработает.

Я использовал ffmpeg, начиная задачу с exec () и добавляю амперсанд к команде, чтобы PHP-скрипт мог продолжить. Если я хочу, чтобы ffmpeg закончил сначала, у меня нет амперсанда.

Из FAQ: «Как закодировать фильм на отдельные снимки?» http://ffmpeg.org/faq.html#SEC15

 ffmpeg -i movie.mpg movie%d.jpg 

Это создает много изображений.

В документах: «Преобразование формата видео и аудио файлов» http://ffmpeg.org/ffmpeg-doc.html#SEC5

 ffmpeg -i foo.avi -r 1 -s WxH -f image2 -vframes 1 foo.jpeg 

Замените W & H шириной / высотой (см. http://ffmpeg.org/ffmpeg-doc.html#SEC9), замените vframes на количество желаемых кадров, добавьте% d в имя файла для порядкового номера, если вы делаете несколько изображений , Чтобы захватить в определенный момент видео, используйте -ss (см. http://ffmpeg.org/ffmpeg-doc.html#SEC8)