2024年5月12日发(作者:皋珑)
本文章2012.1.18更新
测试用视频:
/folder/fdon21ks
一、前言
10bit视频的播放,想偷懒的人可以直接用最新版MPC-HC、Potplayer、mplayer、QQ
影音等播放器,或者使用各种解码包的最新版(都是使用ffdshow/LAV实现解码的),其
内部解码器都是基于ffmpeg(libav)的。这些播放器和解码器中用的色彩转换也基本都是
libswscale,所以有部分会出现色彩空间转换上的错误以及dither方式的不恰当。并且由
于10bit YUV到8bit YUV再到8bit RGB的坑爹转换过程使损失也大大增加(前一步对
于10bit而言还有dither的过程,可以增加一定的精度,8bit视频播放就是做了后面的一
步,所以即使这样10bit的效果也还是比8bit重编码的情况好不少)。
于是对回放质量(8bit、10bit都能受益)有追求的可以参考下面介绍的基于MPC-HC使
用madVR的播放教程,也可以看VX的播放攻略,其中也包括对于电脑性能不足的情况的
解决方案:/article/
关于10bit视频播放对电脑性能的要求,主要是不支持硬解(包括DXVA、CUVID、
QuickSync),所以要靠软解,而目前软解10bit视频效率最高的就是LAV Video
Decoders,基本上短时码率不超过30Mbps的话现在的双核CPU都能应付。但为了最佳
的回放要靠madVR渲染器,而madVR内部各种mad的处理过程靠的不是CPU,而是
GPU的Shader,也就是说显卡不能太差,显卡要能支持DX 9.0c,显存最好在384MB
以上,对显卡性能的要求我没有什么可以参考的依据,只知道我自己笔记本上的GT420M
和HTPC上的HD5550都毫无压力。
二、10bit的优势
有关10bit重编码的优势,实际上就是用更高位深来进行数据的有损编码的优势,而且bit
越高效果越好。最简单的一句话就是,压缩率更高,以更低的码率提供更好的还原效果,这
已经足够具有意义了。
在二进制下对8bit的源数据进行有损编码,造成相同量化损失时,以8bit为100%的error
(残差)时,9bit为50%的error,10bit为25%,12bit为6.25%……所以在HEVC(也
就是H.265)里有个叫IBDI(Internal bit depth increase)的技术,就是用12bit的内
部精度来进行8bit源数据的重编码。
例如:
8bit源数据: 10011010
8bit量化后: 10011011
10bit量化后:1001101001
12bit量化后:1
当然相同量化时肯定是bit越高的数据占的容量多,但由于损失程度的降低,综合下来的结
果是,相同码率下高位深编码的还原程度始终大于等于低位深。
2024年5月12日发(作者:皋珑)
本文章2012.1.18更新
测试用视频:
/folder/fdon21ks
一、前言
10bit视频的播放,想偷懒的人可以直接用最新版MPC-HC、Potplayer、mplayer、QQ
影音等播放器,或者使用各种解码包的最新版(都是使用ffdshow/LAV实现解码的),其
内部解码器都是基于ffmpeg(libav)的。这些播放器和解码器中用的色彩转换也基本都是
libswscale,所以有部分会出现色彩空间转换上的错误以及dither方式的不恰当。并且由
于10bit YUV到8bit YUV再到8bit RGB的坑爹转换过程使损失也大大增加(前一步对
于10bit而言还有dither的过程,可以增加一定的精度,8bit视频播放就是做了后面的一
步,所以即使这样10bit的效果也还是比8bit重编码的情况好不少)。
于是对回放质量(8bit、10bit都能受益)有追求的可以参考下面介绍的基于MPC-HC使
用madVR的播放教程,也可以看VX的播放攻略,其中也包括对于电脑性能不足的情况的
解决方案:/article/
关于10bit视频播放对电脑性能的要求,主要是不支持硬解(包括DXVA、CUVID、
QuickSync),所以要靠软解,而目前软解10bit视频效率最高的就是LAV Video
Decoders,基本上短时码率不超过30Mbps的话现在的双核CPU都能应付。但为了最佳
的回放要靠madVR渲染器,而madVR内部各种mad的处理过程靠的不是CPU,而是
GPU的Shader,也就是说显卡不能太差,显卡要能支持DX 9.0c,显存最好在384MB
以上,对显卡性能的要求我没有什么可以参考的依据,只知道我自己笔记本上的GT420M
和HTPC上的HD5550都毫无压力。
二、10bit的优势
有关10bit重编码的优势,实际上就是用更高位深来进行数据的有损编码的优势,而且bit
越高效果越好。最简单的一句话就是,压缩率更高,以更低的码率提供更好的还原效果,这
已经足够具有意义了。
在二进制下对8bit的源数据进行有损编码,造成相同量化损失时,以8bit为100%的error
(残差)时,9bit为50%的error,10bit为25%,12bit为6.25%……所以在HEVC(也
就是H.265)里有个叫IBDI(Internal bit depth increase)的技术,就是用12bit的内
部精度来进行8bit源数据的重编码。
例如:
8bit源数据: 10011010
8bit量化后: 10011011
10bit量化后:1001101001
12bit量化后:1
当然相同量化时肯定是bit越高的数据占的容量多,但由于损失程度的降低,综合下来的结
果是,相同码率下高位深编码的还原程度始终大于等于低位深。