对于下面data和linesize的解释(参考下面3.4中的av_samples_alloc_array_and_samples函数说明):
- data是通道的意思,例如双通道,data[0]代表左声道,data[1]代表右声道。
- linesize为采样个数的最大大小字节空间。
- 例如aac,64位,双通道,则对于交错模式最大为:linesize = 2 x 1024 x 8 = 16384。此时也是一个音频帧的大小。
- 对于平面模式最大为:linesize = 1024 x 8 = 8192,平面模式时会有多个平面通道,例data[0],data[1],注意,断点看时参不一定是最大大小字节空间数,此时linesize不代表什么,他只是代表单个通道的所有样本数所占的字节数。
- 额外注意,已经写入的音频文件是交错模式,而FFmpeg库默认是平面模式处理的,所以将音频文件读到内存使用FFmpeg处理时需要转成平面模式;同理FFmpeg写入文件需要转成交错模式再写入。
一、音频通道数、采样率、采样个数(样本数)、采样位数的概念
1 通道数: 个人理解,就是同时有个几个设备在进行音频的采样,这样对上面的公式更好理解,最少为1,一般通道数越多,音质越好。
2 采样频率: 也称为采样速度,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。
3 采样位数(采样格式)ÿ