AAC和MP3在码率压缩上的一些事

最近公司App用户反馈,我们使用的mp3文件太耗流量。显然是我们mp3的体积太大。 怎么处理?

  • 我们准备了一个20分钟的音频原文件
  • 准备一个音频处理软件(Mac版) Adobe Audition CC 2017 密码:2uqj

下面我们看一个表格,这个表示对比,这是我对同一音频,进行压缩对比后的结果。


文件类型 格式 码率 大小 音质变化程度
原文件 mp3 52.9M 不明显
第三方 mp3 192kbps 31.7M 不明显
测试1 mp3 192kbps 31.8M 不明显
测试2 acc 192kbps 32.1M 不明显
测试3 mp3 128kbps 21.2M 不明显
测试4 acc 128kbps 21.5M 不明显
测试5 mp3 96kbps 15.9M 不明显
测试6 acc 96kbps 16.3M 不明显
测试7 mp3 64kbps 10.7M 高音消失,高音稍微变化
测试8 acc 64kbps 11.0M 稍微有变化,可以忽略
测试9 mp3 32kbps 5.4M 音调色音调变化明显
测试10 acc 32kbps 5.50M 音质变化可听出
测试11 mp3 20kbps 3.4M 声音变化明显,声音变低沉
测试12 acc 20kbps 3.50M 音质相对变差,稍有影响

  1. 现在我们讲解下表格,有表格可以看出,我们现场录制的22分钟原文件的mp3大小是52.9M,这个体积已经很大了。

  2. 第三方压缩提供个我们线上的mp3大小是31.7M。(ps:其实也不小)

  3. 那我自己用软件压缩,不同的码率,压缩后,体积依次减小。

  4. 现在可以看出,我们52.9M的文件可以被压缩到3.4M

那么问题来了,我们为什么不直接压缩到3.4M呢,这样体积小,加载快,省流量,省时间。其实问题很简单,小体积,音质差啊,不能让用户听音质太差的音频啊。那什么是合理区间呢?

下面我们看看mp3压缩后,图谱变化:

  • MP3:192kbps:如图发生范围超过10KHz,高音区保存完整。


    192kbps的mp3图谱

  • MP3:128kbps:如图发生范围超过10KHz,高音区保存完整,看不错区别。


    128kbps的mp3图谱
  • MP3:64kbps:我们跳过96kbps,直接看64kbps,如图发生范围超过10KHz,高音区部分丢失,10KHz的地方有一条齐齐的线,有点像小草苗被割草机去掉了头,长的高的,脑袋没有了,如果看不清,请看下面20kbps的。


    这里写图片描述
  • MP3:20kbps:如图发生范围超过10KHz,高音区失去了,在4kHz的以上的频率全部被舍弃,保留了4KHz以下的音频信息,这个更像被割过的小草吧,脑袋一个不剩,齐刷刷的。被割去的就是高音部分,所以听着声音是低沉的,高音不存在了。


    这里写图片描述

看完了mp3的,我们来看看aac的把,

  • AAC:192kbps:如图10KHz左右都保存完好,音质无变化。


    这里写图片描述
  • AAC:64kbps:如图我们跳过128kbps,96kbps,直接到64kbps,还记得我们MP3的64kbps吗?MP3在10KHz以上的部分有失去信息,而AAC保存了下来。


    这里写图片描述
  • AAC:20kbps:如图我们跳到了20kbps,高音区忍让有所保留,所以音质变化不太明显,相比MP3的变化就很明显,因为失去了大量的高音区。


    这里写图片描述

那么为什么回事这样的,这个与MP3和AAC的压缩算法有关,压缩,一定是要失去一部分信息的,也就是我们把192kbps的信息在单位时间内压缩到20kbps,也就是我们所说的码率懂192降到了20,所以我们文件的体积从30M减少到了3M多,码率降低10倍,体积也降低10倍。码率降低一定是会失去音频写的的信息的,但是因为压缩算法不同,抛弃的信息就不同。那aac在压缩10倍后,音质是不是没有变差,不是的,音质也差了,但是相比MP3不是那么明显。如果用耳朵去听,64kbps的AAC和92kbps的音质区别,很难分辨出来,或者说分辨不出。

那么如果你是听音乐,为了更好的听觉体验,建议192kbps-128kbps的文件,当然再大点也没问题。这样可以尽量保存完整的低音和高音信息,可以带来更好的听觉体验。不建议使用128kbps以下的MP3或者AAC,或丢失音乐信息。

那么演讲或者课程类的语言文件呢?这个要看人所能听到的频率范围。那一个人能听到的频率范围是多少呢?

28岁时,22——17000Hz
40岁时,25——14000Hz
60岁时,35——11000Hz

可以看出一个人能听到的频率是在:20 ---20KHZ,所以我们10kHz左右的信息是不可以失去的,如果大量失去,我们就能感知到。

结论

我们说了这么多,总要有个结论吧,对于我们APP而言,是在线语音课程,所以我们两者都要兼顾,要文件尽可能小,并且要保真音质不会发生明显变化,我们确定选择64kbps的AAC文件作为我们播放的格式。这个参数下,我们的音频课程音质变化不明显,音质可以兼顾到,提交从50M的原文件被压缩到了10M,相当于2分钟的音乐用1M的大小,这样大大节省了用户的流量。并最大可能保证音质。(ps:如果你们觉得只要音质不保险,那96kbps,最够保险了;如果是MP3,那就用96kbps吧,如果质量优先,体积第二,那就128kbps吧)