использование фильтра выбора ffmpeg - PullRequest
1 голос
/ 01 апреля 2019

Я застрял с использованием фильтра выбора ffmpeg, так как я хочу выбрать только конечный кадр входного видео, но я не могу понять выражение выбора для фильтра, чтобы выполнить работу, мой код выглядит следующим образом:

ffmpeg -i in.mp4  -filter_complex  "select=expr_selecting_lastest_frame, overlay=overlay_expr"  out.jpg

Теперь, как мне кодировать expr_selecting_lastest_frame?у вас есть идеи?Есть ли другой способ сделать работу?Пожалуйста, помогите, спасибо!

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Для форматов с известной длительностью и глобальным заголовком, таких как MP4 или MKV, вы можете выполнить

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

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

2 голосов
/ 01 апреля 2019

используйте ffprobe, чтобы получить общее количество кадров и присвоить его переменной

$frame_count="$(ffprobe -v 0 -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -of csv=p=0 in.mp4)";

используйте переменную в фильтре выбора

ffmpeg -i in.mp4 -filter_complex "select='eq(n,$frame_count)'" -vframes 1 out.jpg

или от второго до последнего кадра

ffmpeg -i in.mp4 -filter_complex "select='eq(n,$frame_count-1)'" -vframes 1 out.jpg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...