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

如何使用FFmpeg在指定时间点将一个音频文件插入另一个音频文件?若FFmpeg无法实现,是否有其他命令行工具可完成该操作?

如何将一段音频插入到另一段音频的指定位置?

没问题,FFmpeg完全可以搞定这个需求!而且操作起来也不算复杂,我给你拆解一下具体的实现方法,以及备选的命令行工具方案。

用FFmpeg实现的具体命令

核心思路是把原音频拆成「前30分钟片段」+「要插入的5秒音频」+「原音频剩余片段」,然后将这三部分拼接起来。直接用这个命令就行:

ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex \
"[0:a]split[a1][a2]; \
[a1]atrim=end=1800[a1_trim]; \
[a2]atrim=start=1800[a2_trim]; \
[a1_trim][1:a][a2_trim]concat=n=3:v=0:a=1[outa]" \
-map "[outa]" output.mp3

我给你解释下每个参数的作用:

  • -i input1.mp3:指定你的1小时原音频文件;-i input2.mp3:指定要插入的5秒音频文件
  • [0:a]split[a1][a2]:把原音频的音频流拆分成两个副本,分别用来截取前半段和后半段
  • atrim=end=1800:截取原音频的前1800秒(也就是30分钟),得到a1_trim流
  • atrim=start=1800:截取原音频从1800秒开始到结尾的部分,得到a2_trim流
  • concat=n=3:v=0:a=1:把a1_trim(前30分钟)、1:a(插入音频)、a2_trim(剩余部分)这三个音频流按顺序拼接,n=3表示3个输入流,v=0表示不需要视频,a=1表示保留音频
  • -map "[outa]":指定输出的音频流,最后生成output.mp3文件

如果你的音频不是MP3格式(比如WAV、FLAC),直接替换文件名后缀就行,FFmpeg会自动适配编码。另外如果原音频和插入音频的采样率、声道数不一致,可以在命令末尾加上-ar 44100 -ac 2来统一参数,避免拼接后出现音质问题。

备选工具:SoX(Sound eXchange)

如果你不想用FFmpeg,SoX也是一个非常好用的命令行音频处理工具,步骤分两步:

  1. 先把原音频切成两段:
# 截取原音频前30分钟(1800秒)
sox input1.mp3 part1.mp3 trim 0 1800
# 截取原音频从30分钟开始到结尾的部分
sox input1.mp3 part2.mp3 trim 1800
  1. 把三段音频按顺序拼接:
sox part1.mp3 input2.mp3 part2.mp3 output.mp3

这个方法更直观,适合对命令行不太熟悉的用户,同样要注意确保所有音频的参数一致,不然SoX可能会提示错误或者自动转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:47:47