Как извлечь 1-й кадр и восстановить как изображение с помощью ffmpeg? - PullRequest
30 голосов
/ 13 декабря 2010

Кто-нибудь знает хитрость?

А как установить ffmpeg?yum install mpeg возвращает только это:

======================================================================================== Matched: mpeg ========================================================================================
libiec61883.i386 : Streaming library for IEEE1394
libiec61883.x86_64 : Streaming library for IEEE1394
qffmpeg-devel.i386 : Development package for qffmpeg
qffmpeg-devel.x86_64 : Development package for qffmpeg
qffmpeg-libs.i386 : Libraries for qffmpeg
qffmpeg-libs.x86_64 : Libraries for qffmpeg

Ответы [ 2 ]

54 голосов
/ 13 декабря 2010

Он находится на странице справки:

* You can extract images from a video, or create a video from many
       images:

       For extracting images from a video:

               ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

       This will extract one video frame per second from the video and will
       output them in files named foo-001.jpeg, foo-002.jpeg, etc. Images
       will be rescaled to fit the new WxH values.

       If you want to extract just a limited number of frames, you can use
       the above command in combination with the -vframes or -t option, or in
       combination with -ss to start extracting from a certain point in time.

Но, конечно, вы должны сначала установить его.Я нахожусь на Debian и не использую yum.

[обновить для другого вопроса]


i=1
for avi in *.avi; do
 ffmpeg -i $avi -vframes 1 -f image2 /tmp/$i.jpg; i=$((i+1))
done

Протестировано и работает.

[обновить еще один вопрос...]


for flv in *.flv; do
 ffmpeg -i $flv -vframes 1 -f image2 ${flv%%.flv}.jpg
done
28 голосов
/ 19 мая 2017

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

ffmpeg -i inputfile.mkv -vf "select=eq(n\,0)" -q:v 3 output_image.jpg

Объяснение:

Фильтр select -vf "select=eq(n\,0)" предназначен для выбора только кадра № 0.

-q:v позволяет вам установить качество выходного JPEG между 1 и 31. Чем меньше число, тем выше качество.2 - 5 работает хорошо, я использую 3.

Примечание : Это даст вам изображение того же размера, что и видео.Чтобы получить миниатюру, вы можете использовать масштабный фильтр, чтобы миниатюра соответствовала нужной ширине, например:

ffmpeg -i inputfile.mkv -vf "select=eq(n\,0)" -vf scale=320:-2 -q:v 3 output_image.jpg

Приведенная выше команда даст вам уменьшенное изображение JPEG, которое будет масштабировано до * 1021.* соответствовать ширина 320, а высота будет рассчитываться в соответствии с соотношением сторон.

...