零基础,史上最通俗视频编码技术入门( 三 )


正因为如此,屌丝工程师们就提出了,必须对视频进行编码 。
4.3 什么是编码?
编码:就是按指定的方法,将信息从一种形式(格式),转换成另一种形式(格式) 。视频编码:就是将一种视频格式,转换成另一种视频格式 。

零基础,史上最通俗视频编码技术入门

文章插图
 
编码的终极目的,说白了,就是为了压缩 。各种五花八门的视频编码方式,都是为了让视频变得体积更小,有利于存储和传输 。
我们先来看看,视频从录制到播放的整个过程,如下:
零基础,史上最通俗视频编码技术入门

文章插图
 
首先是视频采集 。通常我们会使用摄像机、摄像头进行视频采集 。限于篇幅,我就不打算和大家解释CCD成像原理了 。
零基础,史上最通俗视频编码技术入门

文章插图
 
采集了视频数据之后,就要进行模数转换,将模拟信号变成数字信号 。其实现在很多都是摄像机(摄像头)直接输出数字信号 。信号输出之后,还要进行预处理,将RGB信号变成YUV信号 。
前面我们介绍了RGB信号,那什么是YUV信号呢?
简单来说,YUV就是另外一种颜色数字化表示方式 。视频通信系统之所以要采用YUV,而不是RGB,主要是因为RGB信号不利于压缩 。在YUV这种方式里面,加入了亮度这一概念 。在最近十年中,视频工程师发现,眼睛对于亮和暗的分辨要比对颜色的分辨更精细一些,也就是说,人眼对色度的敏感程度要低于对亮度的敏感程度 。
所以,工程师认为,在我们的视频存储中,没有必要存储全部颜色信号 。我们可以把更多带宽留给黑—白信号(被称作“亮度”),将稍少的带宽留给彩色信号(被称作“色度”) 。于是,就有了YUV 。
YUV里面的“Y”,就是亮度(Luma),“U”和“V”则是色度(Chroma) 。
大家偶尔会见到的Y'CbCr,也称为YUV,是YUV的压缩版本,不同之处在于Y'CbCr用于数字图像领域,YUV用于模拟信号领域,MPEG、DVD、摄像机中常说的YUV其实就是Y'CbCr 。
零基础,史上最通俗视频编码技术入门

文章插图
 
▲ YUV(Y'CbCr)是如何形成图像的
YUV码流的存储格式其实与其采样的方式密切相关 。(采样,就是捕捉数据)
主流的采样方式有三种:
1)YUV4:4:4;
2)YUV4:2:2;
3)YUV4:2:0 。

零基础,史上最通俗视频编码技术入门

文章插图
 
具体解释起来有点繁琐,大家只需记住,通常用的是YUV4:2:0的采样方式,能获得1/2的压缩率 。
这些预处理做完之后,就是正式的编码了 。
有关视频编码的更多专业知识,可以详细阅读以下文章:
《即时通讯音视频开发(一):视频编解码之理论概述》
《即时通讯音视频开发(二):视频编解码之数字视频介绍》
《即时通讯音视频开发(三):视频编解码之编码基础》
《即时通讯音视频开发(四):视频编解码之预测技术介绍》
《即时通讯音视频开发(五):认识主流视频编码技术H.264》
5、视频编码的实现原理5.1 视频编码技术的基本原理
前面我们说了,编码就是为了压缩 。要实现压缩,就要设计各种算法,将视频数据中的冗余信息去除 。当你面对一张图片,或者一段视频的时候,你想一想,如果是你,你会如何进行压缩呢?
零基础,史上最通俗视频编码技术入门

文章插图
 
▲ 对于新垣女神,我一bit也不舍得压缩…
我觉得,首先你想到的,应该是找规律 。是的,寻找像素之间的相关性,还有不同时间的图像帧之间,它们的相关性 。
举个例子:如果一幅图(1920×1080分辨率),全是红色的,我有没有必要说2073600次[255,0,0]?我只要说一次[255,0,0],然后再说2073599次“同上” 。
零基础,史上最通俗视频编码技术入门

文章插图
 
如果一段1分钟的视频,有十几秒画面是不动的,或者,有80%的图像面积,整个过程都是不变(不动)的 。那么,是不是这块存储开销,就可以节约掉了?
零基础,史上最通俗视频编码技术入门

文章插图
 
▲ 以上图为例,只有部分元素在动,大部分是不动的


推荐阅读