AV Foundation ③ 音频的采样与编码
音频采样
我们都知道,当我们听到声音时,其实是声波通过一定介质传播过来的振动。声波的三要素,是频率,振幅,波形.频率代表音阶的高低,振幅代表响度,波形则代表音色。每一种声音都是特定频率和振幅的振动。声音总可以被分解为不同频率不同强度的叠加。这种变换(或分解)的过程,称为傅里叶变换。因此,一般的声音总是包含一定的频率范围。人类可以听到的音频范围是 20 Hz ~ 20 kHz。
音频数字化过程中采样或测量一个固定的音频信号,过程的周期率被称为采样率。由于低采样率的数字信号无法很好表示原始数据,根据采样定理,按比声音最高频率高2倍以上的频率(我们称为奈奎斯特频率),对声音进行采样,这个过程称为AD转换。
音频量化
音频量化就是将模拟声音的波形转换为数字,表示采样值的二进制位数决定了量化的精度。量化的过程是先将整个幅度划分成有限个小幅度(量化阶距)的集合,把落入某个阶距内的样值归为一类,并赋予相同的量化值。
例如,CD 音频信号就是按照 44.1 kHz 的频率采样,刚好高于人类可以听到音频范围最大值 20 kHz 的一倍,按 16 比特量化为有着 个可能取值的数字信号。
音频编码
音频数字化的过程包含一个编码方法,称为线性脉冲编码调制(linear pulse-code modulation)。如果想要描述一份 PCM 数据,需要从如下几个方向出发:
- 量化格式(sampleFormat)
- 采样率(sampleRate)
- 声道数(channel)
比如,以 CD 音频为例,量化格式为 16 Bit,采样率为 44.1 kHz,声道数为 2,则 比特率为 ,每分钟 CD 音质数据需要占用 存储空间。
音频编解码器压缩
大部分音频都是使用编解码器来压缩的,有损音频编解码器为这一形式的压缩使用基于人类可感知的高级压缩算法。比如即使人类可以理论上听见介于 20 Hz ~ 20 kHz 之间的声音,但我们可能真正敏感的频率区间是 1kHz ~ 5kHz。
我们可以利用过滤技术减少或消除特定频率,只突出记录了人耳朵较为敏感的中频段声音,而对于较高和较低的频率的声音则简略记录,从而大大压缩了所需的存储空间,这只是众多方法中的一种,目的是消除冗余的信号。冗余信号就是指不能被人耳感知的信号,包括人耳听觉范围之外的音频信号以及被掩盖掉的音频信号。
只要是 Core Audio 框架支持的音频编解码,AV Foundation 都可以支持,这意味着 AV Foundation 能够支持大量不同格式的资源。
WAV编码
WAV 编码的一种实现方式(其实它有非常多实现方式,但都是不会进行压缩操作)。就是在源 PCM 数据格式的前面加上 44 个字节,分别用来描述 PCM 的采样率,声道数,数据格式等信息.
- 特点:音质非常好,大量软件都支持其播放
- 适合场合:多媒体开发的中间文件,保存音乐和音效素材
MP3编码
MP3 编码具有不错的压缩比,而且听感也接近于 WAV 文件,当然在不同的环境下,应该调整合适的参数来达到更好的效果。
- 特点:音质在 128Kbit/s 以上表现不错,压缩比比较高,大量软件和硬件都支持,兼容性高。
- 适合场合:高比特率下对兼容性有要求的音乐欣赏。
Core Audio 仅支持对 MP3数据解码的支持,不支持对其进行编码。
AAC编码
AAC 是目前比较热门的有损压缩编码技术,并且衍生了 LC-AAC、HE-AAC、HE-AAC v2 三种主要编码格式。是 H.264 标准相应的处理方式,这种格式相对比 MP3 有着显著的提升,可以在低比特率的前提下提供更高质量的音频。
- LC-AAC 是比较传统的 AAC,主要应用于中高码率的场景编码(>= 80Kbit/s)
- HE-AAC 主要应用于低码率场景的编码(<= 48Kbit/s)
- 特点:在小于 128Kbit/s 的码率下表现优异,并且多用于视频中的音频编码
- 适合场景:于 128Kbit/s 以下的音频编码,多用于视频中的音频轨的编码