Tags:,,,, Posted in 技术 写个评论

一.MPEG-4 AVC / H.264起源
  我们用KMP来播放H.264的时候,总是觉得不知道要用什么分离器,如何调用各种滤镜。但如果调用了Halli Media Splitter分离器以后,好象问题都解决了。那么,为何Haali有这么厉害的功能呢?这个要从H.264的来源说起。

  H.264/MPEG-4 AVC(ISO MPEG-4 Part 10) 

  H.264(ITU-T命名),或称之为MPEG-4 AVC(ISO/IEC命名),是一种由ITU-T与ISO/IEC正在联合进行开发的视频编解码方案,即将成为MPEG-4标准的第10部分(ISO MPEG-4 Part 10)。关于该技术的视频编码方案,现在正式命名为ITU-T H.264或”JVT/AVC草案”。H.264/MPEG-4 AVC作为MPEG-4标准的扩展(MPEG-4 Part 10),充分利用了现有MPEG-4标准中的各个环节。H.264/MPEG-4 AVC就在现有MPEG-4 Advanced Simple Profile的基础之上进行发展的。 

  H.264/MPEG-4 AVC的编解码方案流程主要包括如下5个部分:精密运动估计与帧内估计(Estimation)、变换(Transform)及逆变换、量化(Quantization)及逆量化、环路滤波器(Loop Filter)、熵编码(Entropy Coding)。 
  标准选择Advanced Video Coding(进阶视频编码)(AVC)作为“官方”名 - 因为对应视频的音频格式是Advanced Audio Coding(先进音频编码)(AAC)。
  尽管H.264/MPEG-4 AVC这项技术虽然还没有得到正式批准,但是其可以降低50%或更多带宽的能力,能以少于1Mbps的数据率传输基于互联网协议(IP)的广播质量级的视频内容,这是目前正式颁布的ISO MPEG-4及MPEG-2编解码方案根本所不能比拟的。因而,H.264/MPEG-4 AVC将对所有要求高压缩率、高质量的应用领域产生深远的影响。 

  从上面得知,搞了半天,H.264原来就是我们最熟悉的MPEG-4编码的第10部分,只不过换了一个称呼而已。而我们知道Haali就是MP4,mkv,ogg/ogm,avi这四项功能集于一身的分离器。故Halli能分离H.264也就不足为怪了。更奇怪的一个问题是,有人曾建议如果APPLE下载的高清预告片播放不了,就把影片扩展名由MOV改成AVI或MP4就可以播放了,其实这是由于H.264影片的“容器”可以是AVI,MP4,MPG等原因造成的。

二.可用的AVC/H.264编码,解码器

  可用于用户的AVC/H.264执行者有x264, Nero, Apple, Sorenson, Elecard, Moonlight, VSS, mpegable, Envivio, Hdot264 (binary), DSPR, JM (参考软件) (binary), ffmpeg, Philips, FastVDO, Skal, Sony等等。

AVC/H.264厂家,编码器,解码器大全。

http://forum.doom9.org/showthread.php?t=95939

我们常用解码器有quicktime,moonlight,ffdshow,coreavc,还有KMP内置的H.264解码器(不知采用的是哪一种)。

三.可用的AVC/H.264播放器
  因为开发H.264的公司很多,所以应该说播放器也是相当多的,只是有些我没有接触到,目前我们见到的使用的主要有:
  1.quicktime 7
  2.tcpmp
  3.mpc
  4.bsplayer
  5.kmplayer
前两种就是直接的播放器,安装好了就可以了。但后面三种却是DIY的播放器,要自己手动设置解码器,但却因其强大的DIY功能而越来越受到大家的追捧。
  因为quicktime 7,tcpmp只要安装就可以播放H.264,所以本文不做说明。下面主要就最DIY的KMPLAYER做详细的设置说明。

四.KMPLAYER技巧
  我们在设置KMP的时候,常常把各种滤镜设置到“滤镜管理器”中并设置为强制使用。但我最近却常常发现有这样那样的问题,有些情况下,一个滤镜我明明指定了,并强制使用了,但往往它就是不听使唤,千呼百唤不出来,急煞人也。
  随着KMP的不断完善,我现在的习惯与大家可能不一样了,那就是我“从不在滤镜管理器中设置任何东西”。大家不要觉得奇怪、不可思议,其实本来KMP就有明确的解决办法,只是大家太急燥了,一味的要“超越”,要有“强制使用”,好象手握重器,想要怎样就怎样,豪爽得很。呵呵,离题了。
  1.解码器的注册。
  注册解码器有两种办法:
  1.1 在命令行下用regsvr32 路径文件名注册。
  1.2 kmp本身命令。打开“参数选项”-“系统滤镜管理器”-“注册”,找到所要注册的解码器即可完成KMP可识别的注册。

KMPLAYER注册方式

有时不管你用什么注册方式注册了一个滤镜却在对应的解码器中找不到这一项,怎么办呢。有个简单的办法:在“搜索扩展解码器”以后,找到你注册了的滤镜,在右边的“选择要使用的解码器/滤镜”中,把该滤镜想要出现在哪一个大项上打勾,例如:MPEG1 分离器,这样该滤镜就会在扩展解码器/分离器中出现了。
  这样做的原因是你可以完全控制KMP的滤镜使用方式,不会再也找不到滤镜了。举个小例,本来haali分离器是不可能分离MPEG-2(TS)的,但我却实际上调用了它,虽然它对解码HDTV起不到什么作用。

KMPLAYER注册举例说明

2.KMP调用滤镜的顺序
  KMP默认的滤镜调用顺序是先调用KMP内置滤镜,如果起不到作用则调用系统滤镜,当然,我们也可以在“滤镜管理器”中“优先”调用指定的解码器,但遗憾的是,常常会有些怪问题出现而失败。
  解决这个问题的思路是这样的:
  2.1 用“强制使用”调用所需解码器。 可以使用,但有时会出现奇怪问题。
  2.2 设置KMP不使用内置解码器,而优先使用系统解码器。   只会优先用系统默认解码器,不一定就是你想要的解码器。
  2.3 去除KMP对应内置解码器,让KMP只能使用指定的解码器。   可以任意真正的指定你所想的解码器。
  因为我们常常用KMP加载所需的解码器来播放视频,本意就是不使用内置解码器,所以从这一点上来说,去除内置解码器不会造成理解上的误差。

  当然,为了能随意自如的控制KMP的解码器优先级,我们都会选用第三种方式,简单方便。

第一种优先顺序图例,我们常用的“强制使用”方式。

第二种优先顺序图例,但此种方式不常用


第三种优先顺序图例,我目前使用的方式。

 

在这种方式下,要使用Moonlight3.0分离器分离MPEG-2(TS),其实只要在“内置影音分离器”中设置“MPEG2(TS)分离器为“Moonlight Elecard MPEG2 Demultiplexer”即可。


五.MPEG-4 AVC / H.264小常识
  MPEG-4 AVC / H.264的“最正规”的编码方案是用MPEG-4 AVC / H.264 AVC编码视频,这一点不用说,同时音频对应的就应该用AAC,但AAC有2.0与5.1音频的区别,我们为什么这样尝试不同的解码方案,主要的原因就是有时有音频却没有视频,有了视频音频又不对了,才会出现改扩展名的“高招”,这与AAC 2.0,5.1关系相当大,当然,音频是可以不用AAC的,也可以用AC3,DTS等,如常见的x264编码的真正电影,而不是预告片。根据ISO 13818 MPEG国际标准来说,AAC应该是AC3的升级替代品,同时也是MP4格式影音的主流音频编码。特别是日本等高清影片,如“九寨沟”等都是使用AAC编码。

六.KMP实际设置解决方案
  本部分分步详细解答不同解码方案的设置方法。测试影片为APPLE下载的预告片,共三部来试图说明设置。能播放MOV,播放MP4就应该不是问题了。
  cornell_m1080p.mov       AAC2.0音频
  king_kong-tlr_h1080p.mov   AAC5.1音频
  memoirsofageisha_h1080p.mov AAC2.0音频

  为了使大家能方便阅读,只要找到一种方案就可以了解全部设置过程,我把每种解码器都详细贴出调用过程,有些图片可能重复,请见谅,但这样却可使大家少费时间。呵呵。

  KMPLAYER播放器是选用2.8.10312006年1月16日版,该版已经把Haali分离器单独分离出来做了四个单独的选项,而不是以前的选用“系统默认”了,可见haali分离器的处理难度。呵呵。

  1.KMP内置滤镜方案。
  我们不借助任何外部的滤镜来播放h.264,下面是设置方案,以图片的方式来解答。

  1.1 滤镜管理器不设置任何东西。呵呵,这是我最近的风格,免得滤镜搞乱了不知怎样解决。


解码器恢复为默认设置“总是使用(强烈推荐)”


1.2 把相关haali分离器关闭。


1.3 设置内置分离器为“KMP内置MOV/MP4分离器”。


1.4 设置内置视频解码器为H.264


1.5 打开内置H.264解码器的快速解码开关


1.6 测试片断cornell_m1080p.mov 1080P AAC2.0音频正常解码

1.7 测试片断king_kong-tlr_h1080p.mov AAC5.1音频正常解码


1.8 测试片断memoirsofageisha_h1080p.mov 1080P AAC2.0音频正常解码

2.KMP 调用Moonlight3.0月光H.264解码器方法

  2.1 滤镜管理器不设置任何东西。呵呵,这是我最近的风格,免得滤镜搞乱了不知怎样解决。


解码器恢复为默认设置“总是使用/强烈推荐”

2.2 打开相关haali分离器。

2.3 设置内置分离器为“不操作”。

2.4 关闭所有内置视频解码器。


2.5 关闭所有内置音频解码器。


2.6 设置H.264视频解码器为Moonlight


2.7 设置AAC音频解码器为CoreAAC

2.8 测试片断cornell_m1080p.mov 1080P AAC2.0音频正常解码

2.9 测试片断king_kong-tlr_h1080p.mov AAC5.1音频正常解码

2.10 测试片断memoirsofageisha_h1080p.mov 1080P AAC2.0 

    此种组合完全不能播放,无图无声,并且自动退出程序。
3.KMP 调用ffdshow之H.264解码器方法

  3.1 滤镜管理器不设置任何东西。呵呵,这是我最近的风格,免得滤镜搞乱了不知怎样解决。

解码器恢复为默认设置“总是使用/强烈推荐”

 3.2 打开相关haali分离器。

3.3 设置内置分离器为“不操作”。


3.4 关闭所有内置视频解码器。

 3.5 关闭所有内置音频解码器。

3.6 设置H.264视频解码器为ffdshow

附:ffdshow中相关H.264设置方法

 3.7 设置AAC音频解码器为CoreAAC

3.8 测试片断cornell_m1080p.mov 1080P AAC2.0音频正常解码

3.9 测试片断king_kong-tlr_h1080p.mov AAC5.1音频正常解码

3.10 测试片断memoirsofageisha_h1080p.mov 1080P AAC2.0 

此种组合也可以说完全不能播放,只能出现apple的logo,并且不能往下播放,声音也只播放了大约2秒钟,并且自动退出程序。

 4.KMP 调用CoreAVC之H.264解码器方法

  4.1 滤镜管理器不设置任何东西。呵呵,这是我最近的风格,免得滤镜搞乱了不知怎样解决。

解码器恢复为默认设置“总是使用/强烈推荐”


 4.2 打开相关haali分离器


4.3 设置内置分离器为“不操作”。

 4.4 关闭所有内置视频解码器。

4.5 关闭所有内置音频解码器。

4.6 设置H.264视频解码器为CoreAVC

4.7 设置AAC音频解码器为CoreAAC

4.8 测试片断cornell_m1080p.mov 1080P AAC2.0音频正常解码

  4.9 测试片断king_kong-tlr_h1080p.mov AAC5.1音频正常解码

4.10 测试片断memoirsofageisha_h1080p.mov 1080P AAC2.0 

 此种组合播放这个片断,音频基本流畅,但视基本上就不能播放了,只能是在拖动时显示一些帧而已。

七.不同解码器比较

因时间关系,暂时留白,以后补上。实在对不起,太花费时间了。将会做一个播放难易程度的对比。

八.存在问题

  我之所以一直把最高1080P的视频测试是基于想测试电脑软件解码的能力,还有就是不同的AAC音频 2.0与5.1的区别,印象中,KMP于2005年的版本在内置解码的时候都会失败于5.1的音频解码,2006年的版本却没有问题,但测试已经完毕,文章也以写就,故没有删除这些部分。

  艺妓回忆录1080P AAC2.0这段影片很是奇怪,就算是用公用最好的Haali+CoreAVC+CoreAAC组合解码也会有问题,基本上是不能播放,更不用说其它的解码器了。请达人分析一下这段影片到底与其它片断有什么不一样的地方,也好让大家解决这个问题,说不定以后还会大量碰到这种编码的视频。

无觅相关文章插件,快速提升流量

2011 年 02 月 04 日
此文章来源未知,如果您知道来源或是文章作者请在留言板提醒,保证第一时间更正
声明: 本站原创文章采用 BY-NC-SA 协议进行授权. 如果喜欢本站文章 欢迎订阅 什么是RSS? 如何订阅
转载请注明转自: 三月鸟社. 一文搞定MPEG-4 AVC/ H.264之KMPLAYER设置及技巧