音频原始数据格式
PCM:纯粹的音频数据,没有任何格式
WAV:既可以存储原始数据(PCM),也可以存储压缩数据,大多数情况下是用WAV来存原始数据
注:WAV就是在PCM的基础上套了一个“头”
量化的基本概念
采样大小:应该采样用多少bit存放,常用的是16bit
采样率:比较常见的采样频率:8k、16k、32k、44.1k、48k
注:采样率越高,数字信号与模拟信号越接近,误差越小,采样率越低,一些敏感的信息就会被忽略掉,通常打电话都是8k的采样率(有一定的失真)
声道数:单声道、双声道、多声道(立体声)
注:不同声道的声音可以相同,也可以不同。
音频重采样
音频重采样:将音频三元组(采样率、采样大小、通道数)的值转为另外一组值。如:将44100/16/2转为48000/16/2
为什么要重采样?
答:
1.从设备采集的音频数据与编码器要求的数据不一致
2.扬声器要求的音频数据与要播放的音频数据不一致
3.方便运算
如何知道是否要进行重采样?
答:
1.要了解音频设备的参数
2.查看ffmpeg源码
重采样的步骤:
1.创建重采样上下文
2.设置相关的参数
3.初始化重采样
4.进行重采样
几个重要的API
1.swr_alloc_set_opts(功能:创建重采样上下文,并设置相关参数)
2.swr_init(功能:初始化重采样)
3.swr_convert(功能:具体对音频帧的转换)
4.swr_free(功能:将上下文所占用的资源释放掉)
码率计算
一个PCM音频流的码率等于:采样率X采样大小X声道数
例如:采样率为44.1KHz,采样大小为16bit,双声道的PCM编码为WAV文件,则它的码率为:44.1KHzX16X2=1411.2Kb/s
WAV头格式
注:紫色部分为RFF字符串,内含数据块大小与格式,其中格式为fmt或data。若为fmt,则后面的数据为解释fmt的信息:声道数、采样率、块的按照几个字节对齐的(BlockAlign,其数值一般为偶数)、采样率的字节数(ByteRate:每个采样的大小除以8)、采样大小等信息;若为data,则为数据部分。