编解码的具体格式
音频格式——WAV
WAV是微软公司开发的一种声音文件格式,在多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的,每个WAV文件的头四个字节就是“RIFF”。WAV文件由文件头和数据体两大部分组成,其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分,文件头中还包含了音频流的编码参数。
WAV文件是非常简单的一种RIFF文件,它的格式类型为“WAVE”。RIFF块包含两个子块,这两个子块的ID分别是“fmt”和“data”。其中“fmt”子块由结构PCMWAVEFORMAT所组成,其子块的大小就是sizeof(PCMWAVEFORMAT),数据组成就是PCMWAVEFORMAT结构中的数据。
WAV——文件格式
WAV——RIFF
每一个WAV文件的头四个字节必须是“RIFF”,并且是以小端格式存储,另外我们还能看到区块ID和WAV区块大小等等。
WAV——Fmt
格式区块定义了WAV数据的格式。
WAV——Fact
所有PCM格式的WAV必须有一个Fact区块,一般当WAV文件由某些软件转换而成,它必须至少标明每个通道包含多少个字节参数。
WAV——Data
WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式如下所示:
音频解码格式之一——MP3
MP3是一种音频压缩技术,将音乐以1:10甚至1:12的压缩率,压缩成容量较小的File,换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度,而且还非常好的保持了原来的音质。
MP3也是一个数据压缩格式。它丢弃掉脉冲编码调剂(PCM)音频数据中对人类听觉不重要的数据,从而达到了小得多的文件大小。在MP3中使用了许多技术其中包括心理声学以确定音频的哪一部分可以丢弃。MP3音频可以按照不同的位速进行压缩,提供了在数据大小和声音质量之间进行权衡的一个范围。
MP3——标准
MP3主要应用到MPEG的MPEG-1和MPEG-2两个音频压缩标准。
MP3——格式特点
1. MP3是一个数据压缩格式。
2. 它丢弃掉脉冲编码调制(PCM)音频数据中对人类听觉不重要的数据,从而达到了小得多的文件大小。
3. MP3音频可以按照不同的位速进行压缩,提供了在数据大小和声音质量之间进行权衡的一个范围。MP3格式使用了混合的转换机制将时域信号转换成频域信号。
4. 32波段多相积分滤波器(PQF)。
5. 36或者12tap改良离散余弦滤波器(MDCT);每个子波段大小可以在0……1和2……31之间独立选择。
6. MP3不仅有广泛的用户端软件支持,也有很多的硬件支持,比如便携式媒体播放器(指MP3播放器)DVD和CD播放器。
MP3——文件结构
MP3文件大体分为三部分:TAG_V2(ID3V2),Frame,TAG_V1(ID3V1)
MP3——ID3V1
ID3V1标签用来描述MPEG音频文件,包含艺术家、标题、唱片集、发布年代和流派。另外还有额外的注释空间,位于音频文件的最后,固定为128字节,可以读取改文件的最后这128字节获得标签。
MP3——ID3V2
ID3V2到现在一共有4个版本,但流行的播放软件一般只支持第3版,即ID3V2.3。每个ID3V2.3的标签都由一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息,如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧都不是必要的,但每个标签至少都要有一个标签帧,标签头和标签帧一起顺序存放在MP3文件的头部。
在文件的头部顺序记录10个字节的ID3V2.3的头部。
标志字节:标志字节一般为0,定义如下:abc00000
a- 表示是否使用unsynchronisation,一般不设置
b- 表示是否有扩展头部,一般没有
c- 表示是否为测试标签
标签大小:一共四个字节,但每个字节只用7位,最高位不使用,恒为0,计算大小时要将0去掉,得到一个28位的二进制数,就是标签大小。
标签帧:每个标签帧都有一个10个字节的帧头和至少一个字节的不固定长度的内容组成。它们也是顺序存放在文件中,和标签头和其他的标签帧也没有特殊的字符分隔。只有从帧头中得到内容大小后,才能得到一个完整的帧的内容,读取时要注意大小,不要将其他帧的内容或帧头读入。
MP3——音频帧格式
一个MPEG音频文件是许多的称为帧的较小部分组成的,通常,帧是独立的组成部分,每一帧都拥有自己的头和音频信息,没有文件头。
帧头格式:帧头是由每一帧的前4个字节组成。帧头的前11比特总是固定的称作“帧同步”。因此,可以在整个文件中查找第一个帧同步,然后读取整个头检查值是否正确。
下面是一个头内容图示,使用字符A到M表示不同的区域,在表格中可以看到每一区域的详细内容。
比特率索引表
采样频率表:
除了上面这种固定比特率的音频帧之外,还有一种可变比特率的MP3 Xing格式。
(一) Xing格式
对于大多数的VBR文件都加了此头,但并不全是。此头位于MPEG音频头后面的某个特定位置,包好了此XING头的第一个帧,其后的数据是空的,所以即使解码器没有考虑到此头,也可以正常处理此帧,对于Layer 3的文件来说,比如常见的MP3,此VBR放在边信息之后。
帧长度和帧大小的区别:
帧大小:是每帧采样数,表示一帧中采样的个数,这是恒定值,其值如下表所示:
帧长度:是压缩时每一帧的长度,包括帧头,它将填充的空位也计算在内。Layer 1的一个空位长4字节,Layer 2和Layer 3的空位是1字节,当读取MPEG文件时必须计算该值以便找到相邻的帧。
MP3——音频帧持续时间
对于计算帧时间,有两种情况:
固定比特率(CBR):
用如下两个公式可以计算MP3的播放时间,以秒为单位:
1. 总播放时间=文件大小÷比特率x 8
2. 总帧的播放时间=每帧比特率/采样频率
对于CBR的文件,可以用上面的公式,通过第一帧,算出整个文件的播放时间。
可变比特率(VBR):
我们可以通过VBR的头文件找到总的帧数,然后通过下面公式计算总的播放时间
VBR文件播放总时间=总的帧数x 每一帧的采样个数÷采样率
音频之WMA
WMA是微软公司推出的一种音频格式,在较低的采样频率下能产生较好的音质。
现在WMA有四种不同码率或者格式:
1. 原始的或者基本的WMA格式,它和MP3的压缩方式相似。
2. 专业WMA,它是一种新的和专业的编解码,支持多通道和高音频质量。
3. Lossless codec是微软开发的一种CD音频无损格式,能够使得还原出的声音与CD一模一样,而相同时间的数据量仅仅是CD的一半左右,一半码率在720~890之间。
4. WMA Voice,主要应用于对话一些比较低比特率的场景。
WMA——文件格式
WMA的文件头信息
WMA文件的基本组织单位叫做对象,WMA文件宏观上由三个顶级对象组成:
1. 头对象:
2. 文件属性对象
3. 头扩展对象
4. 流属性对象
5. 数据对象
音频之AAC
AAC是新一代的音频有损压缩技术,它通过一些附加的编码技术,衍生出了LC-AAC,HE-AAC,HE-AACv2三种主要的编码,LC-AAC就是比较传统的AAC,相对而言,主要用于中高码率,HE-AAC主要用于中低码,而HE-AACv2主要用于低码率。
AAC共有9中规格,以适应不同的场合需要: