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

FFmpeg拼接多MP4并合并AAC音频:兼容有无音轨场景

解决方案

直接使用以下FFmpeg命令即可实现需求,自动适配拼接后的MP4有无音轨的场景:

ffmpeg -f concat -safe 0 -i concat.txt -i audio.aac -c:v copy -filter_complex "
  # 统一AAC音频格式,确保和空音轨参数匹配
  [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo[a1];
  # 生成与AAC参数一致的空音轨,作为无MP4音轨时的备选
  anullsrc=channel_layout=stereo:sample_rate=44100[empty_a];
  # 统一MP4音轨格式(如果存在的话)
  [0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo[a0];
  # 检测MP4是否存在音轨,生成选择标记
  [a0]exists,aselect=n=1:expr=0[use_empty];
  # 根据标记选择使用空音轨或MP4原音轨
  [empty_a][a0][use_empty]muxselect=inputs=3:map=0 if not 1 else 1[input_a];
  # 将选择后的音频与AAC混合,取最短时长对齐
  [input_a][a1]amix=inputs=2:duration=shortest[audio_out]
" -map 0:v -map "[audio_out]" -y result.mp4

关键部分解释

  • anullsrc:生成符合目标格式的空音轨,避免无MP4音轨时滤镜链找不到音频流的错误。
  • exists滤镜:检测拼接后的MP4输入流([0:a])是否存在,自动触发后续的音轨选择逻辑。
  • muxselect:根据exists的检测结果,动态切换使用空音轨或MP4原音轨,保证amix滤镜始终有两个合法的输入流。
  • aformat:统一所有音频流的采样率、声道数、采样格式,避免amix因格式不兼容报错。

注意事项

  • 请根据你的audio.aac实际参数调整anullsrc和aformat中的sample_rates、channel_layouts值(可通过ffmpeg -i audio.aac查看AAC参数)。
  • -c:v copy直接复制视频流,保证处理效率,适合自动化批量流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:32:52