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

如何用FFmpeg将音频中110ms以上静音段替换为400ms静音

使用FFmpeg替换长静音片段为固定时长静音

核心可以利用FFmpeg的silenceremove音频过滤器直接实现需求,无需手动拼接片段。

基础命令

ffmpeg -i input_audio.mp3 -af "silenceremove=start_periods=0:stop_periods=-1:stop_duration=0.11:stop_threshold=-50dB:leave_silence=0.4" output_audio.mp3

参数解释

  • start_periods=0: 不处理开头的静音片段(若需处理开头,可改为-1)
  • stop_periods=-1: 处理所有中间及结尾的静音片段
  • stop_duration=0.11: 仅匹配时长超过110ms(0.11秒)的静音片段
  • stop_threshold=-50dB: 判定静音的音量阈值,可根据音频实际背景噪音调整(噪音大时可设为-40dB)
  • leave_silence=0.4: 将符合条件的长静音片段替换为400ms(0.4秒)的静音

进阶:精准控制(脚本方式)

如果需要避免过滤器误判,可通过先检测静音区间再手动拼接的方式实现:

  1. 检测静音区间
    运行命令生成静音检测日志:
ffmpeg -i input_audio.mp3 -af silencedetect=n=-50dB:d=0.11 -f null - 2> silence_log.txt

日志中会包含silence_start: X.XXX和silence_end: Y.YYY格式的条目,对应超过110ms的静音起止时间。

  1. 生成片段列表
    解析日志将音频分割为非静音片段,同时预先生成400ms静音文件:
ffmpeg -f lavfi -i anullsrc=r=44100:cl=stereo -t 0.4 400ms_silence.mp3

之后编写脚本生成FFmpeg拼接用的列表文件segments.txt,格式示例:

file 'non_silence_segment_1.mp3'
file '400ms_silence.mp3'
file 'non_silence_segment_2.mp3'
  1. 拼接所有片段
ffmpeg -f concat -safe 0 -i segments.txt -c copy output_audio.mp3

内容的提问来源于stack exchange,提问作者对角另一面

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:42:40