音频有损编码有:aac,mp3,ogg(vobis),opus等。这里只讨论主流编码格式,aac编码器有faac,qaac,fhgacc,neroacc,fdkacc,falabaac等,其封装格式有.aac,.m4a,.m4b,.mp4等。

aac基本上是最优秀的有损编码器,它有着非常好的频谱一致性,照顾了0~22kHZ的频谱响应,而不是高频一刀切。虽然我们很难分辨高频信息,但是高频信息影响我们对音乐的赏析,没有高频信息会变得难听,而且频谱差异也并不是用肉眼看的,即使频谱上很难发现差异,但是在波形上会出现极大差异,是肉耳可闻的差异,只不过有损压缩一般会得到一致的频率响应,为此可以在振幅大的点误差也大,也就是音量大的时刻差异相应地增大,而由于音量的增大,我们更难发现这个差异,所以良好的有损压缩会利用这个特点,原始音频的频谱和有损音频频谱一致,且和两者差值(也叫纠错音频)的频谱基本一致,也就是说纠错音频放大音量来听也能听到原音乐的大部分信息,这就是三者的相似性。

其他有损音频也大致如此,当然,也有不完全考虑或完全不考虑三者频谱一致性(即人体声学),如:wv有损模式,ofs双流模式。wv有损基本没有考虑之,它的纠错音频频谱是一条条竖线,即某时刻各频率响应基本一致,这样可以尽量与原始音频接近从而纠错音频可以压缩得更小,这就是wv混合模式可以不增加文件体积的原因。而ofs双流模式(OptimFROG DualStream),它介于wv和aac之间,频率响应优于wv,但压缩耗时多,文件体积基本没变,这是最好的有损无损混合模式,但支持设备极少。另外,aac编码有一种HD-AAC,也即MPEG-4 SLS,它是对AAC音频的纠错音频应用MPEG-4 SLS编码,某些情况下效果可以(文件体积多出1%),某些情况下极差(可能是编码不成熟),对应的编解码器是Nero商业版工作站,它的HD-AAC基本没用。

mp3格式音频实在是不太好的有损,不过是最先流行起来的,它编码效率不高,但是一般地320kbps的mp3还是优于256kbps的aac音频的,两者音质基本一样。

ogg格式音频也是十分适合高码率有损音频的,一般建议128~512kbps使用,在较高码率下可能优于aac(不过太高码率意义不大)。

opus格式音频其实没什么用,你说它对低频处理得非常好,但是在它的纠错文件频谱上,可以明显看见低频上有明显的响应,这说明它其实是本末倒置,它对20kHZ以上频谱一刀切,而且它要求编码後采样率为48kHZ,然而重采样也会损失部分音质(信噪比一般有130dB)。

 

一、在频谱上比较各种有损音频编码方案:

音频:BGM02A.wav 立体声 16位 48kHZ

android 获取AAC播放时长 aac文件播放器_编码器

1、比特率大约256kbps

faac q730 255kbps

faac编码比特率十分不确定,当前音频编码码率较一般情况低很多。

android 获取AAC播放时长 aac文件播放器_码率_02

qaac cvbr256 256kbps

android 获取AAC播放时长 aac文件播放器_hg_03

qaac tvbr110 255kbps

android 获取AAC播放时长 aac文件播放器_hg_04

fhg vbr6 238kbps

android 获取AAC播放时长 aac文件播放器_android 获取AAC播放时长_05

ogg q8.0 243kbps

android 获取AAC播放时长 aac文件播放器_码率_06

opus vbr256music 275kbps

android 获取AAC播放时长 aac文件播放器_其他_07

nero vbr0.69 254kbps

android 获取AAC播放时长 aac文件播放器_hg_08

mp3 256kbps

android 获取AAC播放时长 aac文件播放器_编码器_09

fdk vbr5 234kbps

android 获取AAC播放时长 aac文件播放器_码率_10

以上是按有损音频质量来排序的,faac的编码质量最好,毕竟用了-q730参数,一般faac使用-q300时码率是256kbps左右。其次是qaac编码器。该频谱是Audition软件里面最大分辨率的频谱,使用完全线性+5次更加对数。在PS里面处理图片比较,方式为差值。可以看到频谱差异都很小,基本一片黑,偏红是正值,偏绿是负值。

2、比特率大约64kbps

音频:梦的光点 - 王心凌.flac

编码质量依次是:fhg he-aac v1 > fhg vbr2 > fdk v1 > qaac he > nero > fhg v2 > fdk v2 > qaac > fdk > faac

前三者质量基本一样,fhg v1,fhg vbr2,fdk v1的频谱差异如下:(fhg v1为例)

android 获取AAC播放时长 aac文件播放器_android 获取AAC播放时长_11

而faac的频谱差异极大,可以看到即使低码率,它的频谱带宽也基本没变(需要手动设置带宽)。

3、比特率大约32kbps

音频:梦的光点 - 王心凌.flac

编码质量依次是:fhg v2 > nero > fdk v2 > fhg v1 > qaac he

前三者质量基本一样,差异如下:(fdk v2为例)

android 获取AAC播放时长 aac文件播放器_编码器_12

 

 

二、纠错音频的比较

音频:BGM31.wav 立体声 16位 48kHZ

1、256kbps

qaac cvbr256

android 获取AAC播放时长 aac文件播放器_其他_13

qaac tvbr110

android 获取AAC播放时长 aac文件播放器_hg_14

fhg vbr6

android 获取AAC播放时长 aac文件播放器_码率_15

faac q300

android 获取AAC播放时长 aac文件播放器_android 获取AAC播放时长_16

ogg q8.0

android 获取AAC播放时长 aac文件播放器_其他_17

nero vbr0.69

android 获取AAC播放时长 aac文件播放器_其他_18

fdk cbr256

android 获取AAC播放时长 aac文件播放器_编码器_19

fdk vbr5

android 获取AAC播放时长 aac文件播放器_编码器_20

mp3 256kbps

android 获取AAC播放时长 aac文件播放器_码率_21

opus vbr256 music

android 获取AAC播放时长 aac文件播放器_hg_22

编码质量依次排序(码率不一定是256kbps),前三者编码质量其实非常接近,而opus编码质量实在不敢恭维,这也就解释了为何opus频谱表现看起来更接近却听感差于aac音频。

2、64kbps

依次为:fdk vbr1 84kbps > fhg vbr2 78kbps > qaac tvbr27 74kbps > faac q55 80kbps > fhg he 64kbps > nero q0.25 75kbs

由于时间轴不一,无法深入比较。该结果并不太可靠。尤其是fdk v1,fdk v2,fhg v2,qaac he,时间轴不准确,无法比较。所以该码率下还是看频谱差异比较。

 

此外,还有一个falabaac编码器,如下:(falab q1.5 250kbps)

android 获取AAC播放时长 aac文件播放器_android 获取AAC播放时长_23

原始音频:梦的光点 - 王心凌.flac

android 获取AAC播放时长 aac文件播放器_hg_24

频谱差异:

android 获取AAC播放时长 aac文件播放器_码率_25

这基本是其中最差的编解码器了,毫无用处。

 

三、结论

优秀的编解码器是:qaac,fhgaac.

高码率使用AAC-LC编码,推荐编码器qaac
低码率使用AAC-HE编码,推荐编码器fhgacc
使用以下码率相应的可变码率模式及质量参数

512kbps+,wavpack,takc等无损编码器或faac
 256~512kbps,AAC-LC,faac
 96~320kbps,AAC-LC,qaac
 40~96kbps,AAC-HEv1,fhgaac,fdkaac
 8~40kbps,AAC-HEv2,fhgaac,fdkaac

fhgaac基本是全能的,推荐使用,极不推荐使用opus,mp3,nero,qaac在压缩简单音频时质量不如faac,只要同码率下faac能取到q500+参数就不用qaac,中码率下qaac是其中王者,低码率下fhgaac是第一,较高码率下faac是最佳。

 

四、下载

链接:https://pan.baidu.com/s/1Wb4Os7OfYlIcjbob5mYsLQ
提取码:3r45
包含PS中比较图片、命令行编解码器等。