You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于在主视频多个时间点叠加Overlay视频的技术实现问询

Solution for Multiple Timed Video Overlays in FFmpeg

Hey there, I’ve run into this exact scenario before—good news is ffmpeg’s overlay filter can totally handle multiple timed overlays, you just need to structure your filter chain properly. Let’s break down two solid approaches:

Approach 1: Chain Overlays with Split Filter (Most Efficient)

Instead of reloading your overlay video multiple times, use the split filter to create multiple copies of the overlay stream. This keeps your command clean and efficient:

ffmpeg -i main.mp4 -i overlay.mp4 \
-filter_complex "
# Split the overlay video into 3 separate streams (one for each overlay instance)
[1:v]split=3[overlay1][overlay2][overlay3];

# First overlay: starts at 15s, runs until main video ends
[0:v][overlay1]overlay=enable='gte(t,15)'[temp1];

# Second overlay: starts at 35s, runs until main video ends
[temp1][overlay2]overlay=enable='gte(t,35)'[temp2];

# Third overlay: starts at 55s, runs until main video ends
[temp2][overlay3]overlay=enable='gte(t,55)'[final_vid]
" -map "[final_vid]" -map 0:a output.mp4

Key Notes:

  • gte(t, X) means "greater than or equal to time X"—this automatically stops when the main video ends, so you don’t have to hardcode the main video’s duration.
  • If you need to limit the overlay to a fixed duration (e.g., exactly 10s each), replace gte(t,X) with between(t,X,X+10) instead.
  • The [temp1]/[temp2] labels pass the video stream through each overlay step sequentially.

Approach 2: Multiple Inputs (More Intuitive for Beginners)

If you prefer a more straightforward setup, you can load the overlay video multiple times (once per overlay instance) and apply the filter to each input pair:

ffmpeg -i main.mp4 -i overlay.mp4 -i overlay.mp4 -i overlay.mp4 \
-filter_complex "
[0:v][1:v]overlay=enable='gte(t,15)'[temp1];
[temp1][2:v]overlay=enable='gte(t,35)'[temp2];
[temp2][3:v]overlay=enable='gte(t,55)'[final_vid]
" -map "[final_vid]" -map 0:a output.mp4

This works exactly like the first method, but uses separate inputs instead of splitting a single stream. It’s easier to follow if you’re new to ffmpeg filter chains.

Bonus: Handling Overlay Audio (If Needed)

If your overlay video has audio you want to mix in at the same timestamps, you can use the amix filter with matching enable parameters. For example, adding audio overlays would extend the filter chain like this:

ffmpeg -i main.mp4 -i overlay.mp4 \
-filter_complex "
[1:v]split=3[o1][o2][o3];
[1:a]split=3[a1][a2][a3];
[0:v][o1]overlay=enable='gte(t,15)'[t1];
[t1][o2]overlay=enable='gte(t,35)'[t2];
[t2][o3]overlay=enable='gte(t,55)'[fv];
[0:a][a1]amix=enable='gte(t,15)'[ta1];
[ta1][a2]amix=enable='gte(t,35)'[ta2];
[ta2][a3]amix=enable='gte(t,55)'[fa]
" -map "[fv]" -map "[fa]" output.mp4

Just adjust the amix settings (like duration=first or dropout_transition) if you need to tweak how the audio mixes.

内容的提问来源于stack exchange,提问作者kbcool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:21:31