当我在学习Cocoa Audio Queue
文档时,我在音频编解码器中遇到了几个术语。在名为AudioStreamBasicDescription的结构中定义。
以下是条款:
1.采样率
2.包
3.框架
4.频道
我知道sample rate
和channel
。我是如何被其他两个混淆的。其他两个术语是什么意思?
您也可以通过示例回答这个问题。例如,我有一个双通道PCM-16信号源,采样率为44.1kHz,这意味着每秒有2 * 44100 = 88200字节的PCM数据。但packet
和frame
怎么样?
提前谢谢你!
答案 0 :(得分:10)
您已熟悉采样率定义。 采样频率或采样率fs定义为在一秒内获得的样本数(每秒采样数),因此fs = 1 / T. 因此,对于44100 Hz的采样率,您每秒有44100个采样(每个音频通道)。
视频中每秒的帧数与音频中每秒的采样数相似。我们眼睛的框架,耳朵的样品。其他信息here。
如果您有16位深度立体声PCM,则意味着您有16 * 44100 * 2 =每秒1411200位=> ~172 kB /秒=>每分钟大约10 MB。
来自Apple的reworded terms中的定义:
Sample: a single number representing the value of one audio channel at one point in time.
Frame: a group of one or more samples, with one sample for each channel, representing the audio on all channels at a single point on time.
Packet: a group of one or more frames, representing the audio format's smallest encoding unit, and the audio for all channels across a short amount of time.
正如您所看到的,音频和视频帧概念之间存在细微差别。在一秒钟内,您可以获得44.1 kHz的立体声音频:88200个样本,因此44100帧。
MP3和AAC等压缩格式在数据包中打包多个帧(这些数据包可以用MP4文件写入,例如可以与视频内容高效交错)。您了解处理大数据包有助于识别位模式以提高编码效率。
例如,MP3使用1152帧的数据包,这是MP3流的基本原子单位。 PCM音频只是一系列样本,因此它可以分为单独的帧,它实际上根本没有数据包大小。
对于AAC,每个数据包可以有1024(或960)个帧。您在指向的Apple文档中对此进行了描述:
音频数据包中的帧数。对于未压缩的音频,值为1.对于可变比特率格式,该值是较大的固定数,例如对于AAC为1024。对于每个数据包具有可变帧数的格式,例如Ogg Vorbis,请将此字段设置为0。
在基于MPEG的文件格式中,数据包被称为数据帧(不是 混合了以前的音频帧概念)。有关该主题的更多信息,请参阅Brad评论。