2

Я хочу наложить одно видео на другое, но с задержкой. Я имею:

  • source1.mp4 длительностью 20 сек.
  • source2.mp4 длительностью 5 сек.

Я хочу создать окончательный вывод, в котором source2.mp4 перекрывает source1.mp4 с 00:00:07 до 00:00:12. Как мне этого добиться?

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

ffmpeg -i source1.mp4 -itsoffset 7 -i source2.mp4 -map 0:0 -map 1:1 -c copy -y output.mp4

ffmpeg -itsoffset 7 -i source2.mp4 -i source1.mp4 -filter_complex 'overlay=0:0' output.mp4 

ffmpeg -i source1.mp4 -i source2.mp4 -filter_complex "overlay" -strict -2 output.mp4

1 ответ1

4

Для этого вам нужна последняя версия ffmpeg (2.2). Так что вы должны запустить команду, как

ffmpeg -i sample1.mp4 -i sample2.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS[v0];[1:v]setpts=PTS-STARTPTS+7/TB[v1];[v0][v1]overlay=eof_action=pass[out1]" -map [out1]  /tmp/final.mp4

Хитрость заключается в том, чтобы установить для PTS для второго видео значение +7 секунд (PTS-STARTPTS +7/TB), а затем просто наложить 2 потока.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .