ubuntu - 如何以编程方式从 MP3 中删除静音?

标签 ubuntu audio ffmpeg mp3 sox

我有一些 MP3 文件,有时最后会有静音。我想自动消除这种沉默。据我所知,这是“完美”的静音(0 振幅),而不是背景噪音。内容和沉默的长度各不相同。

我发现了一些关于 cropping to the first 30 seconds 的其他问题或 cropping to X and X+N seconds使用 ffmpeg。我想我可以使用类似的方法,只要我有办法找到沉默开始的时间。我将如何以编程方式执行此操作?

例如,一种可能的解决方案是使用一条命令来查找“沉默”的开头。我期待这样的序列

end=$(ffmpeg some-command-to-find-start-of-silence)
ffmpeg -t "$end" -acodec copy -i inputfile.mp3 outputfile.mp3

该解决方案不必必须使用 ffmpeg,但它确实需要在 Ubuntu 上可用。

最佳答案

sox inputfile.mp3 outputfile.mp3 silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse

这将从您的文件中删除任何超过 0.1 秒的静音。如果您只关心修剪末端,这可以简化为:

sox inputfile.mp3 outputfile.mp3 reverse silence 1 0.1 0.1% reverse

可以找到关于soxsilence 工作原理的详细信息 here .

关于ubuntu - 如何以编程方式从 MP3 中删除静音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834297/

相关文章:

ubuntu - 单元服务未正确加载 : Exec format error. 在 ubuntu18.04 创建 .net 服务

bash - 在 Ubuntu 16.04 中搞砸了 PATH 环境变量

C编程: How do I play audio files?

audio - WAV-MIDI 匹配

ffmpeg m3u8 正确编码

node.js - 如何使用 Node fluent-ffmpeg 向视频添加音频?

android - 无法在 Ubuntu 12.04 上连接 Android 版本 2.3.6 手机

c - sys/types.h 位于何处?

javascript - Web 音频 api - 缓冲音高上的 LFO

ffmpeg - 如何在ffmpeg中获取图片缓冲区数据?