转载声明
本文转载自知乎用户沈万马,仅做个人学习交流使用,侵删。
正文内容
简单说,10bit视频是指一种视频编码的特征,意思是每个颜色通道用10个bit来表达。这样,每个颜色通道的色彩级数从8bit的256级提高到了1024级,就可以更细致地表达颜色。
实际体验上,更细致的颜色分级意味着渐变色更细腻。在8bit编码下,有些时候一些渐变色块由于色彩变化范围很小而面积很大,容易导致一端到另一端总共只出现了很少的几种颜色,这就使得画面看上去不是渐变色带而是几块颜色,这种现象叫做banding。10bit由于颜色级数是8bit的4倍,色块就不容易出现,同时由于相邻颜色区别更小,人眼也难以看出色块之间的界限。
虽然直观上感觉10bit比8bit多占用25%的数据量,但实际上在实践中10bit往往能带来更高的压缩率。这是由于10bit更能准确地描述颜色,提升了信噪比。例如为了解决banding,8bit编码技术可以通过一种称为dither(抖动)的方法,也就是在色块边缘混入细碎的相邻色的色点,来模糊色块边缘。但是由于这些色点的存在大幅提高了画面的复杂度,产生了许多冗余信息量。由于8bit必须采用这些技术来提高视觉观感,所以8bit编码往往要引入大量冗余信息,而10bit不需要dither也能实现一样的画面感受,所以往往10bit编码出来的视频大小小于同等质量的8bit视频。
有人可能关心10bit编码并没有意义,因为最终用户的屏幕可能只有6bit或者8bit。这不会使10bit变得没有意义,因为最终在输出阶段画面会经由输出硬件或渲染软件抖动。这样就能够在6bit/8bit的设备上实现类似10bit的输出效果。
当然10bit不是没有缺点。首先,计算机系统处理数据的单位往往是byte,也就是8bit。使用10bit,可能会浪费一部分硬件数据传输和处理能力,使得处理性能低于8bit编码。这也是为什么一直以来使用8bit的原因。同时,该技术较新,很多硬件和软件尚没有提供较好的支持,使得应用起来往往存在播放困难、消耗太多资源等等问题。