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). 

外部連結