Как перестать удерживать последний кадр в видеопотоке как часть контейнера mp4, закодированного с помощью ffmpeg? - PullRequest
0 голосов
/ 13 марта 2019

Я кодирую фиктивный mp3-файл (7 секунд белого шума) и фиктивный файл mp4 (без звука с красным фоновым изображением в течение 4 секунд) вместе, чтобы сформировать файл mp4. Команда для создания этого файла:

ffmpeg -i dummy.mp3 -itsoffset 0 -t 2 -ss 0 -i dummy.mp4 -c:v copy -map 1:v -map 0:a -copyts output.mp4 

Итак, как вы можете видеть, я усекаю dummy.mp4 до 2 секунд (изначально 4 секунды). Однако, когда я играю output.mp4 в QuickTime Player, я вижу красное фоновое изображение целых 7 секунд.

То, что я хочу, - это красное фоновое изображение dummy.mp4 на 2 секунды, затем черное (ничего).

Как мне этого добиться?

Ура!

1 Ответ

0 голосов
/ 13 марта 2019

Это на самом деле зависит от игрока - следует ли перерисовывать пустой холст после отображения последнего кадра в течение его продолжительности.

Вы можете сделать это окольным путем, создав blank.mp4 с теми же свойствами, что и dummy.mp4, за исключением, конечно, визуального.

Создать текстовый файл,

file dummy.mp4
outpoint 2
file blank.mp4

, а затем,

ffmpeg -i dummy.mp3 -itsoffset 0 -f concat -i list.txt -c:v copy -map 1:v -map 0:a output.mp4

P.S. copyts применяется только для входных данных

...