AAC編碼
AAC(Advanced Audio Coding, 譯為: 高級音頻編碼),是由Fraunhofer IIS、杜比實驗室、AT&T、Sony、Nokia等公司共同開發的有損音頻編碼和文件格式。
對比MP3
AAC被設計為MP3格式的后繼產品,通常在相同的比特率下可以獲得比MP3更高的聲音質量,是iPhone、iPod、iPad、iTunes的標准音頻格式。 AAC相比較於MP3的改進包含:
- 更多的采樣率選擇: 8kHz ~ 96kHz,MP3為16kHz ~ 48kHz
- 更好的聲道數上限: 48個,MP3在MPEG-1模式下最多為雙聲道,MPEG-2模式下5.1聲道
- 改進的壓縮功能: 以較小的文件大小提供更高的質量
- 改進的解碼效率: 需要較少的處理能力進行解碼
規格
AAC是一個龐大的家族,為了適應不同場合的需要,它有很多種規格可供選擇。下面列舉其中的9中規格(Profile):
- MPEG-2 AAC LC: 低復雜度規格(Low Complexity)
- MPEG-2 AAC Main: 主規格
- MPEG-2 AAC SSR: 可變采樣率規格(Scaleable Sample Rate)
-
MPEG-4 AAC LC: 低復雜度規格(Low Complexity)
- 現在的手機比較常見的MP4文件中的音頻文件使用了該規格
-
MPEG-4 AAC Main: 主規格
-
MPEG-4 AAC SSR: 可變采樣率規格(Scaleable Sample Rate)
-
MPEG-4 AAC LTP: 長時期預測規格(long Term Predicition)
-
Mpeg-4 AAC LD: 低延遲規格(Low Delay)
-
Mepg-4 AAC HE: 高效率規格(High Efficiency)
最早是基於MPEG-2標椎,稱為: MPEG-2 AAC。后來MPEG-4標准在原來基礎上增加了一些新技術,稱為: MPEG-4 AAC。雖然上面列舉了9種規格,但我們目前只需要把注意力放在常用的LC和HE上。
LC
LC適合中等比特率,比如96kbps ~ 192kbps之間。
MPEG-4 AAC LC 等價於
- MPEG02 AAC LC + PNS
- PNS (Preceptual Noise Substitution)譯為: 感知噪聲替代。
- PNS可以提交AAC的編碼效率
HE
HE有v1和v2兩個版本,適合低比特率:
- v1: 適合48kbps ~ 64kbps - v2: 適合低於32kbps,可在低至32kbps的比特率下提供接近CD品質的聲音
v1
MPEG-4 AAC HE v1的別名:
- aacPlus v1
- eAAC
- AAC+
- CT-aacPlus(Coding Technologies)
- Coding Technologies是瑞典一家技術公司,率先在AAC中使用了SBR技術
- 在2007年,被杜比實驗室(Dolby Laboratories)以2.5億美元收購
MPEG-4 AAC HE v1 等價於:
- MPEG-4 AAC LC + SBR
SBR(Spectral Band Replication)譯為: 頻段復制。
- 是一種增強的壓縮技術
- 可以將高頻信號存儲在少量的SBR data中
- 解碼器可以根據SBR data恢復出高頻信號
v2
MPEG-4 AAC HE v2的別名:
- aacPlus v2
- AAC++
- eAAC+、Enhanced AAC+
MPEG-4 AAC HE v2等價於:
- MPEG-4 AAC HE v1 + PS
PS(Parametric Stereo)譯為: 參數立體聲。
- 是一種有損的音頻壓縮算法,可以進一步提高壓縮率
- 可以將左右聲道信號組合成單聲道信號,聲道之間的差異信息存儲到少量的PS data中(大概占2 ~ 3kbps)
- 解碼器可以根據PS data中恢復出立體聲信號
編解碼器
如果想對PCM數據進行AAC編碼壓縮,那么就要用到AAC編碼(encoder)。
如果想將AAC編碼后的數據解壓出PCM數據,那么就要用到AAC解碼器(decoder)。
這里只列舉幾款常用的AAC編解碼器:
-
Nero AAC
- 支持LC/HE規格
- 目前已經停止開發維護了
-
FFmpeg AAC
- 支持LC規格
- FFmpeg官方內置的AAC編解碼器,在libavcodec庫中
- 編解碼器名字叫做libfaac
- 在開發過程中通過這個名字找到編解碼器
-
FAAC(Freeware Advandes Audio Coder)
- 支持LC規格
-
可以集成到FFmpeg的libavcodec中
- 編解碼器名字叫做libfaac
- 在開發過程中通過這個名字找到編解碼器,最后調用FAAC庫的功能
-
從2016年開始,FFmpeg已經移除了對FAAC的支持
-
Fraunhofer FDK AAC
- 支持LC/HE規格
- 目前質量最高的AAC編解碼器
- 可以集成到FFmpeg的libavcodec中
- 編解碼器名字叫做libfdk_aac
- 在開發過程中通過這個名字找到編解碼器,最后調用FDK AAC庫的功能
編碼質量排名: Fraunhofer FDK AAC > FFmpeg AAC > FAAC