對于仍有聆聽本地音樂文件需求的人來說,音頻格式的選擇是一個重要問題。無損格式雖好,但畢竟對存儲空間和流量有一定壓力;在移動端聆聽時,轉(zhuǎn)制一份有損壓縮副本還是更實用的選擇。
那該選擇什么格式呢?
經(jīng)歷過 iPod 時代的人可能記得蘋果曾宣傳過 iTunes Plus AAC 的概念。這原本是 iTunes 商店在 2007 年上線的音頻文件格式,新聞稿中宣稱是一種「高品質(zhì) 256 kbps AAC 編碼」。這后來也成為 iTunes 導入音樂時的一個轉(zhuǎn)碼選項,至今可以在 macOS 上的 Music app 中看到,其參數(shù)標注為 128 kbps (mono)/256 kbps (stereo), 44.100 KHz, VBR。
Music app 設置中對 iTunes Plus AAC 的提述
iTunes Plus AAC 格式在網(wǎng)上評價很好,除了具有 AAC 編碼的小體積、高音質(zhì)特點外,在一些盲測中也被認為效果優(yōu)于其他 AAC 編碼器。這部分要歸功于它采用的 CVBR(constrained variable bitrate)策略,即將平均比特率約束在一個定值(256 kbps),但允許(有時相當激進的)浮動,從而更好平衡了體積和音質(zhì)。加上受到蘋果設備的良好支持,應當說是一種比較理想的壓縮格式。
但顯然,如果每次轉(zhuǎn)換都要用到 iTunes 或其繼任者 Music app,未免太過麻煩;這些軟件本身支持的無損格式也有限,基本上只有 WAV 和蘋果的私有格式 ALAC。如何將這個過程自動化呢?
實際上,iTunes 和 Music app 的轉(zhuǎn)換功能只是調(diào)用了蘋果系統(tǒng)框架 Audio Toolbox 提供的轉(zhuǎn)碼能力,其他軟件也可以調(diào)用:
在 macOS 上,內(nèi)置的命令行工具
afconvert(1)
包裝了 Audio Toolbox 的轉(zhuǎn)碼功能,也是 Apple Digital Masters 文檔中推薦的轉(zhuǎn)碼工具;在 Windows 上,開源命令行工具
qaac
可以包裝從 iTunes 中提取的 Audio Toolbox 支持庫,提供與 iTunes 等效的轉(zhuǎn)換。
將它們做成腳本或配合其他自動化工具使用,就能方便地批量獲得 iTunes Plus AAC 格式輸出。下文將具體說明。
本文所指的 iTunes Plus AAC,更準確地說,只是采用蘋果推薦的編碼器及設置參數(shù)所得的 AAC 文件,質(zhì)量上并不能與 iTunes 商店銷售的那種母帶轉(zhuǎn)制、且經(jīng)過響度均衡等優(yōu)化的版本相比;
后文步驟假定用戶對終端操作有基礎了解;
由于筆者對音頻格式及編碼的了解有限,文中描述可能存在錯漏或不符合最佳實踐,歡迎指正。
如上所述,用 macOS 內(nèi)置的afconvert(1)
即可創(chuàng)建 iTunes Plus AAC。根據(jù) Apple Digital Masters 文檔中的說明,應當使用如下參數(shù):
afconvert input.wav \ -d aac \ -f m4af \ -u pgcm 2 \ -b 256000 \ -q 127 \ -s 2 \ output.m4a
上述參數(shù)依次設置:
輸出的編碼格式(
-d
)為 AAC;文件格式(
-f
)為 Apple MPEG-4 Audio;Audio Converter 自定義屬性(
-u
)pgcm=2
(無文檔說明,可能與編碼器行為有關);比特率(
-b
)為 256 kbps;質(zhì)量(
-q
)為最高(取值范圍 0-127);以及比特率分配策略(
-s
)為 CVBR(見前文說明)。
(注:原文檔實際上使用了兩步轉(zhuǎn)換:首先轉(zhuǎn)為 CAF 格式并執(zhí)行響度檢查,然后再生成經(jīng)響度均一化處理的 AAC。(pp. 5, 7.) 但該文檔的場景是從母帶文件轉(zhuǎn)碼,而現(xiàn)實中個人用戶大多接觸的無損文件已經(jīng)過前期處理,再做此步驟意義不大,故略去。)
不過,afconvert
只支持 WAV、ALAC 或 AIFF 格式輸入,而現(xiàn)實中更為常見的無損格式是 FLAC,故還需通過ffmpeg
做一次預處理:
ffmpeg -i input.flac -ac 2 -ar 44100 temp.wav && \ afconvert -f m4af -d aac -u pgcm 2 -b 256000 -q 127 -s 2 temp.wav output.m4a rm temp.wav
這里,首先用ffmpeg
將源文件轉(zhuǎn)為雙聲道、44.1Khz 的臨時 WAV 文件,再交給afconvert
處理,最后刪除臨時文件。
(注:盡管ffmpeg
支持通過-c:a aac_at
選項來調(diào)用 Audio Toolbox,理論上可以一步到位地生成 iTunes Plus AAC;但根據(jù)筆者測試,這樣生成的文件在質(zhì)量上與afconvert
輸出的版本差異較大。因此,本文仍用afconvert
執(zhí)行 AAC 輸出。)
我們可以用下圖所示的快捷指令自動化上述過程:
https://www.icloud.com/shortcuts/1a193061f2b74e9ca546415b7de25088
使用該快捷指令之前,需要:
在
FFMPEG_PATH
變量上方的文本框中填寫正確的ffmpeg
安裝路徑。這里預填的是 M 系列處理器機型上通過 Homebrew 安裝的默認路徑,具體可以通過在終端運行which ffmpeg
來確認;以及在系統(tǒng)設置的「隱私與安全性」中,將
/System/Library/CoreServices/Finder.app
加入「完全磁盤訪問權限」。
此后,直接運行該快捷指令并選擇輸入文件,或者選中文件后,通過右鍵菜單的 Quick Action > Create iTunes AAC 即可快速創(chuàng)建 AAC 版本。
Windows
如上所述,Windows 系統(tǒng)可以通過qaac
轉(zhuǎn)碼到 iTunes Plus AAC,但前提是安裝了蘋果的 AAC 編碼器。一般來說,這只有通過安裝 iTunes 或 iCloud 才能獲得(僅限獨立安裝版)。但很多人并不想安裝這兩個軟件,因此更「綠色」的方法是從 iTunes 安裝包中提取相應支持文件供qaac
調(diào)用。具體步驟如下。
1. 從蘋果官網(wǎng)下載最新版的 iTunes 安裝包,得到一個iTunes64Setup.exe
;
2. 下載 qaac 作者提供的提取腳本makeportable2.cmd
,將其放在iTunes64Setup.exe
同一目錄下運行(可能有安全警告,忽略即可)。這將生成一個包含蘋果編碼器支持庫 DLL 的QTfiles64
文件夾;
https://github.com/nu774/makeportable/blob/master/makeportable2.cmd
3. 從qaac
的發(fā)布頁面下載最新版并解壓,其中包含x86
和x64
兩個版本的子目錄。因為今年是 2025 年,以下只考慮 x64 版本;
https://github.com/nu774/qaac/releases
4. 將第 2 步所得的QTfiles64
文件夾放至x64
目錄中,即與qaac64.exe
同級;
5. 為了能處理 FLAC 輸入,再從 FLAC 的發(fā)布頁面下載最新版(flac-x.y.z-win.zip
),將解壓所得的libFLAC.dll
同樣放至x64
目錄中,與qaac64.exe
同級。
https://github.com/xiph/flac/releases
經(jīng)過上述步驟,qaac64.exe
所在目錄結(jié)構應如下所示:
. ├── libFLAC.dll ├── libsoxconvolver64.dll ├── libsoxr64.dll ├── qaac64.exe ├── QTfiles64 │ ├── ... │ ├── ASL.dll │ ├── concrt140.dll │ ├── CoreAudioToolbox.dll │ ├── CoreFoundation.dll │ ├── icudt62.dll │ └── ... └── refalac64.exe
這就完成了準備工作。
根據(jù)qaac
的文檔,當使用如下方式調(diào)用時,輸出結(jié)果等效于 iTunes Plus (256k):
qaac64.exe -v256 input.flac
為了使用更加方便,我們可以制作一個批處理腳本來自動化:
@echo off setlocal set "QAAC_OPTIONS=-v256" set "QAAC_PATH=%ProgramFiles%\qaac\qaac64.exe" if not exist "%QAAC_PATH%" ( echo ERROR: Could not find qaac64.exe at the specified path. goto :end ) if "%~1"=="" ( echo No files were provided. goto :end ) for %%F in (%*) do ( echo Processing: "%%~nxF" "%QAAC_PATH%" %QAAC_OPTIONS% -o "%%~dpnF.m4a" "%%~F" echo. ) echo All done. :end echo. echo Press any key to exit... pause >nul
上述腳本假定你將之前步驟整理好的qaac
安裝文件放在系統(tǒng)盤的Program Files\qaac
文件夾下,你也可以將QAAC_PATH
變量修改為你實際使用的其他安裝路徑。
將以上代碼保存為makeitunesaac.bat
。此后,將要處理的文件拖至該腳本圖標上,即可在同目錄下獲取轉(zhuǎn)碼好的 AAC 版本。
效果檢查
我們可以使用 MediaInfo 檢查通過afconvert
和qaac
生成的 AAC 文件與 iTunes(或 Music app)生成的版本是否一致:
mediainfo output_itunes.m4a output_afconvert.m4a output_qaac.m4a
對于我所用的測試音樂,三者的輸出完全一致:
... Format : AAC LC Format/Info : Advanced Audio Codec Low Complexity Codec ID : mp4a-40-2 Duration : 4 min 1 s Bit rate mode : Variable Bit rate : 256 kb/s Maximum bit rate : 341 kb/s Channel(s) : 2 channels Channel layout : L R Sampling rate : 44.1 kHz Frame rate : 43.066 FPS (1024 SPF) Compression mode : Lossy Stream size : 7.68 MiB (99%) ...
這表明afconvert
和qaac
確實能獲得 iTunes(或 Music app)基本等效的輸出。還能看到,盡管整體比特率維持在 256 kbps,但峰值比特率達到了 341 kbps,表明 CVBR 在發(fā)揮作用。
再觀察頻譜,afconvert
和qaac
輸出的版本相比于 320 kbps MP3(LIME 編碼)保留了更多無損版本的細節(jié),并且體積小了約 20%,應當說是比較理想的。
https://sspai.com/post/101340?utm_source=wechat&utm_medium=social
作者:PlatyHsu
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.