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

FFmpeg中如何将concat滤镜输出作为复杂滤镜输入单命令处理

FFmpeg 单命令实现concat拼接后接后续滤镜的方案

原命令核心问题

  • 输入流索引错误:你共传入3个输入文件,索引从0开始依次为[0](irregular.mp4)、[1](intro.mp4)、[2](outro.mp4),原命令错误调用了不存在的[3]输入,且intro、outro的索引对应错误
  • 标签重复定义:同一标签[b]被重复赋值两次,引发流识别冲突
  • 语法错误:-map"[concatenateda]"参数中间缺少空格,属于命令格式错误
  • 拼接顺序错误:原命令concat输入顺序不符合常规片头→正片→片尾的拼接逻辑
  • 缺失参数统一处理:concat滤镜要求所有输入的视频分辨率、帧率、音频采样率/声道数完全一致,原命令未做参数对齐,容易拼接失败

修正后可用命令

ffmpeg -i irregular.mp4 -i intro.mp4 -i outro.mp4 -filter_complex \
# 处理片头intro,统一音视频参数
[1:v]scale=1080:610:force_original_aspect_ratio=increase,crop=1080:610,setdar=16/9,fps=30[v_intro]; \
[1:a]aformat=sample_rates=44100:channel_layouts=stereo[a_intro]; \
# 处理正片irregular,统一音视频参数
[0:v]scale=1080:610:force_original_aspect_ratio=increase,crop=1080:610,setdar=16/9,fps=30[v_main]; \
[0:a]aformat=sample_rates=44100:channel_layouts=stereo[a_main]; \
# 处理片尾outro,统一音视频参数
[2:v]scale=1080:610:force_original_aspect_ratio=increase,crop=1080:610,setdar=16/9,fps=30[v_outro]; \
[2:a]aformat=sample_rates=44100:channel_layouts=stereo[a_outro]; \
# 按片头→正片→片尾顺序拼接
[v_intro][a_intro][v_main][a_main][v_outro][a_outro]concat=n=3:v=1:a=1[concat_v][concat_a]; \
# 对拼接后的视频流执行pad操作
[concat_v]pad=1080:1920:(ow-iw)/2:(oh-ih)/2[padded_v]; \
# 叠加边框(如果overlay素材是独立边框文件,可追加第四个输入后替换对应索引即可)
[padded_v][1:v]overlay=0:0[out_v] \
# 映射最终输出的视频和音频
-map "[out_v]" -map "[concat_a]" -c:v libx264 -c:a aac output.mp4

命令中用反斜杠换行仅为方便阅读,可直接合并为单行执行,完全符合单命令处理的要求。

关键逻辑说明

concat滤镜输出的视频流[concat_v]、音频流[concat_a]可以直接作为后续所有滤镜的输入,你要追加缩放、调色等其他操作,直接在concat之后接对应的滤镜链即可,不需要二次封装文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:09:03