![怎样才能自动从 mp3 中剪掉所有静音(0dB)而无需重新编码?](https://linux22.com/image/1574610/%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E8%87%AA%E5%8A%A8%E4%BB%8E%20mp3%20%E4%B8%AD%E5%89%AA%E6%8E%89%E6%89%80%E6%9C%89%E9%9D%99%E9%9F%B3%EF%BC%880dB%EF%BC%89%E8%80%8C%E6%97%A0%E9%9C%80%E9%87%8D%E6%96%B0%E7%BC%96%E7%A0%81%EF%BC%9F.png)
答案1
Stack Overflow 帖子中回答了这个问题 使用 FFMPEG 和 silentdetect 来消除音频静音。
第一个注释是,silencedetect 仅检测静音,而不是消除静音。您应该改用 silentremove 过滤器。
要检测你的 ffmpeg 版本是否有此过滤器运行:
ffmpeg -hide_banner -filters | grep silenceremove
输出应如下所示:
silenceremove A->A Remove silence
删除静音部分的命令可能如下所示:
ffmpeg -i input.mp3 -af silenceremove=1:0:-50dB output.mp3
其中silenceremove参数解释为删除:
- 在开头(由第一个参数表示
1
) - 最小长度为零(由第二个参数表示
0
) - 静音被定义为低于 -50 分贝(以 表示
-50dB
)
参考:FFMPEG 静音删除过滤器。
为了找到正确的静音值,首先将输入音频音量标准化为
0dB
,如中所述这个答案。