對於仍有聆聽本地音樂文件需求的人來說,音頻格式的選擇是一個重要問題。無損格式雖好,但畢竟對存儲空間和流量有一定壓力;在移動端聆聽時,轉制一份有損壓縮副本還是更實用的選擇。
那該選擇什麼格式呢?
經歷過 iPod 時代的人可能記得蘋果曾宣傳過 iTunes Plus AAC 的概念。這原本是 iTunes 商店在 2007 年上線的音頻文件格式,新聞稿中宣稱是一種「高品質 256 kbps AAC 編碼」。這後來也成為 iTunes 導入音樂時的一個轉碼選項,至今可以在 macOS 上的 Music app 中看到,其參數標註為 128 kbps (mono)/256 kbps (stereo), 44.100 KHz, VBR。

Music app 設置中對 iTunes Plus AAC 的提述
iTunes Plus AAC 格式在網上評價很好,除了具有 AAC 編碼的小體積、高音質特點外,在一些盲測中也被認為效果優於其他 AAC 編碼器。這部分要歸功於它採用的 CVBR(constrained variable bitrate)策略,即將平均比特率約束在一個定值(256 kbps),但允許(有時相當激進的)浮動,從而更好平衡了體積和音質。加上受到蘋果設備的良好支持,應當說是一種比較理想的壓縮格式。
但顯然,如果每次轉換都要用到 iTunes 或其繼任者 Music app,未免太過麻煩;這些軟體本身支持的無損格式也有限,基本上只有 WAV 和蘋果的私有格式 ALAC。如何將這個過程自動化呢?
實際上,iTunes 和 Music app 的轉換功能只是調用了蘋果系統框架 Audio Toolbox 提供的轉碼能力,其他軟體也可以調用:
-
在 macOS 上,內置的命令行工具
afconvert(1)
包裝了 Audio Toolbox 的轉碼功能,也是 Apple Digital Masters 文檔中推薦的轉碼工具; -
在 Windows 上,開源命令行工具
qaac
可以包裝從 iTunes 中提取的 Audio Toolbox 支持庫,提供與 iTunes 等效的轉換。
將它們做成腳本或配合其他自動化工具使用,就能方便地批量獲得 iTunes Plus AAC 格式輸出。下文將具體說明。
-
本文所指的 iTunes Plus AAC,更準確地說,只是採用蘋果推薦的編碼器及設置參數所得的 AAC 文件,質量上並不能與 iTunes 商店銷售的那種母帶轉制、且經過響度均衡等優化的版本相比;
-
後文步驟假定用戶對終端操作有基礎了解;
-
由於筆者對音頻格式及編碼的了解有限,文中描述可能存在錯漏或不符合最佳實踐,歡迎指正。
macOS
如上所述,用 macOS 內置的afconvert(1)
即可創建 iTunes Plus AAC。根據 Apple Digital Masters 文檔中的說明,應當使用如下參數:
afconvert input.wav -d aac -f m4af -u pgcm 2 -b 256000 -q 127 -s 2 output.m4a
上述參數依次設置:
-
輸出的編碼格式(
-d
)為 AAC; -
文件格式(
-f
)為 Apple MPEG-4 Audio; -
Audio Converter 自定義屬性(
-u
)pgcm=2
(無文檔說明,可能與編碼器行為有關); -
比特率(
-b
)為 256 kbps; -
質量(
-q
)為最高(取值範圍 0-127);以及 -
比特率分配策略(
-s
)為 CVBR(見前文說明)。
(註:原文檔實際上使用了兩步轉換:首先轉為 CAF 格式並執行響度檢查,然後再生成經響度均一化處理的 AAC。(pp. 5, 7.) 但該文檔的場景是從母帶文件轉碼,而現實中個人用戶大多接觸的無損文件已經過前期處理,再做此步驟意義不大,故略去。)
不過,afconvert
只支持 WAV、ALAC 或 AIFF 格式輸入,而現實中更為常見的無損格式是 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
將源文件轉為雙聲道、44.1Khz 的臨時 WAV 文件,再交給afconvert
處理,最後刪除臨時文件。
(注:儘管ffmpeg
支持通過-c:a aac_at
選項來調用 Audio Toolbox,理論上可以一步到位地生成 iTunes Plus AAC;但根據筆者測試,這樣生成的文件在質量上與afconvert
輸出的版本差異較大。因此,本文仍用afconvert
執行 AAC 輸出。)
我們可以用下圖所示的快捷指令自動化上述過程:

https://www.icloud.com/shortcuts/1a193061f2b74e9ca546415b7de25088
使用該快捷指令之前,需要:
-
在
FFMPEG_PATH
變量上方的文本框中填寫正確的ffmpeg
安裝路徑。這裡預填的是 M 系列處理器機型上通過 Homebrew 安裝的默認路徑,具體可以通過在終端運行which ffmpeg
來確認;以及 -
在系統設置的「隱私與安全性」中,將
/System/Library/CoreServices/Finder.app
加入「完全磁盤訪問權限」。
此後,直接運行該快捷指令並選擇輸入文件,或者選中文件後,通過右鍵菜單的 Quick Action > Create iTunes AAC 即可快速創建 AAC 版本。

Windows
如上所述,Windows 系統可以通過qaac
轉碼到 iTunes Plus AAC,但前提是安裝了蘋果的 AAC 編碼器。一般來說,這隻有通過安裝 iTunes 或 iCloud 才能獲得(僅限獨立安裝版)。但很多人並不想安裝這兩個軟體,因此更「綠色」的方法是從 iTunes 安裝包中提取相應支持文件供qaac
調用。具體步驟如下。
1. 從蘋果官網下載最新版的 iTunes 安裝包,得到一個iTunes64Setup.exe
;
2. 下載 qaac 作者提供的提取腳本makeportable2.cmd
,將其放在iTunes64Setup.exe
同一目錄下運行(可能有安全警告,忽略即可)。這將生成一個包含蘋果編碼器支持庫 DLL 的QTfiles64
文件夾;
https://github.com/nu774/makeportable/blob/master/makeportable2.cmd
3. 從qaac
的發布頁面下載最新版並解壓,其中包含x86
和x64
兩個版本的子目錄。因為今年是 2025 年,以下只考慮 x64 版本;
https://github.com/nu774/qaac/releases
4. 將第 2 步所得的QTfiles64
文件夾放至x64
目錄中,即與qaac64.exe
同級;
5. 為了能處理 FLAC 輸入,再從 FLAC 的發布頁面下載最新版(flac-x.y.z-win.zip
),將解壓所得的libFLAC.dll
同樣放至x64
目錄中,與qaac64.exe
同級。
https://github.com/xiph/flac/releases
經過上述步驟,qaac64.exe
所在目錄結構應如下所示:
. ├── libFLAC.dll ├── libsoxconvolver64.dll ├── libsoxr64.dll ├── qaac64.exe ├── QTfiles64 │ ├── ... │ ├── ASL.dll │ ├── concrt140.dll │ ├── CoreAudioToolbox.dll │ ├── CoreFoundation.dll │ ├── icudt62.dll │ └── ... └── refalac64.exe
這就完成了準備工作。
根據qaac
的文檔,當使用如下方式調用時,輸出結果等效於 iTunes Plus (256k):
qaac64.exe -v256 input.flac
為了使用更加方便,我們可以製作一個批處理腳本來自動化:
@echo off setlocal set "QAAC_OPTIONS=-v256" set "QAAC_PATH=%ProgramFiles%qaacqaac64.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
安裝文件放在系統盤的Program Filesqaac
文件夾下,你也可以將QAAC_PATH
變量修改為你實際使用的其他安裝路徑。
將以上代碼保存為makeitunesaac.bat
。此後,將要處理的文件拖至該腳本圖標上,即可在同目錄下獲取轉碼好的 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 在發揮作用。
再觀察頻譜,afconvert
和qaac
輸出的版本相比於 320 kbps MP3(LIME 編碼)保留了更多無損版本的細節,並且體積小了約 20%,應當說是比較理想的。
