宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

如何用命令行將音樂轉碼到iTunes Plus AAC

2025年08月04日 首頁 » 熱門科技

對於仍有聆聽本地音樂文件需求的人來說,音頻格式的選擇是一個重要問題。無損格式雖好,但畢竟對存儲空間和流量有一定壓力;在移動端聆聽時,轉制一份有損壓縮副本還是更實用的選擇。

那該選擇什麼格式呢?

經歷過 iPod 時代的人可能記得蘋果曾宣傳過 iTunes Plus AAC 的概念。這原本是 iTunes 商店在 2007 年上線的音頻文件格式,新聞稿中宣稱是一種「高品質 256 kbps AAC 編碼」。這後來也成為 iTunes 導入音樂時的一個轉碼選項,至今可以在 macOS 上的 Music app 中看到,其參數標註為 128 kbps (mono)/256 kbps (stereo), 44.100 KHz, VBR。

 

如何用命令行將音樂轉碼到iTunes Plus AAC

 

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 自定義屬性(-upgcm=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 輸出。)

我們可以用下圖所示的快捷指令自動化上述過程:

 

如何用命令行將音樂轉碼到iTunes Plus AAC

 

https://www.icloud.com/shortcuts/1a193061f2b74e9ca546415b7de25088

使用該快捷指令之前,需要:

 

  1. FFMPEG_PATH變量上方的文本框中填寫正確的ffmpeg安裝路徑。這裡預填的是 M 系列處理器機型上通過 Homebrew 安裝的默認路徑,具體可以通過在終端運行which ffmpeg來確認;以及

     

  2. 在系統設置的「隱私與安全性」中,將/System/Library/CoreServices/Finder.app加入「完全磁盤訪問權限」。

     

此後,直接運行該快捷指令並選擇輸入文件,或者選中文件後,通過右鍵菜單的 Quick Action > Create iTunes AAC 即可快速創建 AAC 版本。

 

如何用命令行將音樂轉碼到iTunes Plus 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的發布頁面下載最新版並解壓,其中包含x86x64兩個版本的子目錄。因為今年是 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 版本。

 

如何用命令行將音樂轉碼到iTunes Plus AAC

 

效果檢查

我們可以使用 MediaInfo 檢查通過afconvertqaac生成的 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%) ...

這表明afconvertqaac確實能獲得 iTunes(或 Music app)基本等效的輸出。還能看到,儘管整體比特率維持在 256 kbps,但峰值比特率達到了 341 kbps,表明 CVBR 在發揮作用。

再觀察頻譜,afconvertqaac輸出的版本相比於 320 kbps MP3(LIME 編碼)保留了更多無損版本的細節,並且體積小了約 20%,應當說是比較理想的。

 

如何用命令行將音樂轉碼到iTunes Plus AAC


 

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2025 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新