1. 音频采样
与视频不同,音频的最小单位不是一帧,而是一个采样。
采样是当前一刻声音的声音样本,样本需要经过数字转换才能存储为样本数据。
真实声音是连续的,但是在计算机中,声音是离散且均匀的声音样本。
2. 位深度
数字转换时会根据位深度转换,位深度就是存储单个样本数据的大小,位深度越大,记录的样本数据精度就越高。
网络视频、音频文件一般位深度为 16bit,常用位深度还有 8bit、24bit 等。
这里需要一提的是,位深度越大虽然意味着声音还原度越高,但是过高的位深度,如 32bit、64bit 或以上,可能需要特殊的软件和硬件设备才能播放。
3. 声道
音频有单声道、双声道、立体声等。
每个声道的声音样本都会单独记录,一般双声道的采样数是单声道的两倍,多声道同理。
多个声道的样本数据一般会按声道排列顺序记录,播放时,程序会根据排列顺序将声音用不同的扬声器播放。
4. 采样率
采样率是采样的频率,与视频的帧率类似,是一秒钟对声音的采样个数,如果是双声道,那么 1 秒采样的个数是采样率的两倍,多声道同理。
普遍认为,流畅且不失真的音频,要求采样率达到 40KHz 以上,这个采样率是人类听觉频率上限的两倍,一般 CD 品质音频的采样率是 44.1KHz,网络视频、视频文件一般是 48KHz。
常见的音频采样率:1. 8KHz 音频通话或监控2. 22.05KHz\24KHz FM 调频广播3. 44.1KHz CD 品质4. 48KHz 一般网络电影或视频
5. 单个音频帧
理论上,音频并不需要音频帧的概念,因为音频采样数据和采样率已经可以把音频播放描述清楚了。
但是音视频文件播放时,为了保证音视频同步,程序需要根据每帧的播放时间戳进行有序播放。
但是每个音频采样数据太小了,如果每个采样数据都记录播放时间戳的话,那么就得不偿失了。毕竟一个时间戳数据的大小比一个音频采样数据都大,所以就有了音频帧的概念。
音频帧实际上就是把一小段时间的音频采样数据打包起来,如每20ms的音频采样数据合并成一帧。
这里的具体时间间隔是具体编码码格式决定的,一般不需要特别关心。
和视频帧一样,每一帧音频帧也会记录播放时间戳 PTS,程序播放时会根据播放时间戳 PTS 播放音频帧。
音频帧的播放是比较特别的,因为一帧音频包含的是一小段时间的音频采样,所以实际上音频帧的播放时间戳只是这一小段音频的开始播放时间,里面的采样数据会根据采样频率连续播放。
6. 码率
音频码率,也就是常听到的音频比特率,码率就是一秒钟的数据量大小。
在不压缩的情况下,音频码率的大小=采样率位深度声道数。
7. 编码格式
编码格式实际上是压缩数据的方式,常用的编码格式有 wav、mp3、aac 等,音频编码格式有有损、无损压缩之分。
mp3、aac 这些编码格式是有损压缩,其中mp3支持的最大码率是 320Kbps,而 wav 编码格式是无损压缩,虽然压缩后的码率可能会比降低,但是它在播放时能无损还原采样数据。
最后值得一提的是,在网络音频文件、音频直播时,需要考虑限制码率,限制码率的目的是为了限制数据量的大小,避免带宽、流量等问题。
音频编码格式一般采用 aac,音频码率一般设置为 128Kbps 就可以了。