自由無損音频编解码器
FLAC
一種開放的無損音訊編碼與檔案格式,透過預測和殘差編碼減小 PCM 資料體積,並能在解碼後恢復原始取樣。
詳細說明
FLAC(Free Lossless Audio Codec,自由無損音訊編解碼器)是一種面向數字音訊的開放無損編碼格式,由 Josh Coalson 發起,參考實現於 2001 年首次釋出,後來由 Xiph.Org 維護。FLAC 的碼流規範現由 RFC 9639 完整描述。它既指音訊編碼方法,也指原生 `.flac` 檔案所採用的碼流和後設資料結構。
無損意味著解碼後的 PCM 取樣與編碼器輸入一致,不表示檔案沒有壓縮。FLAC 把音訊劃分為幀和子幀,對每個聲道選擇常量、逐字儲存、固定預測或線性預測等方式,再以 Rice 編碼儲存預測殘差。立體聲還可使用左右、中側或差分聲道分配減少通道間冗餘。編碼級別主要改變預測搜尋、分塊與壓縮耗時,不應改變正確解碼後的音訊資料。
原生碼流以 `fLaC` 標識開始,隨後是必需的 STREAMINFO 塊、可選後設資料塊和音訊幀。STREAMINFO 儲存取樣率、聲道數、有效位數、總樣本數等資訊,並可包含未壓縮音訊的 MD5 校驗值;其他塊可承載 Vorbis Comment 標籤、封面圖、索引點、CUE Sheet 和填充空間。幀本身具有同步與校驗資訊,便於流式解碼和一定程度的錯誤定位。
FLAC 不是 WAVE 或 ZIP 的別名。WAVE 是可封裝 PCM 或其他編碼的 RIFF 檔案,FLAC 則針對音訊樣本建立預測模型;通用壓縮器通常難以利用音訊的連續相關性。FLAC 也可以對映進 Ogg 或 Matroska 容器,此時檔案組織與原生 `.flac` 不同,內部音訊仍按 FLAC 規則解碼。
重新以不同壓縮級別編碼無損 FLAC,可以在不改變取樣資料的情況下改變檔案大小和編碼速度。把 MP3、AAC 等有損來源轉換為 FLAC 只會無損儲存已經解碼的結果,不能恢復原碼流捨棄的內容;檔案體積增大也不構成來源為無損母帶的證明。校驗值能夠發現資料變化,卻不能判斷錄音、母帶或先前處理是否真實。