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

FFmpeg将带时间偏移的多段音频合并到视频,adelay过滤器报错求解

问题原因

Ubuntu 20.04 官方软件源默认搭载的 FFmpeg 版本为 4.2.x 系列,该版本的 adelay 滤镜语法和新版存在差异,你用到的两个特性在旧版本中均不支持:

  • 不支持带时间单位(如s/S)的延迟值输入,仅支持直接填写毫秒为单位的整数
  • 不支持 delays= 参数前缀与 all=1 参数,旧版本直接填写延迟值即可自动应用到所有声道

解决方法

方法1:修改命令适配旧版 FFmpeg(无需换版本,最快生效)

将所有延迟值转换为毫秒,删除delays=前缀与all=1参数,修改后的完整命令如下:

ffmpeg -y -i earth.mp4 -i 1.wav -i 2.wav -i 3.wav -filter_complex "[1]adelay=5000[r1]; [2]adelay=8000[r2]; [3]adelay=15000[r3]; [r1][r2][r3]amix=inputs=3[a]"  -map 0:v -map "[a]" -codec:v copy output.mp4

注:你原命令中第二个音频的8000S大写S是采样数单位,如果你实际需要的是8秒延迟,直接填8000即可;如果确实需要按采样数设置延迟,就需要用方法2升级FFmpeg。

如果发现混合后的音频音量明显降低,可以在amix后增加音量补偿,比如3个音频混合就把音量放大3倍:

ffmpeg -y -i earth.mp4 -i 1.wav -i 2.wav -i 3.wav -filter_complex "[1]adelay=5000[r1]; [2]adelay=8000[r2]; [3]adelay=15000[r3]; [r1][r2][r3]amix=inputs=3,volume=3[a]"  -map 0:v -map "[a]" -codec:v copy output.mp4

方法2:升级FFmpeg到4.4及以上版本(支持原版命令语法)

如果需要使用带单位的延迟写法等新特性,可以通过第三方PPA安装新版FFmpeg:

# 卸载原有旧版FFmpeg
sudo apt remove --purge ffmpeg -y
# 添加FFmpeg 4.x PPA源
sudo add-apt-repository ppa:savoury1/ffmpeg4 -y
sudo apt update
# 安装新版FFmpeg
sudo apt install ffmpeg -y

安装完成后你原本写的命令就可以正常运行,注意确认8000S是否是你需要的采样数延迟,如果是要8秒延迟建议改成8s避免歧义。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:45:02