我想用ffmpeg从wav文件中删除完全沉默的部分。
输入wav可以类似于:
我使用下面的ffmpeg命令删除静音部分ffmpeg -i input.wav -af silenceremove=stop_periods=-1:stop_duration=0.2:stop_threshold=-45dB output.wav
,因为我从文档中了解到,它将删除超过0.2s的所有静音部分(沉默小于-45 to )。
但我明白
其中静音部分只被减少到0.1左右,正如我希望的那样,它是0(没有剩下的静音)。
在Audacity中,我将使用“截断音频”筛选器并选择上面的参数来检测沉默,而在动作部分,我将选择截断为0:
。
这将屈服于我想要的(没有静音部分的音频):
在互联网上搜索只会引导我找到我已经做过的事情。
那么,我如何重现从Audacity“截断沉默”过滤器与ffmpeg获得的输出,并从音频中删除所有的静音部分?
编辑:来自沉默检测过滤器的输出是正确的:ffmpeg -i input.wav -af silencedetect=0.2:n=-45dB -f null -
准确地检测到了audacity检测到的内容。
提前感谢您的帮助
发布于 2022-02-08 14:03:51
类似于AUdacity的截断沉默行为的等效命令如下(以粗体表示添加的内容):
silenceremove=start_periods=1:stop_periods=-1:stop_duration=0.2:start_threshold=-45dB:stop_threshold=-45dB -i input.wav -af output.wav
我不知道为什么添加这两个参数会导致预期的行为,但是它可以工作,尽管对于某些文件,silenceremove可以删除比Audacity / sure检测检测更多的部件。
https://stackoverflow.com/questions/71029244
复制相似问题