FFmpeg - накладывать одно видео на другое?
Я понимаю, что это очень открытый вопрос. Я сделал некоторые начальные чтения в FFmpeg, но теперь требуется некоторое руководство.
проблема
- У меня есть видео
input.mov
, - Я хотел бы наложить еще одно видео поверх
overlay.wov
, - Результатом должно быть одно видео (
output.mov
).
Заметки
- Сделал начальное чтение в FFmpeg и прочитал этот вопрос.
Спасибо - C.
Правки
- Бэкэнд - это Go/Ruby. Открыто для использования нового языка.
- Аудио из первого видео должно быть сохранено.
- Установка интервала, с которого начинается оверлей, будет хорошей.
Текущее решение
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)