ffmpeg задержка видео в оверлее - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь наложить 2 видео, и одно из них (то, что «внизу»), я хочу отложить начало (скажем, на 2 секунды).

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

Вот то, что я попробовал, основываясь на этом аналогичном вопросе: https://superuser.com/questions/734234/delayed-video-overlay-using-ffmpeg

ffmpeg
-i video_top
-i video_bottom
-filter_complex
"[0:v]trim=start='00\:04\:17.8':end='00\:04\:32.8',setpts=PTS-STARTPTS, scale=-1:'ih-ih*.5':eval=frame[v0];
[0:a]atrim=start='00\:04\:17.8':end='00\:04\:32.8',asetpts=PTS-STARTPTS[a0];
[1:v]setpts=PTS-STARTPTS+2/TB, format=yuva420p[v1];
[v1][v0]overlay=y=(main_h-overlay_h)*.074:format=yuv444:shortest=0:alpha='straight',format=yuv420p[out]"
-map [out] -map [a0] -vcodec libx264 testing_14.mp4

Однако результатом этого будет что ОБА видео замораживают первый кадр на время задержки (в данном случае 2 секунды). Я пробовал множество альтернативных вариантов, включая

  • Установка PTS только для одного из видеопотоков вместо обоих
  • Использование -itsoffset вместо PTS

Кажется, ничего не работает.

1 Ответ

3 голосов
/ 04 августа 2020

Используйте фильтр tpad . Во время задержки вы можете либо клонировать первый кадр, либо показать цвет solid. Упрощенные примеры:

Клонировать 1-й кадр:

ffmpeg -i background.mp4 -i front.mp4 -filter_complex "[0]tpad=start_duration=2:start_mode=clone[bg];[bg][1]overlay" output.mp4

Показать solid цвет:

ffmpeg -i background.mp4 -i front.mp4 -filter_complex "[0]tpad=start_duration=2:start_mode=add:color=black[bg];[bg][1]overlay" output.mp4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...