Как остановить ffmpeg-lavfi от изменения частоты кадров в секунду - PullRequest
0 голосов
/ 23 марта 2020

У меня есть MP4 видео от Giphy . Это видео имеет длину 200 мс и 10 кадров в секунду, как сообщает mediainfo. Я пытаюсь использовать ffmpeg для добавления фильтров к этому видео.

1) Следующая команда работает отлично. В выходном видео fps = 10 и длительность = 200 мс

ffmpeg3 \
-y \
-i input.mp4 \
-i watermark.jpg \
-filter_complex "[0][1]overlay=W-w-20:H-h-20" \
-c:a aac \
-preset ultrafast \
output.mp4

Но для большего количества фильтров мне нужно использовать lavfi (например, для размещения источника текста над или под видео, bg color, et c)

2) Следующая команда с lavfi выводит видео с частотой кадров в секунду = 25 и длительностью ~ = 520 мс

ffmpeg3 \
-y \
-i input.mp4 \
-f lavfi -i color=c=#FFFF0000@1.0:s=1022x682:d=0.5,format=rgba \
-i watermark.jpg \
-filter_complex "[0]scale=1022:682[S3];[S3][2]overlay=W-w-20:H-h-20[O4];[1][O4]overlay=0:0" \
-c:a aac \
-preset ultrafast \
output.mp4

3) Если я добавлю r=10 к lavfi input, fps изменяется до 10, но длительность ~ 500 мс

-f lavfi -i color=c=#FFFF0000@1.0:s=1022x682:r=10:d=0.5,format=rgba \

Даже в этом случае длительность вывода неверна. И видео просто зависает на оставшуюся продолжительность. Я не могу использовать какой-либо спецификатор кадра, потому что я не знаю входную частоту кадров до этой команды. Все видеовходы от пользователя / клиента этого программного обеспечения, которое я пишу. Это не одноразовая задача.

Это происходит только тогда, когда я использую lavfi.

. Я хочу, чтобы output.mp4 имел тот же кадр / с и длительность, что и для первого ввода (т. Е. 0 или input.mp4). Как я могу это сделать (желательно одной командой)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...