FLAC

维基百科,自由的百科全书
跳转至: 导航搜索
Free Lossless Audio Codec
Free Lossless Audio Codec(FLAC)的徽標
開發者 Josh Coalson , Xiph.Org基金會
初始版本 2001年7月20日
穩定版本 1.3.0 / 2013年5月26日(15個月前) (2013-05-26)
操作系统 跨平台
类型 編解碼器音頻文件格式
许可协议 命令界面工具 : GNU GPL
运行库(libraries): BSD授權條款
網站 flac.sourceforge.net(旧)
xiph.org/flac(现)
Free Lossless Audio Codec
扩展名 .flac
互联网媒体类型 audio/x-flac
格式 音频编码
專門屬 音频

FLAC (英语发音:/ˈflæk/;全称: Free Lossless Audio Codec),中文直译為自由無損音頻壓縮編碼(注:这里“Free”指的是自由——自由软件,而并不是免费)。FLAC是一款著名的自由音頻壓縮編碼,其特點是可以对音频文件無損壓縮。不同於其他有損壓縮編碼如MP3WMA(9.0版本支援無損壓縮),它不會破壞任何原有的音頻資訊,所以可以還原音樂光碟音質。現在它已被很多軟體及硬體音頻產品所支持。

项目组成[编辑]

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项目由Josh Coalson在2000年发起并开发。[1]FLAC比特流格式在进入FLAC 0.5 版本内测阶段时被冻结,2001年1月15日FLAC 0.5 版本发布参考实现。2001年7月20日,FLAC 1.0被释放。

2003年1月29日,Xiphophorus(現在稱為Xiph.Org基金會)宣佈FLAC併入旗下,连同Ogg VorbisOgg TheoraSpeex成為旗下的開源项目。

2013年5月26日,FLAC 1.3.0发布,并将开发转移至Xiph.org Git仓库。

技術[编辑]

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在同一情況下則只有一至兩成壓縮率。)

雖然有損壓縮格式如MP3ogg等有更高的壓縮率,但它們會破壞了音頻的原來數據,使其不可變回原來音質。而且FLAC可自由選擇壓縮率及壓縮時間,當然兩者是成正比的。

相比起其他無損壓縮格式如Monkey's Audio(拓展名为.APE)及Shorten,虽然压缩率稍有不及Monkey's Audio,FLAC技术更先进,占用资源更低,而且是开源的,所以,更多的平台及硬體產品支持FLAC。不過目前在中国大陆Monkey's Audio更为流行[來源請求]

FLAC同時亦是将音樂光碟保存於電腦中的最佳方法之一,因為其不會破壞音頻的原始資料,所以FLAC可以再轉回音樂光碟並保留原來的音質,而且还可以有效对抗文件损坏。

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

参见[编辑]

註解[编辑]

  1. ^ News. FLAC. [31 August 2009]. 
  2. ^ Lossless comparison

外部連結[编辑]