音频相关内容

sample:样本 采样

SampleRate:采样频率 每秒采样的个数 如aac 44.1khz 每秒采样44.1k次(一秒采样44.1k个sample)

BitsPerSample:采样位数 采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。连续的模拟信号按一定的采样频率经数码脉冲取样后,每一个离散的脉冲信号被以一定的量化精度量化成一串二进制编码流,这串编码流的位数即为采样位数,也称为量化精度。既获取用于存储某种音频格式的单个采样的音频信息的位数. 一般音频为16位 既2byte 2个字节.

Channels:声道数 获取这种音频格式所提供的声道数 如aac中一般为2

SamplesPerSecond:这种音频格式所提供的每秒采样数 如aac中一般为44.1k

一段长度为1秒的音频数据占用的存储空间 = 每个声道占用的存储空间 * 声道个数 = (每秒sample个数*每个sample占用的存储空间)*(声道个数)
如 aac 44.1khz 2 channel bitsPerSample 16bit 其一秒占用的存储大小为: 44.1K * 2 * 16bit.

对于AAC编码格式

1024个sample为一个Frame,1024个样本为一个aac帧,对于44.1khz(一秒采样44.1k个sample)的aac音频格式一帧的播放时间是1024/44100(秒)= 23.2ms

对于MP3编码格式

如果为双声道MP3 1152个sample为一个Frame

FFmpeg中相关数据格式

AVPacket: 存储解码前数据(编码数据:H264/AAC等)

AVFrame: 存储解码后数据(像素数据:YUV/RGB/PCM等)存储原始数据(即非压缩数据,视频:YUV,RGB;音频:PCM)
typedef struct AVFrame {

uint8_t *data[AV_NUM_DATA_POINTERS];

//width and height of the video frame
int width, height;

//number of audio samples (per channel) described by this frame
int nb_samples;

} AVFrame;

其中 nb_samples为1frame包含多少个sample既一帧包含多少个样本 对于aac这个值一般为1024 (注意这里是per channel既一个声道)