2016-08-03 2 views
0

как генерировать миниатюру с середины видео с помощью FFmpeg ..Как создать миниатюру с середины видео с FFmpeg

например, у меня есть видео продолжительностью 1 минута я хочу, чтобы генерировать миниатюру на 30-й секунде

Я использовал следующий код, но сгенерировал миниатюру на 59-й секунде. i, потому что я упоминаю -ss 59, как мы можем сделать его динамическим до середины продолжительности видео.

ffmpeg -i input.mp4 -deinterlace -an -ss 59 -f mjpeg -t 1 -r 1 -y -s 256x160 output.jpg 

Я пробовал это, но я получаю ошибку.

ffmpeg -i input.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -ss `ffmpeg -i clip.mp4 2>&1 | grep Duration | awk '{print $2}' | tr -d , | awk -F ':' '{print $3/2}'` output.jpg 

благодарит заранее.

ответ

1

Вы можете использовать ffprobe, чтобы получить длительность ввода, затем используйте это, чтобы определить значение -ss.

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4 
30.24 

Тогда скрипт, однако вы предпочитаете. Пример использования bash (я не являюсь пользователем PHP, поэтому я не могу дать вам решение «под ключ»):

input=input.mp4 
dur=$(ffprobe -loglevel error -show_entries format=duration -of default=nk=1:nw=1 "$input") 
ffmpeg -y -i "$input" -ss "$(echo "$dur/2" | bc -l)" -vframes 1 -q:v 2 output.jpg 
+0

Мне нужно, чтобы в php. Я хочу использовать его в php вот так exec ("E: /wamp/www/ffmpeg/bin/ffmpeg.exe -i $ video_path -deinterlace -an -ss 59 -f mjpeg -t 1 -r 1 - y -s 256x160 $ ​​thumb_path 2> &1"); – Arman

Смежные вопросы