videoffmpegvideo-processingopenframeworks

FFmpeg - Overlay one video onto another video?


I understand that this is a very open ended question. I have done some initial reading into FFmpeg, but now require some guidance.

Problem

Notes

Thanks - C.

Edits

  1. Backend is Go/Ruby. Open to using a new language.
  2. The audio from the first video should be kept.
  3. Setting the interval at which the overlay starts would be great.

Current Solution

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

This nearly works, however:


Solution

  • If you just want a ffmpeg command, try

    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
    

    This starts the overlay at 5 seconds with the overlaid video start point being 00:15.

    setpts=PTS-10/TB is setpts=PTS+(overlay_delay-video_trim_in)/TB

    overlay=enable=gte(t\,5) is overlay=enable=gte(t\,overlay_delay)