无损音频格式-FLAC与APE


APE与FLAC
在音频压缩领域,有两种压缩方式,分别是有损压缩和无损压缩!我们常见到的MP3、WMA、OGG被称为有损压缩,有损压缩顾名思义就是降低音频采样频率与比特率,输出的音频文件会比原文件小。OGG格式是一种有损压缩格式,而它最大的优点就是在大幅节省储存空间的情况下能最大限度的保持音乐的原味,而它比相同码率(音质一样)的mp3格式更省空间。如果不是音乐发烧友的话,选它也是非常好的选择,而且现在MP3播放器也都开始支持这种格式,从而使其更加流行。
另一种音频压缩被称为无损压缩,也就是我们今天所要说的主题内容。无损压缩能够在100%保存原文件的所有数据的前提下,将音频文件的体积压缩的更小,而将压缩后的音频文件还原后,能够实现与源文件相同的大小、相同的码率。目前无损压缩格式有APE、FLAC、WavPack、LPAC、WMALossless、AppleLossless、La、OptimFROG、Shorten,而常见的、主流的无损压缩格式目前只有APE、FLAC。下面就针对这两种无损压缩格式进行一下对比!
APE是M's Audio,一种无损压缩格式。这种格式的压缩比远低于其他音频格式,但能够做到真正无损,同时其开放源码的特性,也获得了不少音乐发烧友的青睐。在现有不少无损压缩方案中,APE是一种有着突出性能的格式,令人满意的压缩比以及飞快的压缩速度,在国内应用比较广泛,成为了不少朋友私下交流发烧音乐的选择之一。
FLAC是Free Lossless Audio Codec的简称,是一种非常成熟的无损压缩格式,名气不在APE之下!该格式的源码完全开放,而且兼容几乎所有的操作系统平台。它的编码算法相当成熟,已经通过了严格的测试,当在编码损坏时依然能正常播放。另外该格式是最先得到广泛硬件支持的无损格式,世界知名数码产品如:Rio公司的硬盘随身听Karma,建伍的车载音响MusicKeg以及PhatBox公司的数码播放机都能支持FLAC格式。
FLAC项目包含:
音频格式
libFLAC,一个引用的编码及解码程序库,及一个元数据接口
libFLAC++,一个配合libFLAC的对象压缩器
flac,一个文字接口的压缩指令,配合libFLAC以编码或解码.flac文件
metaflac,一个文字接口的.flac元数据编辑器
input plugins,不同的音乐播放软件的输入插件(如Winamp,XMMS,foobar2000,musikCube)
自由指的是这个音频格式可以在不需事先授权的情况下使用(xiph.org保留了制定FLAC规格及认证兼容规挌的权利)。而不论是FLAC格式还是其编码及解码方法均没有任何软件专利保护,这表示整个FLAC是自由软件:libFLAC及libFLAC++的源代码是在BSD许可证下发布,而flac,metaflac及其他插件的源代码均是在GPL下发布。
FLAC支持很多不同的平台:大多数的Unix-like系统(包括Linux,BSD,Solaris及Mac OS X),Windows,BeOS及OS/2。支持这么多平台的原因是因为它是由autoconf/automake、MSVC、Watcom 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与AEP的压缩比基本相同,FLAC的压缩比为58.70%,而APE的压缩比则要更高一些,为55.50%,都能压缩到接近源文件一半大小。
二、编码速度考验用户的耐心,速度快者优
非常值得赞扬的是,FLAC与APE的编码速度都相差无几,这是因为两者的压缩技术是开源的,开发者可以借鉴两者在编码上的不同优势进行开发,不过目前编码速度最快的是WavPack和Shorten两种无损压缩格式,但这两种格式的非开源性限制了其普及。
三、平台的支持决定普及度
音频压缩不但需要硬件的支持,也需要的软件的支持,因此能够被更广泛的平台支持,也就意味着被更多用户使用。FLAC与APE在这方面做的都非常出色,能够兼容所有系统平台,现在无论您是Windows用户还是众多版本的Linux用户,哪怕您是Mac Os的忠实FANS,都无需担心无法使用FLAC或APE。
四、两者的开源特性,完全免费的技术
两者的开源特性,意味着任何组织或个人都可以免费使用这两种压缩技术,任何组织或个人都可以修改和发布基于这两种技术的新产品,这给众多MP3厂商降低成本提供了有力保障,且消费者也能够以相对低廉的价格购买到只有世界级MP3(例如:iPod支持FLAC)才支持的无损压缩音频、CD级的音质表现!
不同点:
一、自我纠错能力,谁更人性化?
很多消费者都经历过MP3的爆音问题,然后归咎于MP3质量有问题,其实,很大一部分爆音是因为音频压缩过程中,编码的微小损坏,造成在解码时,处理出来的数据与音频不一致,导致爆音现象。无损格式压缩的不好也会导致编码损坏,而在处理这种问题时,FLAC的会以静音方式代替有损部分,而APE的处理则与常见的有损压缩格式处理的方式相同,以爆音方式代替有损部分。这一点FLAC设计的更人性化!
二、优化的编码结构,决定了解码的速度!
由于编码方式的不同,将影响两种无损压缩格式的解码速度,通常FLAC的解码速度比APE快30%,这是因为,FLAC只需执行整数运算,而无需执行占用系统更高频率和更大数据处理量的浮点运算。基于这一点,一般硬件均可完美实现实时解码。
三、方便的资源获取,意味着能够得到更广泛的应用与支持
无论FLAC还是APE,在资源获取上,两者都能通过网络搜索轻松获得。通过以上的对比,相信很多用户对FLAC和APE的认识更加深了一些,单从技术角度讲,FLAC要明显比APE优秀,原因在于,FLAC是第一个开源的且被世界公认的无损压缩格式,有来自世界各地的顶尖级开发高手对FLAC进行免费的开发与技术完善,同时,FLAC有广泛的硬件平台的支持,几乎所有采用便携式设计的高端解码芯片都能够支持FLAC格式的音乐,FLAC第三个优势在于:优秀的编码使得硬件在解码时只需采用简单的整数运算即可,这将大大降低所占用的硬件资源!不过两种公开的技术具有极强的互补性,任何一方都不可能全面超越另一方!
时隔近10年:无损音频编码FLAC终于发布1.4版本
谈及无损音乐,FLAC几乎是无法绕过的话题,它凭借出色且免费的数字音频编码技术闻名,自从问世之后就被大量音乐播放器支持。但在2013年,FLAC 1.3问世后,FLAC就再也没有进行过大规模更新,距2022年已经有了将近10年的时间。
2022年9月中旬,新的FLAC 1.4版本突然发布更新,在此前版本的基础上,进行了大量的优化。在新版本中,FLAC针对具有NEON指令的 ARMv8 (AArch64) 硬件进行了性能优化,这意味着在苹果M1/M2到Ampere Altra等硬件环境下,AArch64 将有更好的性能表现。同时,FLAC 1.4则为支持FMA指令的Intel和AMD处理器带来了新的加速功能。此外,新版本也对其他方面做出了优化,现在它能够编码/解码32位PCM,编码采样率达到1048575Hz的文件,并包括CMake构建系统改进以及广泛的各种其他新增和修复。
关于FLAC 1.4的更新日志,以及编码器的下载,可以前往GitHub页面进行查看。
在音频压缩领域,有两种压缩方式,分别是有损压缩和无损压缩!我们常见到的MP3、WMA、OGG被称为有损压缩,有损压缩顾名思义就是降低音频采样频率与比特率,输出的音频文件会比原文件小。OGG格式是一种有损压缩格式,而它最大的优点就是在大幅节省储存空间的情况下能最大限度的保持音乐的原味,而它比相同码率(音质一样)的mp3格式更省空间。如果不是音乐发烧友的话,选它也是非常好的选择,而且现在MP3播放器也都开始支持这种格式,从而使其更加流行。
另一种音频压缩被称为无损压缩,也就是我们今天所要说的主题内容。无损压缩能够在100%保存原文件的所有数据的前提下,将音频文件的体积压缩的更小,而将压缩后的音频文件还原后,能够实现与源文件相同的大小、相同的码率。目前无损压缩格式有APE、FLAC、WavPack、LPAC、WMALossless、AppleLossless、La、OptimFROG、Shorten,而常见的、主流的无损压缩格式目前只有APE、FLAC。下面就针对这两种无损压缩格式进行一下对比!
APE是M's Audio,一种无损压缩格式。这种格式的压缩比远低于其他音频格式,但能够做到真正无损,同时其开放源码的特性,也获得了不少音乐发烧友的青睐。在现有不少无损压缩方案中,APE是一种有着突出性能的格式,令人满意的压缩比以及飞快的压缩速度,在国内应用比较广泛,成为了不少朋友私下交流发烧音乐的选择之一。
FLAC是Free Lossless Audio Codec的简称,是一种非常成熟的无损压缩格式,名气不在APE之下!该格式的源码完全开放,而且兼容几乎所有的操作系统平台。它的编码算法相当成熟,已经通过了严格的测试,当在编码损坏时依然能正常播放。另外该格式是最先得到广泛硬件支持的无损格式,世界知名数码产品如:Rio公司的硬盘随身听Karma,建伍的车载音响MusicKeg以及PhatBox公司的数码播放机都能支持FLAC格式。
FLAC项目包含:
音频格式
libFLAC,一个引用的编码及解码程序库,及一个元数据接口
libFLAC++,一个配合libFLAC的对象压缩器
flac,一个文字接口的压缩指令,配合libFLAC以编码或解码.flac文件
metaflac,一个文字接口的.flac元数据编辑器
input plugins,不同的音乐播放软件的输入插件(如Winamp,XMMS,foobar2000,musikCube)
自由指的是这个音频格式可以在不需事先授权的情况下使用(xiph.org保留了制定FLAC规格及认证兼容规挌的权利)。而不论是FLAC格式还是其编码及解码方法均没有任何软件专利保护,这表示整个FLAC是自由软件:libFLAC及libFLAC++的源代码是在BSD许可证下发布,而flac,metaflac及其他插件的源代码均是在GPL下发布。
FLAC支持很多不同的平台:大多数的Unix-like系统(包括Linux,BSD,Solaris及Mac OS X),Windows,BeOS及OS/2。支持这么多平台的原因是因为它是由autoconf/automake、MSVC、Watcom 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与AEP的压缩比基本相同,FLAC的压缩比为58.70%,而APE的压缩比则要更高一些,为55.50%,都能压缩到接近源文件一半大小。
二、编码速度考验用户的耐心,速度快者优
非常值得赞扬的是,FLAC与APE的编码速度都相差无几,这是因为两者的压缩技术是开源的,开发者可以借鉴两者在编码上的不同优势进行开发,不过目前编码速度最快的是WavPack和Shorten两种无损压缩格式,但这两种格式的非开源性限制了其普及。
三、平台的支持决定普及度
音频压缩不但需要硬件的支持,也需要的软件的支持,因此能够被更广泛的平台支持,也就意味着被更多用户使用。FLAC与APE在这方面做的都非常出色,能够兼容所有系统平台,现在无论您是Windows用户还是众多版本的Linux用户,哪怕您是Mac Os的忠实FANS,都无需担心无法使用FLAC或APE。
四、两者的开源特性,完全免费的技术
两者的开源特性,意味着任何组织或个人都可以免费使用这两种压缩技术,任何组织或个人都可以修改和发布基于这两种技术的新产品,这给众多MP3厂商降低成本提供了有力保障,且消费者也能够以相对低廉的价格购买到只有世界级MP3(例如:iPod支持FLAC)才支持的无损压缩音频、CD级的音质表现!
不同点:
一、自我纠错能力,谁更人性化?
很多消费者都经历过MP3的爆音问题,然后归咎于MP3质量有问题,其实,很大一部分爆音是因为音频压缩过程中,编码的微小损坏,造成在解码时,处理出来的数据与音频不一致,导致爆音现象。无损格式压缩的不好也会导致编码损坏,而在处理这种问题时,FLAC的会以静音方式代替有损部分,而APE的处理则与常见的有损压缩格式处理的方式相同,以爆音方式代替有损部分。这一点FLAC设计的更人性化!
二、优化的编码结构,决定了解码的速度!
由于编码方式的不同,将影响两种无损压缩格式的解码速度,通常FLAC的解码速度比APE快30%,这是因为,FLAC只需执行整数运算,而无需执行占用系统更高频率和更大数据处理量的浮点运算。基于这一点,一般硬件均可完美实现实时解码。
三、方便的资源获取,意味着能够得到更广泛的应用与支持
无论FLAC还是APE,在资源获取上,两者都能通过网络搜索轻松获得。通过以上的对比,相信很多用户对FLAC和APE的认识更加深了一些,单从技术角度讲,FLAC要明显比APE优秀,原因在于,FLAC是第一个开源的且被世界公认的无损压缩格式,有来自世界各地的顶尖级开发高手对FLAC进行免费的开发与技术完善,同时,FLAC有广泛的硬件平台的支持,几乎所有采用便携式设计的高端解码芯片都能够支持FLAC格式的音乐,FLAC第三个优势在于:优秀的编码使得硬件在解码时只需采用简单的整数运算即可,这将大大降低所占用的硬件资源!不过两种公开的技术具有极强的互补性,任何一方都不可能全面超越另一方!
时隔近10年:无损音频编码FLAC终于发布1.4版本
谈及无损音乐,FLAC几乎是无法绕过的话题,它凭借出色且免费的数字音频编码技术闻名,自从问世之后就被大量音乐播放器支持。但在2013年,FLAC 1.3问世后,FLAC就再也没有进行过大规模更新,距2022年已经有了将近10年的时间。
2022年9月中旬,新的FLAC 1.4版本突然发布更新,在此前版本的基础上,进行了大量的优化。在新版本中,FLAC针对具有NEON指令的 ARMv8 (AArch64) 硬件进行了性能优化,这意味着在苹果M1/M2到Ampere Altra等硬件环境下,AArch64 将有更好的性能表现。同时,FLAC 1.4则为支持FMA指令的Intel和AMD处理器带来了新的加速功能。此外,新版本也对其他方面做出了优化,现在它能够编码/解码32位PCM,编码采样率达到1048575Hz的文件,并包括CMake构建系统改进以及广泛的各种其他新增和修复。
关于FLAC 1.4的更新日志,以及编码器的下载,可以前往GitHub页面进行查看。