怎样才能自动从 mp3 中剪掉所有静音(0dB)而无需重新编码?

怎样才能自动从 mp3 中剪掉所有静音(0dB)而无需重新编码?

正如我所读沉默移除将重新编码文件。

通常我会手动创建如下文件:

file 'file.mp3'
inpoint 0
outpoint 01:55:00.0

file 'file.mp3'
inpoint 02:03:50.0

并执行此命令:

ffmpeg -f concat -safe 0 -i list.txt -c copy file.mp3

也许我可以用沉默检测用于创建相同的文件...

答案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,如中所述这个答案

相关内容