把 11 場現場錄音壓成手機歌單:我用 opus 轉檔的取捨

这篇内容暂时只有 繁體中文 版本,以下是原文。

上個月在整理一批現場錄音,來源是 11 場演出、總共 143 首曲目,多數是 24bit/48kHz 的 WAV,加起來約 38GB。我想把它們塞進手機的離線歌單,通勤時聽。直接同步原始檔不現實,所以做了轉檔,但這次的目標不是「越小越好」,而是「在手機上聽不出差別」。

做法很簡單,用 ffmpeg 批次轉成 opus,位元率固定在 128k:

for f in *.wav; do
  ffmpeg -i "$f" -c:a libopus -b:a 128k -vbr on \
    -metadata title="${f%.wav}" "${f%.wav}.opus"
done

轉完約 1.4GB,比原始檔小了一個量級。接著把 tag 補齊,因為檔名本身只帶場次和曲序,專輯欄位要寫成場次名稱,才能在播放器裡按場次分組:

for f in *.opus; do
  ffmpeg -i "$f" -c copy -metadata album="Live 2023-11" \
    -metadata artist="現場實錄" "tagged_$f"
done

為什麼選 opus 而不是 mp3 或 aac:opus 在同樣位元率下對中高頻的處理我比較放心,尤其現場錄音的觀眾聲和殘響多,128k 的 mp3 在鈸聲和掌聲密集處會出現明顯的「沙沙」感,opus 同樣位元率下我聽不太出來。代價是相容性:老一點的車機和部分播放器不認 opus,我手機端用的是支援 opus 的播放器,所以沒問題,但這批檔案不能直接丟給任何裝置。

失效的地方有兩個。第一,我把 -vbr on 留在批次指令裡,結果少數動態大的曲目實際位元率會衝高,整批大小比預估多了約 8%,不是很嚴重,但如果按固定容量規劃就會失準。第二,-metadata 那步我原本用 -c copy 直接覆蓋原檔,結果有一次中斷,檔案只剩半個,後來改成先輸出到 tagged_ 前綴,確認無誤再覆蓋。這是我自己踩的坑,跟編碼格式無關,純粹是批次操作沒有留退路。

還有一個邊界:如果來源是 16bit/44.1kHz 的 CD 規格,128k 的 opus 基本夠用;但這次有幾場是 24bit 的高動態錄音,轉完之後在安靜段落我隱約聽到一點底噪被放大的感覺,不確定是來源本身還是編碼造成,我沒有做 AB 對照,所以不下結論。

想問的是:你們在手機離線歌單上,會不會因為裝置相容性而退回 mp3 或 aac,還是寧願換播放器?

0
赞同度 100% · 0 条评论 · 3 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。