#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 секунд видео.