int av_samples_alloc_array_and_samples( uint8_t ***audio_data, // 通道,data[0]代表左声道,data[1]代表右声道 int *linesize, // 采样个数的最大大小字节空间 int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align );
采样频率 nb_samples
采样频率是指计算机单位时间内能够采集多少个信号样本,比如对于波形记录而言,此时采样频率可以是描述波形的质量标准。
采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的样本数据就越多,对信号波形的表示也越精确。
Hz 是频率的单位,频率是指电脉冲,交流电波形,电磁波,声波和机械的振动周期循环时,1秒钟重复的次数。1Hz代表每秒钟周期震动1次,60Hz代表每秒周期震动60次。
对于一帧音频的采样个数,AAC固定一帧采样1024个,MP3格式则为1152。
采样位数
通常使用16bit(2字节),也就是2的16次方,共有65536个不同的度量值,这样采样位数越高,音频度量化的就越精细,音质同样也就越高
声道数量:channels
声道格式:channel_layout
对音频的声道格式进行转换的处理,例如立体声转换为单声道
声道指的是声音在录制时,在不同的空间位置采集的音频信号,一个声道就是一个音频信号。
声道 | 解释 |
单声道 | 只记录了一个音频信号 |
双声道 | 记录了2个音频信号 |
立体声 | 记录了左右2个音频信号,带有空间位置的双声道 |
如果只有一个麦克风在录制声音,但选择了立体声道,听起来还是单声道的效果,因为两个声道的数据是一样的,只有使用双传声器的麦克风或者2个麦克风同时录制,出来的效果才是立体声,
轨道
声音信号在磁盘上的存储空间,轨道数量≠声道数量
通道
用来描述信号的路径,声道一般针对音频,通道一般针对视频
采用精度
声音的范围
1 一帧音频的大小(字节) = 通道数 x 采样个数 x 采样位数
音频帧是FLTP格式的PCM数据,
那么就是aac,所以一帧中包含1024个采样个数,并且是双声道的话,那么该音频帧包含的数据量是 2 x 1024 x 4 = 8192字节。
音频帧是AV_SAMPLE_FMT的PCM数据 那么采样位数是64位8字节,数据量为 2 x 1024 x 8 = 16384字节。