原创 常见视频文件的编码方式和封装格式

2013-9-6 10:48 1114 12 15 分类: 模拟

本文转自:http://www.hzlitai.com.cn/article/ARM11/CPhelp/1802.html

 

常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件其实只能算是一种封装标准。
一个完整的视频文件是由音频和视频2 部分组成的。H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式。
         例如:将一个Xvid视频编码文件和一个MP3视频编码文件按AVI封装标准封装以后,就得到一个AVI后缀的视频文件,这个就是我们常见的AVI视频文件了。
         由于很多种视频编码文件、音频编码文件都符合AVI封装要求,则意味着即使是AVI后缀,也可能里面的具体编码格式不同。因此出现在一些设备上,同是AVI后缀文件,一些能正常播放,还有一些就无法播放。
        同样的情况也存在于其他容器格式。即使RMVB、WMV等也不例外。部分技术先进的容器还可以同时封装多个视频、音频编码文件,甚至同时封装进字幕,如MKV封装格式。MKV文件可以做到一个文件包括多语种发音、多语种字幕,适合不同人的需要。
         例如:MKV文件只要制作的时候同时加入国语和粤语发音的音轨和对应的简体、繁体字幕,播放的时候,你可以独立选择国语或粤语发音,并根据自己需要选择简体或繁体字幕,也可以选择不显示字幕。相当方便。
         因此,视频转换需要设置的本质就是:A设置需要的视频编码、B设置需要的音频编码、C选择需要的容器封装。一个完整的视频转换设置都至少包括了上面3个步骤。
常用的有Xvid,H264,MPEG1,MPEG2。
Xvid:与RMVB格式差不多的压缩率,通用性很强,特别是用于家用DVD和便携式MP4等设备。

H264:面前压缩率最高的视频压缩格式,与其他编码格式相比,同等画面质量,文件体积最小,远远超过RMVB编码格式,电脑都可以播放,部分便携式视频设备也支持,如苹果播放器。PDA/PPC等设备也可以使用。

MPEG1:其实就是VCD编码格式。

MPEG2:DVD编码格式。比MPEG1强,与MPEG1一样,已经落后的编码格式,压缩率都不高,编码后的文件体积大,多用于希望把网上下载的文件转换为VCD或DVD碟的时候。
 
常见的组合方式
封装容器
视频流编码格式
音频流编码格式
AVI
Xvid
MP3
AVI
Divx
MP3
Matroska(后缀就是MKV)
Xvid
MP3
Matroska(后缀就是MKV)
Xvid
AAC
Matroska(后缀就是MKV)
H264
AAC
MP4
Xvid
MP3
MP4
H264
AAC
3GP
H.263
AAC
 
事实上,很多封装容器对音频编码和视频编码的组合方式放的很开,如AVI还可以使用H264+AAC组合,可以在具体使用中自己体会。尤其是MKV封装容器,基本无论什么样的组合都可以!但一般MKV用的最多的就是H264+AAC组合,此组合文件体积最小,清晰度最高。因此网上很多MKV视频都是高清晰度的。
         从上表格可以看出,真正设置的重点在于音频编码和视频编码,封装容器多数时候只是关系到最后的文件后缀而已。起码初学者可以就这么理解。
PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1634838 2013-11-26 10:15

一起分享

用户1634838 2013-10-30 08:45

分享分享

用户1658524 2013-9-9 16:31

好文,支持一下
相关推荐阅读
用户1634838 2013-11-14 15:05
S3C2440A处理器中文数据手册下载
  较为完整的S3C2440A处理器中文手册压缩包,请点击下载:   s3c2440中文数据手册.rar...
用户1634838 2012-10-31 13:41
android usb流程(转载加整理)
原帖地址:http://www.hzlitai.com.cn/article/ARM11/SYSTEM/Android_USB_develop_lx.html    这是关于USB Mas...
用户1634838 2012-09-26 11:12
Android开发环境搭建(v1.2)
本文转自:http://www.hzlitai.com.cn/article/ARM11/example/android.html  第一章 windows 下搭建过程 一.安装 JDK(...
用户1634838 2012-09-18 13:45
Android HAL 开发 (5)
上一章介绍了直接调用Service来操作硬件的方法,如果我们再优化一下结构,通过一个Manager来调用这个Service的方法,可能会更好。这样Service就可以跑在后台,由于这时候servi...
用户1634838 2012-09-14 11:46
Android HAL 开发 (4)
在上一篇文章中,我们看到了如果在java程序中调用C/C++撰写的函数。而且Android的service已经实现了,下面就要看看应用程序如何调用这个service了,这里用两种方法,我们先介绍简...
EE直播间
更多
我要评论
3
12
关闭 站长推荐上一条 /3 下一条