全部博文(346)
分类:
2011-07-08 09:25:27
简单的入门说明。
音频视频编码及文件格式(容器)是一个很庞大的知识领域,完整的说清楚,那就需要些写成一本教材了。这
里先就几个简单的概念问题作以介绍:
首先要分清楚媒体文件和编码的区别:
文件是既包括视频又包括音频、甚至还带有脚本的一个集合,也可以叫容器;
文件当中的视频和音频的压缩算法才是具体的编码。
也就是说一个.avi文件,当中的视频可能是编码a,也可能是编码b,音频可能是编码5,也可能是编码6,具体
的用那种编码的解码器,则由播放器按照avi文件格式读取信息去调用了。
编码介绍:
音频视频编码方案有很多,用百家争鸣形容不算过分,目前常见的音频视频编码有以下几类
MPEG系列:(由ISO[国际标准组织机构]下属的MPEG[运动图象专家组]开发 )
视频编码方面主要是Mpeg1(vcd用的就是它)、Mpeg2(DVD使用)、Mpeg4(现在的DVDRIP使用的都是它的变种,如:divx,xvid等)、Mpeg4 AVC(现在正热门);
音频编码方面主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(大名鼎鼎的mp3)、MPEG-2 AAC 、MPEG-4 AAC等等。 注意:DVD音频没有采用Mpeg的
H.26X系列:(由ITU[国际电传视讯联盟]主导,侧重网络传输,注意:只是视频编码)
包括H261、H262、H263、H263+、H263++、H264(就是MPEG4 AVC-合作的结晶)
微软windows media系列:(公司牛,能自己定标准啊...)
视频编码有Mpeg-4 v1/v2/v3(基于MPEG4,DIVX3的来源,呵呵)、Windows Media Video 7/8/9/10
音频编码有Windows Media audeo v1/v2/7/8/9
Real Media系列:(注意,这里说的Real的编码,可不是rm、rmvb文件,呵呵)
视频编码有RealVideo G2(早期)、RealVideo 8/9/10
音频编码有RealAudio cook/sipro(早期)、RealAudio AAC/AACPlus等
QuickTime系列:(是一个平台,有很多编码器)
视频编码有Sorenson Video 3(用于QT5,成标准了)、Apple MPEG-4、Apple H.264
音频编码有QDesign Music 2、Apple MPEG-4 AAC (这个不错)
其它,如:Ogg、On2-vpx、flash vidio:不详述啦。
特殊说明的,是DVD这种媒介的音频编码,采用了相对独立的几种,就列2个常见的吧:AC3(杜比公司开发)、DTS文件格式(容器):
AVI
音视频交互存储,最常见的音频视频容器。支持的视频音频编码也是最多的。
MPG
MPEG编码采用的音频视频容器,具有流的特性。里面又分为 PS,TS 等,PS 主要用于 DVD 存储,TS 主要用
于 HDTV。
VOB
DVD采用的音频视频容器格式(即视频MPEG-2,音频用AC3或者DTS),支持多视频多音轨多字幕章节等。
MP4
MPEG-4编码采用的音频视频容器,基于QuickTime MOV开发,具有许多先进特性。
3GP
3GPP视频采用的格式,主要用于流媒体传送。
ASF
Windows Media 采用的音频视频容器,能够用于流传送,还能包容脚本等。
RM
RealMedia 采用的音频视频容器,用于流传送。
注意:RMVB,是视频编码部分采用可变码率压缩的文件格式(容器)
MOV
QuickTime 的音频视频容器,恐怕也是现今最强大的容器,甚至支持虚拟现实技术,Java 等,它的变种 MP4,
3GP都没有这么厉害。
MKV
MKV 它能把 Windows Media Video,RealVideo,MPEG-4 等视频音频融为一个文件,而且支持多音轨,支持章节字幕等。
WAV
一种音频容器(注意:只是音频),大家常说的 WAV 就是没有压缩的 PCM 编码,其实 WAV 里面还可以包括 MP3 等其他 ACM 压缩编码。
MP3
如前所述,不用多说了吧?就是MPEG Audio Layer 3(Mpeg 1 的音频编码的一种)
文件转换(实际上也是编码转换)
多媒体容器文件格式
多媒体容器文件格式一般都包括文件头部分、索引部分和多媒体数据部分(如图1所示)。
文件头部分说明了多媒体数据符合的压缩标准及规范信息,多媒体数据符合的规范信息可以包括视频的分辨率、帧率,音频的采样率等。
文件头部分
索引部分
多媒体数据部分
索引部分:由于多媒体数据通常会被分成若干块,各块数据之间也可能是不连续存储的,因此需要再索引部分建立多媒体数据的存储位置索引(如图2所示),其详细显示了视频数据存储位置索引,用来记录相应数据块的存储位置的偏移量,由于各数据块的大小可能不同,因此也可能需要在索引部分建立各种多媒体数据块的尺寸大小索引,用来记录相应数据块的尺寸大小。此外在索引部分还建立了其他索引,比如音视频同步索引等等。PC上播放这些多媒体容器文件时,一般是将索引一次性的全部放到内存中,然后在播放中根据操作(快进、快退等)来通过数据索引得到所需的数据。这个貌似和项目里面的视频信息文件的作用类似~~~
多媒体数据部分就是经过压缩的多媒体数据,包括视频数据、音频数据、文本数据及其他多媒体数据。
视频数据存储位置索引 | 音频数据存储位置索引 |
offset1 | offset1 |
offset2 | offset2 |
...... | ...... |
offsetN | offsetN |