[✔️]音视频基础知识

85 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 26 天,点击查看活动详情

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字节。