Xvid和H.264完全对比及MeGUI压mp4格式AVC的方法.doc_第1页
Xvid和H.264完全对比及MeGUI压mp4格式AVC的方法.doc_第2页
Xvid和H.264完全对比及MeGUI压mp4格式AVC的方法.doc_第3页
Xvid和H.264完全对比及MeGUI压mp4格式AVC的方法.doc_第4页
Xvid和H.264完全对比及MeGUI压mp4格式AVC的方法.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

Xvid和H.264完全对比及MeGUI压mp4格式AVC的方法.doc.doc 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

首先简单介绍一下MPEG是什么: MPEG是Motion Picture Expert Group的缩写,简单讲就是个行业里的组织,专门对数字内容做出业界规范的组织。其实从MPEG1开始我们就广泛认识到这个组织和他们的标准了。VCD就是其中最主要的代表。在当时亚洲国家VCD格式十分流行,如果没记错VCD这个具体的格式是从日本而来的,并遵守MPEG1规格。 之后便是MPEG2,具体代表是DVD。知道现在都是主流数码格式。 说道这里大家应该开始明白MPEG这个组织其实他的责任就是推广每一代新的数字媒体规范或是规格,而不是实际的产品。换句白话就是说,政府来规定符合什么样标准的汽车可以上路,然后各个汽车公司按照这个具体的标准来制作自己的汽车,通过政府规定的汽车才可以上路。张三李四都可以开发自己符合mpeg规格的codec和container(这个是什么我之后会解释),并且理论上拿到别人同样按照这个规格开发的产品上照样可以工作。具体例子就好比制作DVD的方法千千万万,好莱坞用来做大片,个人也可以把自家拍的DV刻成DVD。理论上讲都可以在放在任何DVD机里播放(这里不考虑个别不兼容问题)。这也是为什么明明XVID编码的dvdrip大家用ffdshow也可以照样看。所以说这就是规格统一的好处! 我们要讨论Xvid 和H.264同属于MPEG4格式。从名字就可以看出来她是高于MPEG1、2的新一代数字媒体格式 具体规格如下: - ISO 14496-1 (Systems) - 户动界面(有点像DVD里的菜单) - ISO 14496-2 (Video) - ASP(Advanced Simple Profile)就是其中一种,代表产品有Xvid,px5等等。 - ISO 14496-3 (Audio) - AAC (Advanced Audio Codec)。 - ISO 14496-10 (Video) - Advanced Video Coding (AVC),也被叫做H.264。代表产品有x264。(看好这里,不要把h.264和x264搞混了,一个是规格的名字,一个是开源代码的兼容编码器,一个有一点,一个没有一点) - ISO 14496-14 (Container) - 文件格式,后缀名为.MP4。这个MP4规格唯一官方指定的格式。 - ISO 14496-17 (Subtitles) - 字幕。 AVC/H.264 是MPEG-4 标准所定义的最新,同时也是技术含量最高、代表最新技术水平的视频编码格式之一。 AVC/H.264 视频编码由ISO(International Organization for Standardization) 的MPEG (Moving Pictures Experts Group)和ITU(International Telecommunication Union) 的VCEG(Video Coding Experts Group) 两个组织于2003 年最终定稿。 而AVC/H.264 标准本身则是由包括来自MPEG 和VCEG 专家的Joint Video Team(JVT)开发。 ISO 14496-10 (Video) - Advanced Video Coding (AVC) 从MPEG 的角度来说,这个标准叫做MPEG-4 Part10(ISO 14496-10),从ITU 的角度来说,这个标准叫做H.264(ITU 文档编号)。作为这个标准的“官方名称”,Advanced Video Coding(AVC)是MPEG 由Advanced Audio Coding(AAC)这个音频格式的视频副本确定的。 AVC/H.264 Profiles AVC/H.264 规定了多种不同的Profile:最低Profile、主要Profile、扩展Profile、高端Profile(这些Profile 本身还要划分数个等级)。 -最低Profile,也叫做底线Profile(Baseline Profile)支持I/P 帧,只支持无交错(Progressive)和CAVLC; -扩展Profile(Extended Profile)支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;-主要Profile(Main Profile)提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),同样提供对于CAVLC 和CABAC 的支持; -高端Profile(High Profile,也叫FRExt)在主要Profile 的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式(如4:4:4)。 或许只有在将来才能知道哪些Profile 或哪些功能会成为DVDRIP 的主流,但是我猜想会是Main 或是High Profile,包含下面的一些功能:( 这里你可以不必看)CAVLC/CABAC Loop/Deblocking Filter Variable Block Sizes/Macroblock Partitions (可变区块尺寸/ 微块分割)Multiple Reference Frames (多重参照帧) Weighted Prediction (权重预测) Rate Distortion Optimisation (RDO ,评价变化优化)AVC profile的设置主要是针对兼容性的,一些特定的硬件播放器需要指定的profile编码才能被识别,具体的例子有PSP,iPOD视频等,他们都有自己指定的profile。PSP是main profile/level 3,其他可能会有兼容性问题,这点切记!要是这些profile已经把你搞糊涂了的话,AVC Level就更多了。level有十来个,每个profile都对应这些level。因此可以有更细致的分类。要是只是准备在自己PC上播放的话,可以不去管这些实际的profile和level,因为pc的好处就是通杀,无所谓。下面来完全对比一下Xvid和H.264,看看到底哪个更有前途 注意测试平台是PC,PSP由于有局限性,所以后面我会给出用MeGui压MP4格式AVC的方法MPEG-4 Video 中包含有2个标准:ISO 14496-2 (Video)和ISO 14496-10 (Video),亦即通常说的 MPEG-4 ASP 和 MPEG-4 AVC。现在来看一下2个不同 Profile 的 Codec 在编码质量上的差别!我分别选了2个开源的Codec:XviD 和 x264进行简单测试尝尝AVC/H.264给我们带来了什么!考虑到动画比较能突出重点细节,且现在很多小孩喜欢看动画,所以先选一段源为動城Chapter 17的动画首先来看看视源的特性,使用XviD q2 的编码作为参考编码参数设置,目标码流设置为 xvid q2 码流的一半,使用2-pass编码xvid-1.2.cvs.2005.12.10QUOTE:VHQ4,Use VHQ for bframes too,BVOPs=2,ratio=1,offset=2,Max I-frame quantizer:2,Quarter Pixel,Global Motion Compensationfile size:37,130 KBY: PSNR: 37.8778 43.1724 49.8913U: PSNR: 37.6963 44.2841 50.6220V: PSNR: 38.1674 44.5764 51.4783Sum: PSNR: 38.3576 43.5519 50.0746x264 core:42 svn-388 + patchsQUOTE:x264.exe -keyint 300 -min-keyint 24 -bframe 3 -b-pyramid -nf -analyse none -weightb -me dia -subme 1 -pass 1 -stats x264_2pass.log -qcomp 0.7 -bitrate 1033 -qpstep 32 -ratetol inf -progress -output NUL -no-psnr -quiet 17.avsx264.exe -keyint 300 -min-keyint 24 -bframe 3 -b-pyramid -ref 16 -nf -analyse all -weightb -me umh -merange 64 -subme 7 -b-rdo -mixed-refs -8x8dct -trellis 2 -no-fast-pskip -pass 2 -stats x264_2pass.log -qcomp 0.7 -bitrate 1033 -qpstep 32 -progress -output 17.mp4 17.avs file size:37,189 KBY: PSNR: 39.8436 44.9354 49.9480U: PSNR: 39.5507 45.5019 51.1331V: PSNR: 39.6453 45.7164 51.4455Sum: PSNR: 39.8308 45.1482 50.0778frames size 图可以看到码流分布情况,所有的图x轴为帧数时间轴,由此可以得知影片时间的大致位置对应的具体情况。图为2帧平均显示compressibility 图显示影片可压缩性,50 parts of 140 framesmotion 运动侦测情况,红线为kblk,黑色为mblk。可以看到影片结尾部分的运动情况比较剧烈。PSNR 图,x264 使用 ffdshow-20051129 来解码。另外也可以使用最新 nero 7 的解码器来解码,终于修正了B帧的问题了,不过nero 7在解码器上做了手脚,能被它自己播放器调用。我使用MPC播放时出现错误的提示,尽管这样,还是可以通过使用秘籍来调用的。经过测试,解码的结果和 ffdshow是一样的,但速度比 ffdshow快。可以见到两者的曲线特性很相似,压不好的地方两者一起压不好,压得好的地方两者一起压得好,所不同的是x264的PSNR平均都高出xvid的。所有编码和解码过程都关闭PP,按照PSNR曲线图上标明的各点所在位置进行截图比较,以下所有的图片统一由Avisynth做YV12-RGB,codec输出YV12,而不是由Codec解码为RGB选点截图通常为PSNR曲线的低值区间,没有特别说明的都是为P帧的截图图片顺序依次为:视源x264xvid#120 a点PSNR x264:41.8131 xvid:40.0544此段的色彩较丰富,PSNR在整段视频中很低,由于高频比例较大,画面非常难压。对比一下之前的frames size 和 motion 图,可知道这是静态的场景,但是码流分配很高。不过画面都是花丛,看起来比较乱,就算压得不好,如果不看源来的画面,也不容易察觉出来。另外Avisynth中算x264的PSNR是调用了DirectShow Filter处理, 所以结果与x264编码时自带那个算出来的有些误差x264算的结果如下,图片为x264算的和Avisynth算的区别,使用了 Y channel 作对比QUOTE:x264 info: slice I:56 Avg QP:15.63size: 45931PSNR Mean Y:47.97 U:48.06 V:48.15 Avg:48.01 Global:47.80x264 info: slice P:2434Avg QP:17.77size: 11725PSNR Mean Y:45.44 U:46.03 V:46.17 Avg:45.64 Global:45.22x264 info: slice B:4559Avg QP:19.19size:1510PSNR Mean Y:45.20 U:46.11 V:46.24 Avg:45.50 Global:45.09x264 info: mb II16.4: 11.1% 48.0% 40.9%x264 info: mb PI16.4:1.8%4.1%2.8%P16.4: 49.4% 15.4% 13.8%1.6%0.6% skip:10.5%x264 info: mb BI16.4:0.0%0.1%0.1%B16.8: 48.8%1.3%1.8%direct: 0.9%skip:46.9%x264 info: 8x8 transformintra:47.0%inter:37.3%x264 info: ref P58.4% 12.4%8.4%3.2%3.7%2.3%2.4%1.4%1.4%1.1%1.1%0.9%0.9%0.8%0.8%0.7%x264 info: ref B79.0%8.6%5.1%1.8%1.1%0.9%1.0%0.7%0.4%0.3%0.3%0.3%0.2%0.2%0.1%x264 info: PSNR Mean Y:45.307 U:46.098 V:46.233 Avg:45.564 Global:45.149 kb/s:1033.93现在着重以MeGUI这个软件为中心介绍MP4格式AVC文件的制作全过程,由于PMP_AVC格式的特殊性,不能适用,但以后应该会支持或等视频高手们给出方法。MeGUI是一款开源(免费)软件,之所以我以它为主介绍是因为它免费,谁都可以获取,另外还有一个更大的好处是它是集合多款第三方开源软件,可以充分利用其它软件在各自领域的长处和优点。严格来讲MeGUI其实是一个“搭桥”性质的软件,它把分散的功能“单一”的软件紧密结合起来以此发挥他们的最大效能。这里我们只需要MeGUI的x264部分MeGUI相关的信息:支持输入格式Input: AviSynth scripts (AVS), AVI, D2V, VOB/TS/MPG/PVA支持输出的容器格式Output: MP4, MKV, AVI可用的视频编码Video Codecs: x264, XviD, Libavcodec MPEG-4, Snow可用的音频编码Audio Codecs: AAC (Nero, Faac), MP3所需软件:MeGUI (需要MS .NET Framework 2.0)这里要说一下,由于新版已具备自动更新功能,且更新很快,一般只是选项设置方面改动,所以可以不用盲目追新,推荐116否则会和本教程有些出入avisynth (版不被支持!)besweet 推荐1.5b30/31belight(besweet的GUI界面程序,功能强大)faac - free的aac音频编码器neroraw - nero的aac音频编码器,在MeGUI新版里名称有所改变Helix YV12 codec这个如果你装了最近更新的Xvid Encoder,可以不用这个,decoder是个“中间者”,任何视频时间的转换都不是直接的,而是需要介于“中间”的codec搭桥的。YV12是其中一种,特点是在两头的格式(目标文件和生成文件)都支持的情况下可以做到无损转换并可以达到最高到30速度上的提高,详细的就不讲了x264.exe这个也是本次制作的重点x264 CLI,你也可以使用mencoder,不过这里不推荐,我也没试验过PSP上能不能播放mp4box MP4的合成器 0.4.0及以后版本Atomchanger 由于PSP MP4格式AVC的特殊性,需要修改相关头信息才能使其支持PSP所有软件都会在帖子最后以打包形式给出,PSP压缩MP4格式的AVC Profile已包括首先我们点击菜单里的Tools-settings来做一些基本设置。在main这个选项栏里我们主要设置:Default Priority(默认级别)- 这个是设置CPU占用率的,一般不要设置超过normalx264 encoder选择x264.exeAutomatically set number of Threads这个选项请务必关闭!因为MeGUI会自动探测你CPU可支持的线程数,有可能会锁定为2线程,这样PSP某种情况下会拒绝播放勾选此选项制作的AVC,造成死机!设置完后点击旁边的Program Path选项栏,在这里设置MeGUI需要用到的所有外挂程序的路径,这里我们只选取制作AVC需要用到的软件进行配置mp4box- 选择mp4box.exe在你硬盘上所存放的路径x264 - 选择x264.exe在你硬盘上所存放的路径faac -选择faac.exe在你硬盘上所存放的路径Ok,到此,程序路径的设置就算告一段落,点击save保存PSP自制AVC标准(不包括unlock API的PMP_MOD_AVC)16:9 (widescreen) 368x208 4:3320x240视频AVC:Main profile/level 3音频AAC:48khz/LC (low complexity)视频制作MeGUI有别于其它传统编码软件的地方在于它只支持avisynth格式的文件输入,很多朋友在这里可能会碰到疑问。比如我有个avi或者mpg格式的文件要怎么让MeGUI识别呢?这里就必须要用到avisynth的avs文件格式了。首先检查你的avisynth是否成动安装:打开“记事本”或是任何你喜欢的文本编辑器(text editor),在里面写入version(),然后保存为avs后缀的文件(记住不是txt格式)。然后在你的播放器里(我这里使用Media Player Classic)打开这个文件。如果可以看到一段视频显示avisynth的版本信息的话就说明你的安装成功了,否则请重新安装。版本请重新安装!从这里大家可以看出avisynth是一个基于脚本编辑的frameserver。这里大家可能又要问,frameserver是什么?要解释这个不容易,最直观的解释是比如你用virtualdub编辑好了一段视频准备制作成rmvb格式的片子。可是不巧virtualdub不支持rmvb输出,而只有avi。传统的方法是用virtualdub生成avi,然后把它输入到另外一个支持avi输入的rmvb压缩软件里。这个过程中费了两遍力不说,还浪费了时间因为中间要生成avi,还浪费了空间因为生成的avi要占硬盘空间,而且通常很大(有时要无损压缩)因为你要保证输入到rmvb压缩软件里的avi质量要好。virtualdub的frameserver在这里的作用就是欺骗系统让它认为avi已经生成了,输入到rmvb压缩软件里后软件开始压缩,然后virtualdub就一帧一帧的生成avi然后“喂”给这个rmvb压缩软件。avisynth和virtualdub最大的区别就在于一个是基于脚本的一个是基于GUI的。脚本的坏处是上手难,需要一定的脚本编写能力(其实avisynth脚本还是不算很复杂的);长处就是功能远远强大于GUI的程序,并且有很多人在给她编写插件,功能日益强大。看到这里没有编程经验的朋友根本不用害怕,因为MeGUI的脚本生成器完全能够应付我们大多数的需要了。点击菜单上的Tools-Avisynth Script Generator,见到如下窗口:首先在video input里指定你想导入的视频文件,这里默认只支持avi,mpg2,d2v和virtualdub frameserver文件。不要着急,点击“edit”标签,这里显示的就是你实际的脚本。比如我导入了G:JaspreetMummy_01VTS_01_0.d2v这个文件后,默认在“edit”里生成的具体脚本如下:QUOTE:LoadPlugin(D:ToolsMeGUIAddonsDgindexdgdecode.dll)mpeg2source(G:JaspreetMummy_01VTS_01_0.d2v)#blank deinterlace line#cropLanczosResize(368,208) # Lanczos (Sharp)#denoise具体avs的编写我就一笔带过了,记得编写后点击save保存接下来返回主界面.Input选项栏的avisynth Script输入你刚才编写保存的avs脚本Video Output 选择你所要输出到的文件路径codec选择x264,filetype选择rawvideo Profile选择我附件提供的profile中的一个(你也可以点击config自己编写设定码率,是否2 pass及更多的参数设置,但要注意符合psp的规范,这里牵涉到的参数很多,如果你不太感谢兴趣,可以不用关注)点击Queue进入批量处理队列点击Input旁边的Queue选项栏,查看先前压入队列的任务,确认无误后点击Start开始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论