ffmpeg накладывает видео на другое видео в определенное время

3889
BOB

У меня есть видео с продолжительностью 01:30 мин, и у меня есть другое видео с продолжительностью 00:50 сек. Я хочу наложить второе видео поверх первого видео с 00:45 до 00:50.

я пытаюсь использовать эту команду, но она не работает

ffmpeg -i D:\ffmpeg\base_video.mp4 -i D:\ffmpeg\top_video.avi -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 D:\ffmpeg\final_video.mp4 

какие-либо предложения, пожалуйста?

Спасибо

2

1 ответ на вопрос

1
Gyan

You have to use the enable option:

ffmpeg -i D:\ffmpeg\base_video.mp4 -i D:\ffmpeg\top_video.avi -filter_complex \ "[0:0][1:0]overlay=enable='between(t\,45,50)'[out]" \ -shortest -map [out] -map 0:1 \ -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 D:\ffmpeg\final_video.mp4 

To delay the start of the top video, use the setpts filter.

ffmpeg -i D:\ffmpeg\base_video.mp4 -i D:\ffmpeg\top_video.avi -filter_complex \ "[1]setpts=PTS-STARTPTS+10/TB[top]; [0:0][top]overlay=enable='between(t\,10,15)'[out]" \ -shortest -map [out] -map 0:1 \ -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 D:\ffmpeg\final_video.mp4 
Спасибо @Mulvya, это отлично работает, но есть другая проблема, если я накладываю видео с 00:00 до 00:05, это нормально, но если я выбираю другое время, например, с 00:10 до 00:15, это накладывает последний кадр только из топ видео, так как мы можем решить эту проблему BOB 8 лет назад 0
Я думаю, что это произойдет, потому что оба видео начинают воспроизводиться в 00:00, а верхнее видео появляется только в определенное время, поэтому мне нужно, чтобы главное видео начало воспроизводиться в 00:10, а не в 00:00. BOB 8 лет назад 0
Эй, братан, могу ли я наложить более одного видео в определенное время одним и тем же способом? Я ищу по этому поводу, но не нашел хорошего способа решить эту проблему. BOB 8 лет назад 0
Добавьте еще один фильтр наложения, где первый вход является выходом предыдущего фильтра наложения, например, `[out] [2: v] overlay [out2]` Gyan 8 лет назад 0
Спасибо, брат, я понимаю это решение, но могу ли я сделать это одной командой? BOB 8 лет назад 0

Похожие вопросы