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

FFmpeg批量处理视频时背景与前景叠加顺序错误的问题求助

FFmpeg批量处理视频时背景与前景叠加顺序错误的问题求助

嘿,我一眼就瞅出问题所在啦!你单独测试的命令和批量脚本里的输入文件顺序搞反了,导致滤镜链里的流索引对应错误,才会出现主视频和背景颠倒的情况。

问题根源分析

你能正常运行的单独命令里,输入顺序是:

ffmpeg -stream_loop -1 -i background1080p.mp4 -i input1080p.mp4 -i logo.png

这里[0]是循环的背景视频,[1]是要叠加的主视频,滤镜里是把缩放后的主视频([inner])叠加到背景([0])上,逻辑完全正确。

但批量脚本里的输入顺序变成了:

ffmpeg -i "%%a" -stream_loop -1 -i background.mp4 -i logo.png

现在[0]是来自INPUT文件夹的主视频,[1]才是循环的背景视频,可你滤镜里还是沿用了原来的索引逻辑,自然就把主视频当成底层、背景当成上层叠加了,顺序完全反了!

修正后的批量脚本

我帮你调整了滤镜链里的流索引,同时保留你原来的逻辑,修正后的脚本如下:

@ECHO OFF
Setlocal EnableDelayedExpansion

set INPUT=D:\Shorts\code\INPUT
set OUTPUT=D:\Shorts\code\OUTPUT

:: encode video:
for %%a in ("%INPUT%\*.*") DO (
    ffmpeg -i "%%a" -stream_loop -1 -i background.mp4 -i logo.png ^
    -filter_complex "[0]scale=1280:720[inner];[1][inner]overlay=70:70:shortest=1[vid]; [vid][2]overlay=10:10:enable='not(between(t\,10\,15))'[out]" ^
    -map "[out]" -map 0:a -c:a copy -shortest -y "%output%\%%~na.mp4"
)
pause

关键修改点说明

  1. 滤镜流索引调整:
    • 现在[0]是主视频,所以先对[0]执行缩放得到[inner]
    • 然后用[1][inner]overlay把缩放后的主视频(上层)叠加到背景视频([1],底层)上,恢复了你单独测试时的叠加顺序
  2. 优化脚本格式:
    • 把命令拆分成多行(用^换行),可读性更好
    • 给for循环加了括号,避免后续可能的语法问题
    • 调整了输出文件名,去掉了可能多余的%%03d序号(如果确实需要序号可以再加回来)
  3. 保留了你原来的音频映射(-map 0:a),也就是取主视频的音频,如果你想取背景的音频,可以改成-map 1:a

备注:内容来源于stack exchange,提问作者alexdo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:29:38