在使用 HTPC 播放高清时,会涉及到视频的几种输出模式,如 VMR7、VMR9、覆盖等,这涉及到 GPU 处理视频时的一些技术方式,对具体技术细节我也不甚了解,但使用中,会发现 VMR 的视频效果会好于覆盖模式。但在电脑配置不强时,一些播放软件的自动设置上,也会优选使用覆盖模式,以节省系统资源。 而在使用硬解模式,或希望有更好的视频效果时,甚至在需要截取视频画面时, 我们都 必须选用 VMR9 模式。但是,选用了 VMR9 后,KMP 播放视频,偶尔会发生画面撕裂问题,尤其是当镜头平行移动时,撕裂画面机会必定发生,所谓撕裂,就是画面在中间裂开,好像下部画面的刷新速度跟不上画面上部分的速度,画面错开了。这样就产生一个矛盾,虽然采用 VMR9 模式,颜色更鲜艳,画面更细致,但画面撕裂会使观看效果无非忍受,而覆盖模式虽然效果平淡些,但播放完全正常。发生这个问题的原因,我至今也没有搞明白,开始还以为自己的电脑 CPU 不快或者显卡速度不够快,直到偶尔看到别人讨论这个问题,才发现一个简单的设置方法,可以解决这种问题,就是在的设置菜单里,选择:参数设置>>视频处理>>渲染器>>勾选:修复 VMR9 D3D 8 中的破损同步(撕裂)KMP 的默认选项里,不会选中这个功能,勾选这个选项之后,画面撕裂的问题就完全克服了。 使用其它播放器也有类似的设置可用。 附:画面撕裂的原因 画面撕裂问题牵涉到显示器刷新的原理,是图像渲染和屏幕刷新不同步造成的。 1)GPU(显示芯片)连续地渲染画面,每渲染一帧就放到显存中一个区域,不等显示到屏幕上已经开始下一帧的渲染。 2)显卡上一个叫“Ramdac”的组件不断从显存中取出最新的一帧,刷新到屏幕上,这个刷新频率就是通常所说的“刷新率”,是固定的,液晶显示器一般采用 60Hz。 3)Ramdac 如何知道要刷新的帧在显存中哪个位置?这是自然是 GPU 给出的信号。GPU每完成渲染一帧都会通知 Ramdac。 4)GPU 渲染和 Ramdac 刷新显然是不一定同步的。当 Ramdac 刷新到某帧的一半时收到GPU 切换帧的信号,就会导致这一帧上半显示是上一帧,下半则显示下一帧,这就造成了【画面撕裂】。当游戏画面运动快时这个现象尤其明显。 5)【垂直同步技术】可以让渲染和刷新更协调,避免刷新到中间时切换帧,并强制 GPU渲染速度不得超过 Ramdac 刷新速度,从而在不影响观感的前提下消灭画面撕裂,还能避免 CPU 多余的运算,节约能耗。