转贴,后面附本人的补充~~
转自思路:
首先声明,我在视频播放方面可算是菜鸟~~这个帖子呢主要是跟一些刚刚接触高清视频播放的菜虫讨论一些极为简单的问题,希望帮助菜虫们尽快成长。 一 修正黑位 1 什么是黑位错误 什么是黑位错误呢,咱菜鸟不懂什么高深的理论,在我的理解中现在大部分高清电影色彩的动态范围为16~235,也就是说在电影中16这种颜色为纯黑,235这种颜色为纯白;而在我们的显示器中,色彩的动态范围是0~255,0为纯黑,255为纯白。这就出现问题了,简单理解,影片中想描述一种纯黑的颜色,它会通知显示器输出16这种颜色,而在我们的显示器中16这种颜色不是纯黑而是灰黑,这就造成了颜色错误,也就是专业术语中所说的“黑位错误”。 播放影片时如果有黑位错误,具体体现在画面暗淡,象蒙了一层灰~ 下面时黑位错误的一些图示 (1)错误图 (48.53 KB) 2009-1-17 23:37 (注意画面的黑边,本来应该是纯黑,现在偏灰) 正确图 (50.33 KB) 2009-1-17 23:37 (2)错误图 (14.91 KB) 2009-1-17 23:37 (注意四周的颜色以及红色条下面的三个黑条) 正确图 (15.65 KB) 2009-1-17 23:37 (红色条下面只有一条是灰黑色,其他为纯黑) 2 什么是黑位修正 所谓黑位修正在我的理解中(我的理解很可能是xx错误的,嘿嘿~~)就是把16~235进行插值计算,化为0~255,当视频信号的颜色为16(纯黑)时,输出到显示器的颜色已经被插值计算成0(纯黑)。不管是不是这样,反正这个不是重点,我们只要能借助软件解决黑位错误就可以了,没有必要知道到底怎么修正的(嘿嘿~~xx不负责任的说法) 3 什么是过度修正 修正黑位错误的方法有多种,如果同时使用两种以上的方法,就可能会出现过度修正的问题。简单来说,本来应该把16~235拓展成0~255,使用两种方法就相当于进行了两次拓展,那么在电影中的20或者30这些种颜色也被当成纯黑输出~~看起来画面好像是亮丽了,但是丢失了很多细节。上两幅过度修正的图 (1) (16.4 KB) 2009-1-18 00:29 红条低下已经没有黑条了~ (2) (54.71 KB) 2009-1-18 00:29 (50.33 KB) 2009-1-18 00:29 比较一下,上面的是过度修正的,下面的是正确图,还是有区别的~~ 4 如何修正黑位 这个是本节的重点~对于n卡的用户我建议在驱动里设置~ (44.44 KB) 2009-1-18 00:43 然后在{zj2}解码的的“视频输出”一栏,选择“VMR 9无渲染”,或者“EVR 增强型渲染(C/A)”。对于H.264编码的片子,如果用CoreAVC解码的话需要如下设置 (46.37 KB) 2009-1-18 00:29 其实在{zj2}解码的“视频输出”一栏有一个选项是“VMR9 修正黑位”,也可以比较xx的解决黑位错误,但是在vista下对H.264编码的片子无法硬解,所以不是{zh0}的解决方案。(“VMR9 修正黑位”、“nvidia驱动设置”、CoreAVC的解码器设置都能达到修正黑位的目的,选择一个即可,多选的话就会出现修正过度的问题) 二 关于硬解 现在看很多人都在讨论怎么怎么硬解,有些人明明硬件很强大,还在寻找硬解之道~对此我很不理解~ 我觉得我们首先要确定的是我们是否需要硬解~(硬解不会对画质的提升有任何帮助,其实{zh0}的画质是需要软接得到)播放一个电影,如果平均cpu占用率低于75%,我认为就没有硬解的必要~~ 当然有些人的机器比较老播放片子的cpu占用率过高,所以想寻求硬解之道,那么在这里还需要强调的是并不是所有的显卡都支持硬解。 现在的高清片源编码方式主要为(H.264、VC-1、mpeg2) 在nvidia的阵营里,真正能通吃所有硬解的只有geforce 8系列(不包括8800gtx,8800gts 320,8800ultra),geforce 9系列,geforce gtx 2××系列(能买的起gtx280的估计cpu可以软解现阶段任何高清视频了)。 而geforce 6系列、7系列、8系列的几款(gtx,gts320,ultra)都只能硬解mpeg2,对于VC-1以及H.264都只能部分硬解而不是xx硬解,能分担一部分cpu的工作,降低些cpu占用率,但效果不是很明显~(6系列能不能硬解h264跟vc1有点记不清了~~太长时间不关注显卡了) 至于geforce5系列之前的....只能硬解mpeg2编码的视频,局限性太高,而且如果是这种显卡估计cpu也不会太强,不想升级的话还是告别1080p吧~~ 好了,废话说了不少,下面说一下具体怎么打开硬解~ 其实在{zj2}解码里面的设置选项已经很详细了(借用一张别人的图) (34.03 KB) 2009-1-18 00:43 在xp下,对于n卡,如此设置就可以打开(mpeg,h264及vc1的硬解),但是在vista下不行,在vista下mpeg跟vc1没有问题,但是对于h264编码的片子,想要硬解的话在“视频输出”一项里要选择"EVR 增强型渲染(C/A)"(具体为什么我也不知道) 好了,墨迹了一堆话,发了一堆图,希望能够给新手些帮助~~
======================================以下为本人的补冲======================================
这个帖子是关于黑位修正问题最正确的一篇,以往别人的帖子没有很好的说明过度修正的问题。 下面补充下我的心得(以下假定使用VMR9无渲染以及N卡的情况下,色彩范围的讨论只针对播放视频) 1。电脑用VGA或DVI接电视机时,大部分电视机工作于PC模式,在这种情况下电视机颜色的动态范围为0-255,跟显示器一样,存在黑位问题;而电脑用HDMI、色差或是S端子线接电视机时,电视机颜色的动态范围为16-235,不存在黑位问题。 2。如果色系输出为RGB32同时render接受RGB32的话,此时不存在黑位问题,但速度较慢。在我的机子(肥龙2 945+GTX275)上,基本流畅,cpu占用也不是很高,但大概每一二十秒左右会有几帧不太流畅,不知道哪的问题,而换回YV12后就没这问题。 3。一般情况下,用CoreAVC解码x264时不存在黑位问题,因为CoreAVC可以根据片子(x264编码的片子中内置了正确的灰阶设定)和连接到的render自动设置正确的色彩范围。上面的帖子之所以把CoreAVC设定为TV Level输出,就是为了防止过度纠正黑位的问题。因为CoreAVC output level选auto时,当连接的render是VMR时,会自动输出为PC Level,而如果在渲染器或驱动处重新做一次TV Level to PC Level时,就会出现过度纠正的问题;而CoreAVC output level设置为TV Level时,后面再做黑位校正TV Level to PC Level时就不会有任何问题。另外,几乎所有的x264片子都是按TV Level压制的(因为无论片源是HDTV还是BD,DVD,都是TV LEVEL,除非压片者故意转成PC LEVEL),因此CoreAVC输入选AUTO或TV LEVEl,输出选TV Level时不会进行任何内部的Y/C伸张或压缩,不会失真,大可放心. 4。如果不闲麻烦,可以看x264时保持播放器、驱动默认设置,然后当看divx,xvid,rmvb时再设置黑位校正.对于{zj2}解码来说就是看divx,xvid,rmvb时设置为黑位修正模式或者选择FIXVMR shader,而看x264时不设置为黑位修正,不开启FIXVMR shader;原作者之所以CoreAVC处也做设置,就是为了不用把设置换来换去,来一个一劳永逸的解决办法