Apple 高品質 AAC / ALAC 編碼器,與 qaac / refalac 使用教學

qaac 是以 Apple 編碼器為基礎的 AAC/ALAC CLI介面編碼工具。

AAC 的壓縮率勝過 MP3,換言之兩者在相同 bitrate 下,AAC 音質勝過 MP3,
在高 bitrate 下相音質差不大,但 bitrate 越低越明顯。

qaac介紹AAC介紹

----------------------------------------------------------------

Apple AAC 編碼器支援 AAC 規格:

MPEG-4 AAC LC 低複雜度規格(Low Complexity)
MPEG-4 AAC HE 高效率規格(High Efficiency)

相容性: LC-AAC > HE-AAC > HE-AAC v2
壓縮率: HE-AAC v2 > HE-AAC > LC-AAC

44.1 kHz, 16 bit (雙聲道):

Apple 高品質 AAC / ALAC 編碼器,與 qaac / refalac 使用教學

x 軸為音質; y 軸為位元率

AAC Profile

: aacPlus v1 / HE-AAC
: aacPlus v2 / HE-AAC v2
: AAC / LC-AAC (通常沒有標示 Profile 的 AAC 是指 LC-AAC)

http://blog.csdn.net/leixiaohua1020/article/details/11971419

----------------------------------------------------------------

本文索引

#1F: 下載、安裝/免安裝方法、基本參數設定
#2F: GUI (圖形介面) 工具介面介紹
#3F: CLI (命令列介面) 使用教學
#4F: 自動處裡 BAT 範例

----------------------------------------------------------------

下載

qaac 開發者網站
Apple iTunes or QuickTime

----------------------------------------------------------------

安裝與免安裝方法

用 7zip 解壓縮 QuickTime/iTunes 安裝包
找到 AppleApplicationSupport.msi

1. 安裝方法:

只需安裝 Apple Application Support 即可
即 AppleApplicationSupport.msi

2. 免安裝方法:

7-zip 開啟/解壓縮 AppleApplicationSupport.msi

找出下列 dll 檔 (或是從此處下載)

DLLs:
AppleApplicationSupport_ASL.dll
AppleApplicationSupport_CoreAudioToolbox.dll
AppleApplicationSupport_CoreFoundation.dll
AppleApplicationSupport_icudt*.dll
AppleApplicationSupport_libdispatch.dll
AppleApplicationSupport_libicuin.dll
AppleApplicationSupport_libicuuc.dll
AppleApplicationSupport_objc.dll
AppleApplicationSupport_pthreadVC2.dll

請將以上的 .dll 檔全部重新命名,刪除 "AppleApplicationSupport_" 這個字串
ASL.dll
CoreAudioToolbox.dll
CoreFoundation.dll
icudt*.dll
libdispatch.dll
libicuin.dll
libicuuc.dll
objc.dll
pthreadVC2.dll

將以上這些 dll 放到 qaac.exe 所在目錄


----------------------------------------------------------------

AAC Bitrate Control

支援的位元率控制模式:
‧ABR mode / bitrate
‧True VBR mode / quality [0-127]
‧Constrained VBR mode / bitrate
‧CBR mode / bitrate

LC 預設值: TVBR, q91
HE 預設值: CVBR, v0 (自動)

各種控制模式的 bitrate 使用效率比較:
True VBR > Constrained VBR > ABR > CBR

推薦設定
True VBR: 推薦 80 或更高,109 為佳

※ True VBR 是依照指定品質分配 bitrate,無法直接控制 bitrate
※ TVBR 刻度: 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 100, 109, 118, 127
※ True VBR 不支援 HE-AAC 輸出

如果需要控制 bitrate,推薦使用 Constrained VBR 模式

越複雜的音訊需要越高的 Bitrate,例如音樂 CD 建議轉為 256kbps 的 AAC
請依實際情況自行調整,可以參考以下的建議值

雙聲道 Bitrate 建議值 (適用於大多數情況):
LC-AAC: 使用範圍 >= 128 Kbps
HE-AAC: 使用範圍 [48 - 80] Kbps

計算用於多聲道的位元率: (bitrate for stereo) x (channels / 2)
則 LC-AAC 5.1 (6 聲道) 建議位元率 >= 384kbps
128kbps * (6 / 2) = 384 kbps

----------------------------------------------------------------

DSP 參數設定選項 (qaac / refalac)

Lowpass filter (--lowpass)
Sample rate conversion (--rate)
Normalization (--normalize)
Gain adjustment (--gain)
Channel reordering (--chanmap)
Matrix mixer (--matrix-preset, --matrix-file)
Delay (--delay)
Quantization (-b, --bits-per-sample)
Dynamic range compressor (--drc)

詳細
2014-01-24 9:44 發佈
使用 CLI 介面必須要會用基本的 CMD

CLI 使用說明: 這裡
CMD 入門教學: 這裡

----------------------------------------------------------------

使用 qaac/refalac 重新編碼音訊

注意:Apple AAC 編碼器 的 輸出容器 只能是 MPEG-4 Audio (*.M4A)
請不要使用其他副檔名

ex. LC-AAC
qaac -q 2 --tvbr 109 input.flac -o output.m4a

ex. HE-AAC (--he)
qaac --he -q 2 --cvbr 64 input.flac -o output.m4a

ex. ALAC
refalac input.flac -o output.alac

ex. ALAC (使用 qaac.exe -A or --alac)
qaac --alac input.flac -o output.alac


如果遇到解碼失敗問題可以先用 FFmpeg 解碼輸入源
再傳給 qaac/refalac 進行編碼

ffmpeg -i <輸入> -vn -async 1 [參數] -f wav - | [qaac/refalac] [參數] -o <輸出> -


ex. pipe ffmpeg to qaac/refalac
ffmpeg -i input.mkv -vn -async 1 -f wav - | qaac -q 2 --tvbr 109 --ignorelength -o output.m4a -


ffmpeg 的輸出 與 qaac/refalac 的的輸入 以 "-" 取代

-async 1
如果音訊帶有延遲,會在輸出音訊前端補上等長的靜音區段
使輸出音訊檔與原檔影音同步

--ignorelength
可以避免輸入音訊過長導致轉換不完整

FFmpeg 使用請參考這裡

----------------------------------------------------------------

使用 qaac/refalac 解碼音訊為 PCM (WAV封裝)

refalac -D input.flac -o output.wav


遇到不支援輸入或是錯誤,可以先用 FFmpeg 抽出並解碼音訊,再傳給 qaac/refalac 處裡

ffmpeg -i input.mkv -vn -f wav - | refalac -D --ignorelength -o output.wav -


----------------------------------------------------------------

pipe qaac/refalac to 其他音訊編碼器

通常只需使用 FFmpeg Decoding & Piping
ex. pipe ffmpeg ot lame
ffmpeg -i input.flac -vn -f wav - | lame - -o foo.mp3


如果需要使用 qaac/refalac 只有的一些功能
如: --matrix-preset / --matrix-file

步驟1. 首先,在命令提示字元視窗執行 qaac (or refalac):
refalac -D input.flac -o \\.\pipe\foo.wav
or
ffmpeg -i input.mkv -ac 6 -vn -f wav - | refalac -D --ignorelength -o \\.\pipe\foo.wav -


步驟2. qaac/refalac 準備就緒後,
在另一個命令提示字元視窗,執行一些客戶端 (ex. lame):
lame \\.\pipe\foo.wav -o foo.mp3


----------------------------------------------------------------

加入自訂 matrix mixer

ex. downmixing 5.1-Ch to Dolby Pro Logic II

雙聲道,播放時可以用支援 DPL2 的解碼器還原為 5.0/5.1



矩陣:
FL = 1*FL + 0*FR + 0.7071*FC + 0*LFE - 0.8718j*SL - 0.4899j*SR
FR = 0*FL + 1*FR + 0.7071*FC + 0*LFE + 0.4899j*SL + 0.8718j*SR

矩陣(儲存為TXT檔): dpl2.txt
1 0 0.7071 0 -0.8718j -0.4899j
0 1 0.7071 0 0.4899j 0.8718j

qaac預設會將矩陣正規化,無須手動
輸出音量會變小,你可以使用 --normalize 來得到正常音量

在 qaac/refalac目錄 建立 matrix 資料夾
然後將 dpl2.txt 放在此資料夾

附加檔案: MatrixTXT-6ChTo2Ch.zip (給 qaac/refalac 用的 TXT檔矩陣)

在 qaac 中使用 --matrix-preset=<檔名> 或 --matrix-file=<檔名>

qaac/refalac 命令:
qaac --matrix-preset=dpl2 -q 2 --tvbr 109  --normalize input.flac -o output.m4a

dpl2.txt 是 Downmix 5.1 Ch to DPL2
如果輸入聲道數大於 5.1 Ch,或是解碼失敗等問題
可以先用 FFmpeg 處理,再傳給 qaac/refalac

ffmpeg -i input.mkv -vn -async 1 -ac 6 -f wav - | qaac --matrix-preset=dpl2 -q 2 --tvbr 109 --ignorelength -o output.m4a -
關鍵參數: --matrix-preset or --matrix-file

如果你要編碼其他格式 (ex. MP3)
可以 pipe qaac/refalac to 其他 AudioEccoder
官網範例


參考資料
Dolby Pro Logic wiki
qaac site
BAT應用(一鍵自動處理)

ffmpeg.exe 與 qaac.exe 放在 bat所在目錄\coders

將某路徑下所有的 FLAC、APE、MKA 音訊檔重新編碼為 AAC
@echo off & cd/d "%~dp0"
setlocal EnableDelayedExpansion
path=%path%;%~dp0\coders
set indir=D:\Music
set outdir=D:\Output
for /r "%indir%" %%i in (*.flac;*.ape;*.mka) do (
ffmpeg -hide_banner -i "%%~i" -vn -ac 2 -y -f wav - | qaac --tvbr 80 --quality 2 --ignorelength -o "%outdir%\%%~ni.m4a" -
)
pause

將某路徑下所有的 MKV 的 音訊軌重新編碼為 AAC
@echo off & cd/d "%~dp0"
setlocal EnableDelayedExpansion
path=%path%;%~dp0\coders
set indir=E:\Videos
set outdir=D:\Output
for /r "%indir%" %%i in (*.mkv) do (
ffmpeg -hide_banner -i "%%~i" 2>map.txt
set sub=
for /f "delims=" %%a in ('type map.txt^|findstr /i "Stream"') do (
for /f "tokens=3 delims= " %%b in ("%%a") do if "%%~b"=="Subtitle:" set sub=-map 0:s
)
ffmpeg -hide_banner -i "%%~i" -y -vn -async 1 -ac 2 -f wav - | qaac --tvbr 80 --quality 2 --ignorelength -o "%outdir%\%%~ni.m4a" -
ffmpeg -hide_banner -i "%%~i" -i "%outdir%\%%~ni.m4a" -map 0:v -map 1:a !sub! -c copy -y "%outdir%\%%~ni.mkv"
)
pause


以上僅供參考

用 CMD 的 For 去檢查 FFmpeg 的 輸出 Log, 判斷有沒有 Subtitle tracks
FFmpeg 的 Log 輸出排版格式如果改變,複製字幕可能就沒用
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?