音视频学习从零到整--(2)
作者:CC老师_HelloCoder
原文地址:https://www.jianshu.com/p/e2a63dfcff1a
音频编码
一.为什么要做音频编码?
之前的文章中,我带着大家来计算过CD音质的数据采样,每分钟需要存储空间约为10.1MB.从存储的角度或者网络实时传播的角度.这个数据量都是太大了.对于存储和传输都是非常具有挑战的.所以我们需要通过压缩编码
压缩编码的可能性
压缩编码的基本指标就是压缩比,压缩比通常小于1(如果等于或者大于1,是不是就失去的压缩的意义了,压缩目的就是为了减少数据体量).压缩算法分为2种,有损压缩和无损压缩.
- 无损压缩:解压后的数据可以完全复原.在常用的压缩格式中,用的较多的都是有损压缩.
- 有损压缩:解压后的数据不能完全复原,会丢失一部分信息.压缩比越小,丢失的信息就会越多,信号还原的失真就会越大.
需要根据不同的场景(考虑因素包括存储设备,传输网络环境,播放设备等),可以选用不同压缩编码算法.
压缩编码的原理实际上就是压缩冗余的信号.冗余信号就是指不能被人耳感知的信号.包括人耳听觉范围之外的音频信号以及被掩盖掉的音频信号.
- 拓展小课堂
人耳掩盖效应
- 主要表现在频域掩盖效应与时域掩盖效应.无论是在时域还是频域上,被掩盖掉的信息都认为是冗余信息,不进行编码处理
- 掩蔽效应指人的耳朵只对最明显的声音反应敏感,而对于不明显的声音,反应则较不为敏感。例如在声音的整个频率谱中,如果某一个频率段的声音比较强,则人就对其它频率段的声音不敏感了。应用此原理,人们发明了mp3等压缩的数字音乐格式,在这些格式的文件里,只突出记录了人耳朵较为敏感的中频段声音,而对于较高和较低的频率的声音则简略记录,从而大大压缩了所需的存储空间。在人们欣赏音乐时,如果设备对高频响应得比较好,则会使人感到低频响应不好,反之亦然。
常用压缩编码格式
WAV编码
WAV编码的一种实现方式(其实它有非常多实现方式,但都是不会进行压缩操作).就是在源PCM数据格式的前面加上44个字节.分别用来描述PCM的采样率,声道数,数据格式等信息.
- 特点:音质非常好,大量软件都支持其播放
- 适合场合:多媒体开发的中间文件,保存音乐和音效素材
MP3编码
MP3编码具有不错的压缩比,而且听感也接近于WAV文件,当然在不同的环境下,应该调整合适的参数来达到更好的效果.
- 特点:音质在128Kbit/s以上表现不错,压缩比比较高.大量软件和硬件都支持.兼容性高.
- 适合场合:高比特率下对兼容性有要求的音乐欣赏.
AAC编码
AAC是目前比较热门的有损压缩编码技术,并且衍生了LC-AAC,HE-AAC,HE-AAC v2 三种主要编码格式.
- LC-AAC 是比较传统的AAC,主要应用于中高码率的场景编码(>= 80Kbit/s)
- HE-AAC 主要应用于低码率场景的编码(<= 48Kbit/s)
- 特点:在小于128Kbit/s的码率下表现优异,并且多用于视频中的音频编码
- 适合场景:于128Kbit/s以下的音频编码,多用于视频中的音频轨的编码
Ogg编码
Ogg编码是一种非常有潜力的编码,在各种码率下都有比较优秀的表现.尤其在低码率场景下.Ogg除了音质好之外,Ogg的编码算法也是非常出色.可以用更小的码率达到更好的音质.128Kbit/s的Ogg比192Kbit/s甚至更高码率的MP3更优质.但目前由软件还是硬件支持问题,都没法达到与MP3的使用广度.
- 特点:可以用比MP3更小的码率实现比MP3更好的音质,高中低码率下均有良好的表现,兼容不够好,流媒体特性不支持.
- 适合场景:语言聊天的音频消息场景
总结
简单介绍了为什么需要做音频编码?音频压缩编码的可能性来自哪里?音频的数据冗余信息以及压缩编码格式的使用场景.