FFmpeg - накладывать одно видео на другое?

Я понимаю, что это очень открытый вопрос. Я сделал некоторые начальные чтения в FFmpeg, но теперь требуется некоторое руководство.

проблема

  • У меня есть видео input.mov,
  • Я хотел бы наложить еще одно видео поверх overlay.wov,
  • Результатом должно быть одно видео (output.mov).

Заметки

Спасибо - C.

Правки

  1. Бэкэнд - это Go/Ruby. Открыто для использования нового языка.
  2. Аудио из первого видео должно быть сохранено.
  3. Установка интервала, с которого начинается оверлей, будет хорошей.

Текущее решение

ffmpeg -i input.mov -i overlay.mov -filter_complex "[0:0][1:0]overlay[out]" -shortest -map [out] -map 0:1 -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18  output.mov

Это почти работает, однако:

  • Наложение обрезается, хотя два видео (input.mov & overlay.mov) одинаковой длины.
  • Я не могу начать наложение в любой интервал, кроме 0:00,

1 ответ

Решение

Если вы просто хотите команду ffmpeg, попробуйте

ffmpeg -i input.mov -i overlay.mov \
-filter_complex "[1:v]setpts=PTS-10/TB[a]; \
                 [0:v][a]overlay=enable=gte(t\,5):shortest=1[out]" \
-map [out] -map 0:a \
-c:v libx264 -crf 18 -pix_fmt yuv420p \
-c:a copy \
output.mov

Это начинает наложение в 5 секунд с наложенной точкой начала видео 00:15,

setpts=PTS-10/TB является setpts=PTS+(overlay_delay-video_trim_in)/TB

overlay=enable=gte(t\,5) является overlay=enable=gte(t\,overlay_delay)

Другие вопросы по тегам