
我使用的是 macOS 10.3.6 (High Sierra),不久前我有一套 4 CD 盒裝的一些音樂,將曲目翻錄為 MP3,然後將文件簡單地存儲在我的系統上。我必須手動標記並添加元資料到 100 多首曲目中的每一個(不要問),而且我不久前也擺脫了原始 CD(也不要問),所以我不能輕易地重新翻錄他們。
所以問題就在這裡:顯然我當時使用的 MP3 工具在每首曲目的開頭添加了一小部分秒的「流行音樂」。當時我沒有意識到——或者說沒有註意——這 100 多首曲目中的每一首都在曲目的開頭有令人討厭的流行音樂。
我在 Stack Overflow 上讀到了這個帖子,「使用LAME時開始時有點擊聲雖然建議很可靠——解釋了有時 LAME 可能會意外地將音訊檔案的標頭編碼為純音訊——但現實是所提出的解決方案將迫使我透過類似的方式串流傳輸已經編碼的 MP3fseek
然後重新編碼 MP3(又稱:轉碼),這遠非理想。
那麼,有什麼方法可以將這些已編碼的 MP3 削減約 1/8 秒,以消除「爆音」並避免對 MP3 進行轉碼?
我正在專門尋找一個相對簡單的基於 macOS 的解決方案,最多只需要透過 Homebrew 安裝一個新工具(如果需要)。不需要完整的腳本,但至少需要一個工具和設定提示來為我指明正確的方向。
答案1
好的,我設法使用 FFmpeg 的魔力解決了這個問題(我已經透過 Homebrew 在 macOS 上安裝了它)。具體來說-ss
(又稱:尋找)參數再加上copy
應用於音訊串流的選項就像一個魅力!該命令可以簡化為:
ffmpeg -ss 0.125 -i "input.mp3" -acodec copy "output.mp3"
-ss
只需將設為0.125
,然後簡單地用一copy
組指定輸入和輸出-acodec
即可。
而且,正如問題中所解釋的,在我的例子中,我有100 多個文件需要處理,因此我創建了一個簡單的Bash 腳本,它將找到所有應修剪1/8 開頭音頻的MP3,並將它們轉儲到子目錄中mp3/
。希望這可以幫助遇到類似情況的人!
find -E "path/to/audio/files" -type f -iregex ".*\.(MP3)$" |\
while read full_audio_filepath
do
# Break up the full audio filepath stuff into different directory and filename components.
audio_dirname=$(dirname "${full_audio_filepath}");
audio_basename=$(basename "${full_audio_filepath}");
audio_filename="${audio_basename%.*}";
# Set the MP3 directory.
mp3_dirpath="${audio_dirname}/mp3";
mp3_filepath="${mp3_dirpath}/${audio_filename}.mp3";
# Create the child MP3 directory.
mkdir -p "${mp3_dirpath}";
# And here is where the magic happens.
ffmpeg -y -v quiet -ss 0.125 -i "$full_audio_filepath" -acodec copy "$mp3_filepath" < /dev/null;
done