最流行的无损压缩格式 - FLAC 系列之一:FLAC格式介绍
作者:Sender Su 来源:原创内容 发布日期:2008-03-26 最后修改日期:2008-04-02
FLAC (http://flac.sourceforge.net/)
是Free Lossless Audio
Codec的缩写。FLAC是一种无损音频压缩格式,也即相对诸如MP3格式一类的有损压缩格式而言,以FLAC格式压缩的音频不会在音质上有任何丢失。
某程度上,这类似于ZIP/WINRAR/7-Zip一类的压缩软件,但由于FLAC是专门面向音频而设计的,因此压缩比要高于通用的文件压缩软件。另一
方面,以FLAC格式压缩的音频可以直接在各种播放软件甚至硬件设备中播放,这也是通用的文件压缩软件所不能做到的。
FLAC目前是最快且获得最广泛支持的无损音频编码。同时,FLAC也是唯一一种非私有、不受专利妨碍、具有开放源码的参考代码实现、具备详尽文档的文件
格式和API接口的无损音频编码。同时,FLAC还具有其它几种独立的实现,这是开放源码所带来的优势。
FLAC支持在音频文件中嵌入标记、唱片封套等描述信息,并支持快速的播放定位。FLAC在绝大多数的操作系统上都是免费、自由可用的,支持的操作系统包
括Windows、*nix(Linux、BSD、Solaris、OS X、IRIX等)、BeOS、OS/2以及Amiga等。
有很多软件和设
备都支持FLAC格式(参见本站文章:最流行的无损压缩格式 - FLAC 系列之二:FLAC格式应用 ),但FLAC格式是由FLAC核心工程组的成员所维护并向外提供用于处理FLAC文件的软件和函数库。
与一般的开放源码/自由软件有所不同的是,FLAC的“free”,指的不仅仅是源代码公开、无须付费便可获得,而是包括FLAC格式本身都是完全向公众
公开,并可用于任意用途。当然,FLAC工程组保留修改FLAC格式规范的权力。同时,FLAC格式以及FLAC格式相关的编码、解码算法均不被任何已知
的专利所覆盖。对FLAC授权的专门申明,原因是音频编码不仅仅是一种技术,它还涉及到具体的文件格式。比如MP3格式,它的专利权持有人不仅仅对使用
MP3编解码技术收取专利费,还对使用MP3格式发布音频这一行为收取专利费。FLAC的详细授权内容见:FLAC license page。
FLAC的主要特点:
- 无损: 对音频采样信号(标准PCM信号)的编码过程不会造成任何信息的丢失。解码后的音频数据与原始音频数据每个比特都完全一致。每一个压缩数据帧均包含有对帧
内数据运算得到的16位CRC(循环冗余校验)码以便检查传输错误。在文件头中还存储有原始音频数据的MD5运算结
果,可在解码后用于与原始数据进行比对,以进一步确保音频数据的完整性。
- 快速:FLAC的解码速度是不对称的。解码器只需要整数算法,因此相对大多数的知觉音频编码(比如MP3)来说对运算能力的依赖少很多。即使
在较差的硬件上依然可以轻松获得实时解码效率。
- 硬件支持:FLAC格式已经获得大量的消费者级别的电子设备支持,从便携式播放器到家庭影院设备以致汽车音响。
- 灵活的元数据:FLAC的元数据系统支持标记、图片、定位表、以及演播次序表(cue
sheet)。第三方应用还可以通过为自己注册ID来加入新的元数据定义。在新版本的FLAC中加入新定义的元数据不会对已有的元数据定义造成冲突,也不
会对现有的解码器和已压缩的音频流造成不兼容。
- 可定位:FLAC支持精确到采样的快速定位。此功能不仅仅对播放有意义,还使得FLAC格式可直接使用于音频编辑软件,即可以直接对压缩流进
行样本级精度的编辑。
- 支持流播放:每一个FLAC帧均包含有用于解码该帧的足够的信息。实际上,FLAC在解码时完全不依赖之前或之后的帧。FLAC在每一帧中均
使用同步代码和CRC校验和(类似于MPEG或其他格式),容许解码器以最少的延迟直接拾取压缩音频流中的任意位置。
- 适合归档:FLAC是一种开放格式,并由于其无损的特性,它不会在可能格式转换操作过程中发生任何生成性的质量损失。除了每一个帧的CRC校
验和以及在文件头中的MD5校验和之外,FLAC还支持一个“检验”选项,使得可以在编码处理过程中并行地进行解码操作并把解码结果与原始数据进行比较,
并在发现错误时自动停止编码操作,确保了编码结果的正确性。
- 方便对CD进行归档:FLAC支持演播次序表,即cue
sheet。该元数据定义用于存储CD的目录表,包括每一音轨的信息和索引位置。例如,你可以把整张CD捕捉为一个文件,并把CD内容的演播表导入到该文
件中,从而最终获得可代表该CD的单一无损压缩音频文件。如果原始CD受损,可方便地从此文件中根据演播表恢复原始CD。
- 抗错误:基于FLAC的帧结构,流错误被限制在错误发生的帧内,也即只是最多1秒钟的数据。其他一些无损压缩编码缺乏这样的结构,后果是即
使在音频流中发生1个比特的错误也有可能把整个音频流都毁掉。
FLAC不支持的功能:
- 有损压缩:某些无损音频编码同时支持有损和无损方式(比如OptimFROG和WavPack),但FLAC仅专注于无损压缩。
- 数字版权管理(DRM):FLAC没有打算增加对防止复制的DRM技术的支持。当然,基于FLAC开放的特性,无法阻止某些第三方对FLAC
数据流加密后在其他容器格式中传播(比如,苹果公司通过FairPlay技术把AAC音频流加密后在MP4格式中传播)。