采样率,采样精度 常见44.1kHz,48kHz的采样率,也就是采样频率,物理意义就是一秒钟对音频采样的次数。由于人耳分辨的频率范围是20Hz~20KHz,根据奈奎斯特采样定理,需要40KHz来保证不失真。 采样精度是指每一次采样的数据精度,比如常见的16bits,或者粗糙一些的8bits。 音频raw data 类似视频里dump出来的yuv,音频的rawdata是多个声道交替排列的数据,以2声道,采样精度16bits的音频为例,rawdata即: L(16bits), R(16bits), L(16bits), R(16bits), ... 音频本身是时间连续的,所以本身不像视频帧的概念。 音频帧,一帧音频的时间 在codec里由于和视频同步,为了打pts,需要摄入音频帧的概念。首先看音频播放时间duration和音频sample个数以及sample rate之间的关系。 audio_duration = num_samples / sample_rate 一个音频帧的播放长度,由这个音频帧的sample个数来决定。对于aac来说,一个音频帧长度为1024,这是由于aac采用的1024个点的mdct,由标准决定。 那么,假设sample rate = 48KHz,精度16bits,2声道,一帧aac音频时长为: audio_duration = 1024 / 48000 = 0.0213s (= 21.3ms) 一帧播放输出的非压缩音频大小,也可以理解为pcm数据大小(不含header) raw data size = 2(声道) * 2(16bits) * 1024 = 4096 bytes 然而并非所有音频标准都是基于1024个采样点为一帧的,比如ac3。所以不同音频标准中的音频帧大小未必一样,需要根据实际情况来分析。 |