2012-08-06 105 views
20

我有MP3文件,最後有時會有沉默。我想自動刪除這個沉默。從我可以說,這是「完美」的沉默(0幅),而不是背景噪音。內容的長度和靜音各不相同。如何以編程方式從MP3中刪除靜音?

我發現了關於cropping to the first 30 secondscropping 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上。

+0

您真的只對完美的沉默感興趣嗎?這是非常罕見的,從24位大師抖動和有損壓縮。在任何情況下,FFMPEG都是要走的路。 – Brad 2012-08-06 19:06:54

+0

@Brad我們基本上是在解決我們使用的錄音服務中的錯誤。當問題發生時,它似乎總是給這個「完美」的沉默。 – 2012-08-06 19:08:29

+0

您可能會對['silencedetect' FFmpeg音頻過濾器](http://ffmpeg.org/ffmpeg.html#silencedetect)感興趣。 – blahdiblah 2012-08-06 19:21:40

回答

5

看一看的silencedetect FFmpeg audio filter

檢測沉默的音頻流。

此過濾器在檢測到輸入音量小於或等於噪聲容限值的時間大於或等於最小檢測到的噪聲持續時間時記錄消息。

打印的時間和持續時間用秒錶示。

它有參數來調整安靜的東西必須被視爲沉默,沉默需要注意多長時間。

+2

的'silenceremove'過濾器記錄在這裏https://ffmpeg.org/ffmpeg-filters.html#toc-silenceremove這個答案可能會證明是有用的太:http://stackoverflow.com/a/29411973/1717535 – 2017-02-23 09:54:14

32
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

+0

解決方案的工作,但你的解釋是錯誤的。原作者表示'修剪沉默(任何小於1%的音量),直到我們遇到持續時間超過0.1秒的聲音。'。 – duleshi 2015-10-16 08:22:52

7

你可能正在尋找一個無損的解決方案,即一個沒有不需要重新編碼(從而降低質量)。

我相信mp3splt是你在找什麼。它可以從命令行和GUI使用。

sudo aptitude install mp3splt mp3splt-gtk 

應該可以在Debian和Ubuntu上運行。

從手冊頁:

您也可以嘗試拆分文件與靜音檢測(見-s選項),使用靜音檢測(見-r選項)裝飾的文件,或通過自動固定時間長度(請參閱-t選項)

相關問題