引入

 这个世界是一个动态与静态相结合的世界。但我们不妨思考一个问题:这动与静到底是如何为我们所发现所知晓的呢?
 而那就是颜色的存在,我们眼中颜色的变化,使得我们感受到了所谓的静态与动态!
 而在这个计算机早已发达到世人皆知世人皆用的地步,要是它不能够智能地通过显示屏让我们感受到动态与静态之间的相互变化,岂非滑天下之大稽!
 故——存在着色彩编码与视频编码这两种能够使我们更轻易地解决我们如何在显示屏上展现我们想要展示的事物的难题!


色彩编码

 其实就色彩编码而言是十分容易就能理解的一件事!(具体如下:

正常而言,我们所讲的色彩编码指的是16进制颜色代码:

一.16进制颜色代码以0、1、2、3、4、5、6、7、8、9、A、B、 C、D、E、F(或a~f,不区分大小写)共16位组成。

二.16进制颜色代码指定颜色的组成方式:前两位表示红色(red值),中间两位表示绿色(green值),最后两位表示蓝色(blue值)。把三个数值依次并列起来 ,以#开头。
如纯红:#FF0000 FF:即十进制的R(红)=255, 00和00即G(绿)=0和B(蓝)=0。
纯绿:#00FF00,即R=0,G=255,B=0。

问题来了:

  • 为什么使用 6 位数来表示一种颜色而不是只用一位或二位?
    因为:使用6位数可提供巨大数量的颜色变化。

  • 那么会有多少种可能的颜色?

  • 16 个值和 6 个位置意味着有 16 的 6 次方,或者说超过 1600 万种可能的颜色。

但是似乎还存在着一种可以有8位数来表示色彩的,难道那种更加强大?
比如#ff4b4b4b;那个ff是什么意思?这就不得不引入ARGB与RGB的分类了:

1.两者是拥有着不同标准的色彩空间!

2.Adobe RGB和sRGB色彩空间的主要区别,首先在于开发时间和开发厂家不同。sRGB色彩空间是美国的惠普公司和微软公司于1997年共同开发的标准色彩空间(standard Red Green Blue),由于这两家公司的实力强,他们的产品在市场中占有很高的份额。而AdobeRGB 色彩空间是由美国以开发Photoshop软件而闻名的Adobe公司1998年推出的色彩空间标准,它拥有宽广的色彩空间和良好的色彩层次表现。

3.广义来说,AdobeRGB是较好的选择,因为他有更广泛的色彩范围,怎么说呢?AdobeRGB的色彩范围比sRGB还多出35%(如下图),以至于照片呈现的色彩将会更丰富。简单的来说,Adobe RGB的色彩更丰富,并且包容了SRGB所有的色彩。
色彩编码与视频编码
(上图来自网络搜索)

好的继续回到编码上来:那个看上去奇奇怪怪ff是ARGB颜色与传统RGB颜色相比增加的Alpha值,Alpha值用来表示透明度
比如说你可以对比以下两句:
这是#D404C4的颜色
这是#ffD404C4的颜色


是不是感觉有点区别呢?
但想要凸显出其区别,还是需要质量更好的显示屏!颜色已是如此,更何况我们的视频。假如我们用一台上世纪的显示频(如Commodore系列里的)来看大千世界的直播,和用一台当代LCD或LED显示屏来看,卿欲用何者?答案自然而出!
 那么,于视频而言,其是如何将各种不同的颜色变化乃至团变化转化为我们能够看到如此真实的效果的呢?

色彩编码与视频编码
依旧是如此,通过传感器的采集,然后通过信号的转换最终通过程序转换为RGB或ARGB信号(编码)使得视频能够发生颜色的改变!
色彩编码与视频编码


视频编码

 所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263、H.264,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo、微软公司的WMV以及Apple公司的QuickTime等。————百度百科


其中不但有颜色的变化,也有着音频之类其他的变化(此些先不论),而就颜色而言,上述几种不同的编解码标准之间的切换就可能会给带来色差!有时需要在核芯显卡控制里对色彩增强效果进行调整,有时却难以恢复正常效果!


因此对号采集编码十分必要————比如:Android视频采集编码颜色格式选择
其中的配置与之后的调试便尤为重要了,而知晓这些的前提是先得对android CodecCapabilities 图像格式有一定的了解!


贴上其格式表:

A分量为透明度分量,假如这个分量占1bit,可以采用这个分量来设计背景透明的文字或图像, 如果占用多个bit,在可以通过这个bit设置多张图片的重叠效应。

int COLOR_Format12bitRGB444

每个像素12bit表示,RGB每个分量占4bit

int COLOR_Format16bitARGB1555

每个像素16bit表示,透明度A占1个bit, RGB每个分量占5bit

int COLOR_Format16bitARGB4444

每个像素16bit表示,透明度RGB分量,每个分量占用4bit表示

int COLOR_Format16bitBGR565

每个像素占用16bit, B分量占用5bit, G分量占用6bit, R分量占用5bit

int COLOR_Format16bitRGB565

每个像素占用16bit, R分量5bit,G分量6bit, B分量5bit

int COLOR_Format18BitBGR666

每个像素占用18bit, BGA每个分量占6bit

int COLOR_Format18bitARGB1665

每个像素占用18bit, 其中A占用1bit, R占用6bit, G占用6bit, B占用5bit

int COLOR_Format18bitRGB666

每个像素占用18bit, RGB每个分量占用6bit

int COLOR_Format19bitARGB1666

每个像素占用19bit, A分量占用1bit, RGB每个分量占用6bit

int COLOR_Format24BitABGR6666

每个像素占用24bit, ABGR每个分量占用6bit

int COLOR_Format24BitARGB6666

每个像素占用24bit, ARGB每个分量占用6bit

int COLOR_Format24bitARGB1887

每个像素占用24bit, A分量占用1bit, RG每个分量占用8bit, B分量占用7bit

int COLOR_Format24bitBGR888

每个像素占用24bit, BGR每个分量占用8b it

int COLOR_Format24bitRGB888

每个像素占用24bit, RGB分量,每个分量占用8bit

int COLOR_Format25bitARGB1888

每个像素占用25bit, 透明度A占用1bit , RGB每个分量占用8bit

int COLOR_Format32bitARGB8888

每个像素占用32bit, ARGB每个分量占8bit

int COLOR_Format32bitBGRA8888

每个像素占用32bit, BGRA每个分量占用8bit

int COLOR_Format8bitRGB332

每个像素占用8bit, 其中R分量占用3bit, G分量占用3bit, B分量占用2bit

int COLOR_FormatCbYCrY

(RGB三基色格式)


结束语

 对相关领域的相关专业知识有些许理解能够更好地让 自己在自身领域中涉及该相关领域 能够更加顺利地完成任务!对颜色和更多内容在视频编码(转码)中的保存与变化余还需更多地去了解。


(部分内容源自网络)

相关文章: