我有两个视频,其中一个视频叠加在另一个视频上。叠加的视频只有几秒钟长,我想让它在主视频播放时继续循环播放。我试过了我能想到的所有办法,但似乎都没有用ffmpeg
- 例子:
- “main_video” 持续时间 56:00:00
- “video_bg_overlay” 长时间 00:00:30
如何让“video_bg_overlay”在“main_video”时自动循环播放?
答案1
电影滤镜中的循环选项不会为循环扩展设置新的时间戳,因此必须手动完成。
ffmpeg -i "main_video" -af "pan=stereo|c0=FL|c1=FR,volume=1.5" \
-vf "movie=video_bg_overlay.mp4:loop=0,setpts=N/FRAME_RATE/TB,hue=s=0[bg];[in]scale=iw/2:-1,pad=iw+20:ih+20:10:10:color=yellow[m]; [bg][m]overlay=shortest=1:x=(W-w)/2:y=(H-h)/2[out]" \
-c:v libx264 Out_video
答案2
使用-stream_loop
选项:
ffmpeg -stream_loop -1 -i bg.mp4 -i main.mp4 -filter_complex "[0][1]overlay=shortest=1[v]" -map "[v]" -map 1:a -c:a copy output.mp4