高清视频相关知识和 KMPlayer 硬解码DXVA设置.docx
《高清视频相关知识和 KMPlayer 硬解码DXVA设置.docx》由会员分享,可在线阅读,更多相关《高清视频相关知识和 KMPlayer 硬解码DXVA设置.docx(15页珍藏版)》请在冰豆网上搜索。
高清视频相关知识和KMPlayer硬解码DXVA设置
高清视频相关知识和KMPlayer硬解码(DXVA)设置
原帖地址:
“高清”,就是高清晰度,是相对于“标清”(即标准清晰度)而言的,主要是指高清晰度的视频媒体,高清技术的发展,越来越多的人接触到高清,现在网络上是铺天盖地的高清视频资源,高清电视、高清电影、高清MTV等等。
高源媒体的解码过程是怎么样的?
如何才能在电脑上正确地播放高清媒体?
什么是硬解,硬解有什么要求?
如何设置才能调用硬解?
以下文字将用最简单的语言,和较少的转业术语作出说明。
一、常见的高清视频的编码及封装格式
对于高清视频来说,主流的编码技术目前主要有MPEG-2、DivX、XVID、H264/AVC、VC-1、RMVB和WMV-HD等等。
其中,H264/AVC、VC-1、MPEG-2是蓝光(Blu-rayDisc)所选择的编码格式,也是目前最流行的高清视频编码格式。
另外就是高清视频的封装格式,封装格式和编码格式是互相区别的,许多人会把它们混淆。
1、H264/X264/AVC编码格式
绝大多数视听玩家对于H264编码都不会感到陌生,H264编码的身世显赫,是ITU-T(国际电信联盟视频编码专家组)与ISO/IEC(国际标准化组织动态图像专家组)合作组成的JVT(联合视频组)推动的新一代数字视频编码标准,也称为MPEG-4/AVC编码。
H264编码依托雄厚的背景,在技术上独树一帜,大幅领先于其它编码算法。
X264编码,是H264编码的一个开源分支,它符合H264标准,其功能在于编码,而不作为解码器使用,X264编码最大的特点在于注重实用,它在不明显降低编码性能的前提下,努力降低编码的计算复杂度,X264对于H264编码中的一些复杂编码特性做了折衷处理,其压缩视频体积小于XVID(MPEG-4)编码视频,以小体积、高画质的特点得到了广泛认可。
2、MPEG-2编码格式
MPEG-2编码标准是由MPEG(MovingPictureExpertsGroup)工作组发布的视频与音频压缩国际标准。
MPEG-2编码于1994年发布,常用于广播信号(卫星电视、有线电视)的视频和音频编码,经过后期不断修改,不仅成为DVD的核心技术,还应用于HDTV高清电视传输。
3、VC-1编码格式
WMV(WindowsMediaVideo)作为经久不衰的一种视频编码,一直在不断改进,2003年,微软基于WMV第九版(WMV9)编码技术,正式提出了VC-1编码标准,并于2006年正式成为国际标准。
VC-1编码作为较晚推出的高清编码算法,自然吸收了MPEG-2与H264编码的优点,其压缩比介于MPEG2和H264之间,编解码复杂性仅有H264的一半,即压缩时间更短、解码计算更小,在微软的大力推动下,VC-1编码已经得到了BD蓝光光盘、电影及电视学会(SMPTE)的支持。
近几年来,为了更好的推广WMV9/VC-1编码标准,微软不遗余力的建立了WMV-HD高清资源站点,大量发布采用VC-1编码压制的720P、1080P宣传片及演示片(WMV-HD视频格式),试图营造声势,吸引用户关注。
不过,中庸的技术(与H264相比无明显编码优势)、封闭的平台(限于Windows系统)、后发的劣势(2006年通过成为国际标准)仍然给微软VC-1编码的应用前景带来了较大的不确定性。
4、高清视频的封装格式
封装格式其实是一个“容器”,它不同于编码格式,封装就相当于捆绑打包,将已经编码好的视频文件和音轨文件打包在一起,并按照一定规则建立排序和索引,便于播放器或播放软件来索引播放。
常见的封装格式有MKV、AVI、MOV、TS、PS等等,高清媒体文件的后缀名(扩展文件名)一般都是媒体的封装格式。
(1)MOV格式:
MOV多见于AppleQuickTime网站上的电影预告片。
MOV类似于RMVB,过于封闭自守,民间制作组没有人会用这个不方便的形式。
(2)AVI格式:
AVI封装是微软在上世纪90年代初创立的封装标准,是当时为对抗QuickTime的MOV格式而推出的,因为当时还没有流式播放需要,AVI的将索引布置在打包文件的尾部,这就使得AVI封装不能做到流式播放(流媒体)。
AVI封装只能支持有限的几种视频音频编码形式,且AVI不能支持音频的VBR动态比特率编码。
(3)TS格式:
TS(TransportStream)是一种比较先进的封装形式,蓝光原盘中,就采用了TS封装。
TS封装支持几乎所有编码的高清视频和音轨文件。
PS(ProgramStream)封装的技术基本和TS相同,但PS封装和AVI一样,都不是流媒体,不能够支持流式播放,PS封装使用在原先的HDDVD中。
在高清标准下,MPEG-2编码的视频文件主要采用TS封装格式。
(4)MKV格式:
MKV(Matroska)是一种新兴的多媒体封装格式,可以将各类视频编码、16条或以上不同格式的音频和语言不同的字幕封装在一个文件内,它具有开放源代码、音视频编码丰富、网络亲和性好等优势,已经得到众多视频压制组和玩家的支持,正逐渐成为高清视频的主流视频格式。
H264编码与X264编码目前大多采用MKV封装格式。
二、高清视频的播放组件及调用流程
视频文件的解码过程如下依次需要用到的组件有“分离器”、“解码器”、“渲染器”,它们统称为“滤镜”。
1、分离器(Splitter)
要正确地播放多媒体文件(不管是否高清媒体文件),播放器首先要正确地调用分离器,把视频流和(或)音频流正确地分离出来,然后交给解码器进行解码,这就是分离器的使命。
上文中说到有不少的封装格式,每一种封装格式都必须有相对应一种分离器,才能正确的把视频和音频分离出来以供解码器解码。
常用的分离器有:
GabestMPEGSplitter(MediaPlayerClassic作者编写的分离器)、KMPSplitter(KMPlayer原配的分离器)、HailiMediaSplitter等等,这三种分离器能够支持较多的封装格式,其它的分离器还有Moonlight-ElecardMPEG2Demultiplexer(月光分离器)、nVIDIATransportDemux(nVIDIA公司的分离器,配合PureVideo使用)、CyberLinkDemux(PowerDVD软件中的分离器)等等。
2、解码器(Decoder)
解码器在整个视频的播放中占据了最主要的位置,它的作用是对由分离器分离出来的音频流和视频流分别进行解码。
解码器又分为视频解码器和音频解码器。
常见的视频解码器有:
(1)MPEG-2视频解码器:
InterVideoVideoDecoder(WinDVD的解码器)、CyberLinkDTVVideo/SPFilter和CyberLinkVideo/SPFilter(PowerDVD的解码器)、Moonlight-ElecardMPEG2VideoDecoder、nVIDIAVideoDecoder(nVIDIAPureVideo的解码器)、SonicCinemasterVideo、GabestVideoDecoder等等。
(2)H264/X264/AVC视频解码器:
CyberLinkH.264/AVCDecoder(PowerDVD的解码器)、CoreAVCDirectShowVideoDecoder、MoonlightH264VideoDecoder、ffdshowMPEG-4VideoDecoder等等。
(3)VC-1视频解码器:
CyberLinkVC-1Deocder(PowerDVD的解码器)、MediaPlayerClassicVideoDecoder、WMVideoDecoderDMO(微软的解码器)等等。
常见的音频解码器有:
CyberLinkAudioDecoder(PowerDVD的解码器)、AC3Filter、InterVideoAudioDecoder、nVIDIAAudioDecoder等等。
3、渲染器(Renderer)
渲染器与解码器一样,分为视频渲染器和音频渲染器,解码后的视频数据经过视频渲染器的渲染后呈现到显示设备上,解码后的音频经过音频渲染器的渲染后从声卡输出。
渲染在视频播放的过程中是很重要的,因为它会影响到视频最终的效果,不同的渲染器有不同的技术特性,对电脑的配置(主要是CPU和显卡)的要求也不一样。
视频渲染器主要有以下几种:
(1)旧式视频渲染器(VideoRenderer):
这种是最原始的渲染器,它接收到来自解码器解码后的数据流,在显示设备上显示。
这种渲染器基本上不能调用到显卡硬件特性,全靠CPU来完成渲染任务。
(2)覆盖合成器(OverlayMixer):
覆盖合成器能够将若干路视频流合并输出到显示设备上,并且它能够很好地调用显卡硬件的拉伸,颜色空间变换等硬件功能,以减少对CPU资源的占用率。
视频覆盖的画面质量事实上取决于显卡硬件。
通常在使用覆盖合成器的时候无法直接对正在播放的视频截图。
(3)VMR渲染器(VideoMixingRenderer):
VMR对覆盖合成器进行了改进,它是基于DirectX的视频渲染器,能够支持16路的视频流混合。
VMR根据DirectX版本的不同,可以分为VMR7和VMR9,其中VMR7基于DirectDraw7(2D),而VMR9基于Direct3D9(3D),VMR9可以支持视频特效(VideoEffects)和视频变换(VideoTransitions)。
VMR根据渲染模式的不同又分为“窗口化”(Windowed)、“无窗口”(Windowless)、“未渲染”(Renderless)模式。
(4)EVR增强型视频渲染器(EnhancedVideoRenderer):
微软在WindowsVista系统就开始引入的新视频渲染器,当然也包含在新的操作系统Windows7中。
它与VMR最大的区别就是能够支持DXVA2.0。
三、硬件解码加速DXVA接口规范和确解码级别、新兴的CUDA和Stream技术
DXVA的全称是DirectXVideoAcceleration,中文意思是DirectX视频加速。
DXVA不仅包括了视频数据的解码运算,还有各种后期处理运算,比如图像缩放、色彩空间转换、反交错等等。
DXVA其实就是大家常说的“硬解”。
显卡是否支持DXVA,是直接关系到在视频播放的过程中CPU资源的利用率。
1、DXVA接口规范的版本
DXVA接口规范目前有两个版本,分别是DXVA1.0和DXVA2.0。
DXVA1.0的规范里最早定义了MPEG-2和WMV的硬件解码加速能力,而DXVA2.0比1.0版本增加了对H264、VC-1硬件解码加速能力的定义。
也就是说,要“硬解”MPEG-2的视频,只需要显卡能够支持DXVA1.0标准就可以了,而要“硬解”H264/AVC的视频,就要求显卡支持DXVA2.0的标准。
2、DXVA硬件解码加速能力的级别
视频硬件解码的加速能力的级别基本上分为三个,从高到底分别为:
VLD(VariableLengthDecoding/变字长解码)、IDCT(InverseDiscreteCosineTransform/逆离散余弦变换)、MoComp(MotionCompensatiom/运动补尝)。
VLD加速用于处理视频比特流(BitStream),IDCT用于处理帧内压缩(Intraframecompression),MC用于处理帧间压缩(InterframeCompression)。
显卡能够支持越高级的加速能力,就能更大幅度地减轻对CPU资源的占用。
如何才能快速地知道自己显卡是否支持DXVA?
利用一个叫做DXVAChecker的软件,目前最新的版本是2.2.0.1。
DXVAChecker在WindowsXP系统下运行时需要一个dxva2.dll文件,如果没有它,那么将无法正确探测出显卡对DXVA的支持情况。
如果实在找不到这个文件,可以下载安装微软的.NETFramework3.0或者.NETFramework3.5。
运行DXVAChecker后,它便在DecoderDevice标签页列出了显示设备对DXVA的支持情况。
在上图中,可以看到用于上网本Atom平台的IntelGraphicsMediaAccelerator500(GMA500)对DXVA的支持情况。
图上DXVA1/DXVA2是指支持的DXVA版本,“NV12”是指视频输出的色系(其它的颜色系还有YUV12、YUY等等,没有太大的意义),后面是能够支持的分辨率。
须要注意的是,对WMV9的支持当中,有一个级别是“PostProc(PostProcessing)”,中文意思是“显示后处理”,它是最低级的DXVA。
还有一个称为“FGT(FilmGrainTechnology)”的技术,即所谓胶片感,目的是在不牺牲压缩能力的同时保持视频源特有的颗粒信息。
关于IntelGraphicsMediaAcceralator500:
GMA500与其他GMA系列产品不同,该显卡核心来自英国ImaginationTechnologies公司的PowerVRSGX,该公司前身PowerVR公司曾经在显卡市场上出现的产品包括PowerVR,Kyro和KyroII。
其PowerVR2曾用于世嘉的DC游戏机中。
GMA500的技术参数的特性如下:
使用GMA500主要集成于以下几个系列的芯片组中:
UL11L、US15L、US15W。
其中UL11L核心频率为100MHz,其他两款的主频为200MHz。
支持VertexShader(顶点着色)4.1,PixelShader(像素着色)4.1,PixelPipelines(像素管线)2条,UnifiedshaderPocessors(统一渲染单元)4个,支持hardwarevertexshaders(硬件定点着色),峰值内存带宽UL15L为3.2GB/s,US15L、US15W为4.2GB/s,最大支持共享显存256MB,OpenGL2.0,DirectX10.1,支持的硬件解码有:
MPEG-2、VC-1、H264/AVC。
基本上,除了核心的频率较低外,硬件解码水平和最新的X4500MHD类似。
4、nVIDIACUDA技术和AMD(ATI)Stream技术
(1)nVIDIACUDA:
CUDA的全称是ComputeUnifiedDeviceArchitecture(统一计算设备架构),它是nVIDIA近年来力推的一项技术。
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。
在计算性能上已经超越了通用的CPU。
如此强大的芯片如果只是作为显卡就太浪费了,CUDA正是可以让显卡可以用于图像计算以外的技术。
CUDA技术最典型的应用这一就是进行高清解码。
著名的解码器CoreAVC,它并不支持DXVA,在过去它完全利用CPU进行解码运算,不过在新版本的CoreAVC解码器当中加入了对CUDA技术的支持,把解码运算的任务转移到GPU上来,大大地减轻了CPU的负担。
(2)AMD(ATI)Stream:
虽然与nVIDIA的CUDA技术的实现方式不一样,但是出发点和最终目的都是相同的,Stream流技术就是利用AMDGPU多核在浮点运算性能上的优势进行加速计算。
在高清解码的应用上,AMDStream比nVIDIACUDA支持更多的功能:
比如MPEG-2的转码、FullHD1080p的编码输出等,另外,AMDStream的软件是免费的(CUDA的软件价格30.00美元)。
四、KMPlayer播放高清视频的硬解码(DXVA)相关设置
1、关于KMPlayer和PotPlayer
KMPlayer简称KMP,早期名叫WaSaVi播放器。
作者是韩国的姜龙喜。
KMPlayer是一套将网络上所有能见得到的解码器(Codec)全部收集于一身的影音播放软件;此外,KMPlayer还能够播放DVD与VCD,汇入多种格式的外挂字幕档、使用普及率最高的WinAMP音效外挂与支援多种影片效果调整选项等。
PotPlayer是KMPlayer原作者姜龙喜进行Daun公司后用C++语言(KMPlayer是用Delphi语言写的)重写的新一代作品,目前正在全力开发中,功能尚不及KMPlayer。
2、KMPlayer的具体设置
虽然KMPlayer已经集成了解码器,但是它们是无法正常调用显卡的DXVA加速的。
而目前最好的DXVA解码器是Cyberlink集成在PowerDVD中的解码器。
如果电脑里没有安装PowerDVD,那么就需要自己搜索下载它的单独解码器。
(可以邮件向我索取。
)需要用到的PowerDVD的解码器主要有四个:
H264解码器Cl264dec.ax、MPEG-2解码器Clvsd.ax、VC-1解码器Clvc1dec.ax、音频解码器Claud.ax。
(1)在设置之前,最好将KMPlayer的设置恢复成初始的状态:
按“F2”键打开KMPlayer的设置,点击下方的“初始化所有设置”按钮。
对KMPlayer进行设置的目的是屏蔽KMPlayer内部的解码器,使KMPlayer可以调用外部的PowerDVD解码器进行视频解码。
(2)在KMPlayer的设置菜单里,依次找到“滤镜控制”—“解码器使用”—“内部视频解码器”,在右边的“常规”选项卡里解除“H.263+”、“H.264”、“AVC1”、“VC-1”的勾选,如下图所示:
(3)然后再找到“滤镜控制”—“解码器使用”—“外部视频解码器”,点击右侧的“搜索外部解码器”,弹出“外部解码器/滤镜管理”对话框,再点击“添加外部解码器”按钮,依次添加上文所讲的四个PowerDVD解码器。
如下图所示。
(4)添加后双击解码器弹出解码器设置对话框,勾选“USEDXVA”或者“UseHardwareAcceralator”。
(5)点击确定后回到“外部视频解码器”设置窗口,“H.264视频”、“AVC1视频”、“VC-1视频”分别选择刚才添加的PowerDVD解码器。
解码器的设置就到此结束了。
此外,有几要说明的问题。
(1)关于KMPlayer设置的保存:
在KMPlayer的“常规”设置中,有一个“保设置到KMPcfg.ini文件”的选项,本人认为可以勾选,全部设置完成后可以备份KMPlayer安装目录下的KMPcfg.ini文件,重新安装系统后可以快速地恢复原先的KMPlayer设置。
(2)关于KMPlayer的“超级速度模式”:
许多网友认为,必须勾选这个选项才能正常调用DXVA硬解,但是根据我的实际情况,这个选项不是必须勾选的。
当系统里安装了许多另外的解码器(比如PureCodec完美解码、FinalCodec终极解码、K-LiteCodecPack等等)时,开启这个选项可以滤掉多余的解码插件。
(3)关于“源滤镜”:
在KMPlayer中有“源滤镜”的设置,这个“源滤镜”到底是何解释,本人尚不太清楚,暂且把它理解成优先级较高的滤镜。
(4)关于“渲染器”:
一般来说,在WindowsXP系统下播放效果最好的渲染器是VMR9,而WindowsVista/Windows7系统下最好的渲染器是EVR。
但是有些系统会出现兼容性问题,出现播放过程中无画面(黑屏)有声音、无法播放甚至蓝屏死机的时候,可以尝试改变一下渲染器的设置。
本人的上网本(显卡是GMA500)就无法让KMPlayer在WindowsXP系统中使用VMR9渲染器,往后的测试都是使用VMR7渲染器。
五、几段高清视频的播放测试:
硬件系统:
AcerAspireOne751h:
IntelAtomZ520(1.33G/512K/133MHz)、US15W、GMA500(Driver6.14.11.1018)、1366×768(11.6")
软件系统:
WindowsXPServicesPack3(5.1.2600.5512)、DirectX9.0c、KMPlayer2.9.4.1436、PowerDVD8.0/9.0Codec
测试片源:
(点击图片可以放大看原分辨率图片)
(1)大塚愛ユメクイ:
封装格式TS、视频编码MPEG-2、音频编码LPCM、分辨率1440×1080i
(2)江若琳你不在了:
封装格式MP4、视频编码AVC、音频编码AAC、分辨率1920×1080i
(3)变形金刚预告:
封装格式MOV、视频编码AVC、音频编码AAC、分辨率1920×1080p
(4)阿凡达预告:
封装格式MOV、视频编码AVC、音频编码AAC、分辨率1920×1080p、外挂字幕SRT
根据播放器显示的OSD信息,视频输出显示是DXVA,说明已经成功地开启了硬件加速解码。