Извлеките последний кадр из видео с помощью ffmpeg

#ffmpeg #ffprobe

Вопрос:

Я знаю, как извлечь первый кадр с помощью

ffmpeg -ss 00:00:00 -i input.mp4 -vframes 1 -q:v 31 output.png

Здесь опция -ss требует знать точное время извлечения кадра.

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

Есть ли способ достичь этого?

Ответ №1:

Воспользуйся

 ffmpeg -sseof -3 -i file -vsync 0 -q:v 31 -update true out.jpg  

-sseof ищет с конца — я использовал значение 3 для учета файлов с более длинными аудиопотоками. -update это опция мультиплексора image2, которая указывает ffmpeg перезаписать выходной файл. Таким образом, в последний раз выходные данные будут перезаписаны, когда будет обработан последний кадр.

Комментарии:

1. Это работает. Хотя это может быть немного медленно, так как для этого необходимо обработать все видео…

2. Нет, он не обрабатывает все видео целиком, пока ваш ввод в формате MP4/MKV хранится на локальном диске.

3. Но я понимаю -update , что нужно передать каждый кадр видео, поэтому вам нужно использовать -vsync 0 . Извините, если я неправильно использую слово » процесс «.

4. -обновление будет записывать каждый полученный кадр. -sseof -3 это означает, что он будет получать только кадры из последних 3 секунд видео.