FLAC/ˈflæk/),全稱為自由無損音訊壓縮編碼(英語:Free Lossless Audio Codec),是一款的自由音訊壓縮編碼,其特點是可以對音訊檔無失真壓縮。不同於其他有損壓縮編碼(如MP3AAC等),壓縮後不會有任何音質損失,現在已被很多軟體及硬體音訊產品所支援。

Free Lossless Audio Codec
Free Lossless Audio Codec(FLAC)的徽標
開發者Xiph.Org基金會、Josh Coalson
首次釋出2001年7月20日
目前版本1.4.3[1]在維基數據編輯(2023年6月23日,16個月前)
原始碼庫 編輯維基數據鏈結
作業系統跨平台
類型編解碼器音訊檔案格式
授權條款命令介面工具:GNU GPL
執行庫(libraries): BSD授權條款
網站xiph.org/flac
Free Lossless Audio Codec
副檔名
.flac
網路媒體型式
audio/x-flac
格式類型音訊編碼
作為容器音訊
免費格式?

歷史

FLAC專案由Josh Coalson在2000年發起並開發[2]。FLAC位元流格式在進入FLAC 0.5版本內部測試時被凍結,2001年1月15日FLAC 0.5版本釋出,做為第一個FLAC的參考實做,2001年7月20日,FLAC 1.0正式釋出[2]

2003年1月29日,Xiph.Org基金會宣佈FLAC併入旗下,連同Ogg VorbisOgg TheoraSpeex成為旗下的開源專案[2][3][4]

2013年5月26日,FLAC 1.3.0釋出,並將開發轉移至Xiph.org Git倉庫[5]

2014年11月25日,FLAC 1.3.1釋出。

2017年1月1日,FLAC 1.3.2釋出。

2019年8月4日,FLAC 1.3.3釋出,但 Windows 版本並未被編譯為EXE格式,且在首頁上的latest news處也未顯示,僅在changelog中出現。

2022年2月20日,FLAC 1.3.4釋出。

2022年9月9日,FLAC 1.4釋出。

專案組成

FLAC專案包含:

  • 音訊格式
  • libFLAC,一個參考的編碼及解碼程式庫,及一個元資料介面
  • libFLAC++,一個配合libFLAC的物件壓縮器
  • flac,一個文字介面的壓縮指令,配合libFLAC以編碼或解碼.flac檔案
  • metaflac,一個命令列介面的.flac元資料編輯器
  • input plugins,不同的音樂播放軟體的輸入外掛程式(如WinampXMMSfoobar2000musikCube

自由指的是這個音訊格式可以在不需事先授權的情況下使用(xiph.org保留了製定FLAC規格及認證相容規挌的權利)。而不論是FLAC格式還是其編碼及解碼方法均沒有任何軟體專利保護,這表示整個FLAC是自由軟體:libFLAC及libFLAC++的原始碼是在BSD授權條款下發佈,而flac,metaflac及其他外掛程式的原始碼均是在GPL下發佈。

在其官方的目標中,FLAC計劃不鼓勵開發者在其中加入任何反複製特性。

技術

FLAC只支援定點取樣,並不支援浮點取樣,這是因為它要確保沒有任何約數錯誤以致影響音質。它能支援任何PCM位解析度,由4至32 bits per sample皆有。它亦支援任何取樣頻率,由1 Hz至655,350 Hz不等,並可逐1 Hz微調。

FLAC支援很多不同的平台:大多數的Unix-like系統(包括LinuxBSDSolarisMac OS X),WindowsBeOSOS/2。支援這麼多平台的原因是因為它是由autoconfautomakeMSVCWatcom C及Project Builder編譯的。

FLAC的技術特點如下:

  • 無失真壓縮:被編碼的音訊(PCM)資料沒有任何資訊損失,解碼輸出的音訊與編碼器的輸入的每一個位元組都是一樣的。每個資料訊框都有一個當前訊框的16-bit CRC校驗碼,用於監測資料傳輸錯誤。對整段音訊資料,在檔案頭中還儲存有一個針對原始未壓縮音訊資料的MD5標記,用於在解碼和測試時對資料進行校驗。
  • 靈活的壓縮策略:與libflac使用是「品質」的參數,該參數變化從0(最快)至8(最小)。雖然在壓縮過程(壓縮檔案總是完美的「無失真」表示的原始資料)。涉及速度和容量之間的折衷,解碼過程中始終是相當快的,而不是非常依賴於壓縮
  • 快速:FLAC更看重解碼的速度。解碼只需要整數運算,並且相對於大多數編碼方式而言,對計算速度要求很低。在很普通的硬體上就可以輕鬆實現即時解碼。
  • 硬體支援:由於FLAC提供了免費的解碼範例,而且解碼的複雜程度低,所以FLAC是目前少數獲得硬體支援的無失真壓縮編碼之一。(APE格式也有少數硬體支援)
  • 可以流化:FLAC的每個資料訊框都包含了解碼所需的全部資訊。解碼當前訊框無需參照它前面或後面的資料訊框。FLAC使用了同步代碼和CRC(類似於MPEG等編碼格式),這樣解碼器在資料流中跳躍定位時可以有最小的時間延遲。
  • 可以定位:FLAC支援快速採樣精確定位。這不僅對於播放有益,更使得FLAC檔案便於編輯。
  • 富於彈性的metadata:可以定義和實現新類型的metadata資料塊,而不會影響舊的資料流和解碼器的使用。目前已有的metadata類型包括tag,cue表,和定位表。已經註冊的應用程式可以定義自己專用的metadata類型(這一點與MIDI標準相似)。
  • 非常適合於存檔應用:FLAC是一個開放的編碼格式,並且沒有任何資料的損失,你可以將它轉換為你需要的任何其他格式。除了每個資料訊框的CRC和MD5標記對資料完整性的保障,flac(FLAC專案提供的命令列方式編碼工具)還提供了一個verify(校驗)選項,當使用該選項進行編碼的時候,編碼的同時就會立即對已編碼資料進行解碼並與原始輸入資料進行比較,一旦發現不同就會退出並且報警提示。
  • 便於對CD進行備份:FLAC有一個cue表,表內的metadata資料塊用於儲存CD的內容列表和所有音軌的索引點。你可以將一張CD儲存到一個單一檔案,並匯入CD的cue表格,這樣一個FLAC檔案就可以完整地記錄整張CD的全部資訊。當你的原來的CD損壞的時候,你就可以用這個檔案恢復出與原來一模一樣的CD副本。
  • 抗損傷:由於FLAC的訊框結構,當資料流損壞時,資料損失會被限制在受損的資料訊框之內。一般只會遺失很短的一個片段。而很多其他無失真音訊壓縮格式在遇到損壞時,一個損壞就會造成後面所有資料遺失。

比較

FLAC與其他無失真壓縮式,如ZIPgzip的主要分別在於FLAC可即時播放已壓縮的音訊資料,而且FLAC比ZIP這類無失真壓縮格式有更高的壓縮比率。(FLAC在壓縮音樂時有大約五成壓縮率,但ZIP在同一情況下則只有一至兩成壓縮率。)

雖然有損壓縮格式如MP3Opus等有更高的壓縮率,但它們會破壞了音訊的原來數據,使其不可變回原來音質,而且FLAC可自由選擇壓縮率及壓縮時間,較高的壓縮率會帶來較高的解壓縮時間。相比起其他無失真壓縮格式如Monkey's Audio(拓展名為.APE)及Shorten,雖然壓縮率稍有不及Monkey's Audio,FLAC技術更先進,占用資源更低,而且是開放的,所以,更多的平台及硬體產品支援FLAC。

在Hydrogenaudio維基有一個各類無損音訊壓縮的比較表,裡面包括了FLAC格式。[6]

參見

註解

  1. ^ 1.0 1.1 FLAC 1.4.3 Released With More Optimizations, Drops PowerPC-Specific Code. 2023年6月23日 [2024年2月19日]. 
  2. ^ 2.0 2.1 2.2 News. FLAC. [31 August 2009]. (原始內容存檔於2013-03-29). 
  3. ^ FLAC Joins Xiph.org. Xiph.org Foundation. 29 January 2003 [31 August 2009]. (原始內容存檔於2017-01-07). 
  4. ^ Plant, Emmett. FLAC Joins Xiph!. Xiph.org Foundation. [31 August 2009]. (原始內容存檔於2008-05-29). 
  5. ^ FLAC – changelog. Xiph.org Foundation. [15 October 2013]. (原始內容存檔於2016-11-24). 
  6. ^ Lossless comparison. [2005-11-13]. (原始內容存檔於2012-03-03). 

外部連結