视频编码零基础入门

鲜枣课堂 2019-11-12 22:06

如今我们所处的时代,是移动互联网时代,也可以说是视频时代。



从快播到抖音,从“三生三世”到“延禧攻略”,我们的生活,被越来越多的视频元素所影响。



而这一切,离不开视频拍摄技术的不断升级,还有视频制作产业的日益强大。



此外,也离不开通信技术的飞速进步。试想一下,如果还是当年的56K Modem拨号,或者是2G手机,你还能享受到现在动辄1080P甚至4K的视频体验吗?



除了视频拍摄工具和网络通信技术升级之外,我们能享受到视频带来的便利和乐趣,还有一个重要因素,就是视频编码技术的突飞猛进。



今天,我就给大家做一个关于它的零基础科普。




     图像基础知识    




说视频之前,先要说说图像。


图像,大家都知道,是由很多“带有颜色的点”组成的。这个点,就是“像素点”



像素点的英文叫Pixel(缩写为PX)。这个单词是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的。


电影《像素大战(Pixels)》,2015年


像素是图像显示的基本单位。我们通常说一幅图片的大小,例如是1920×1080,就是长度为1920个像素点,宽度为1080个像素点。乘积是2,073,600,也就是说,这个图片是两百万像素的。


1920×1080,这个也被称为这幅图片的分辨率。



分辨率也是显示器的重要指标


那么,我们经常所说的PPI又是什么东西呢?


PPI,就是“Pixels Per Inch”,每英寸像素数。也就是,手机(或显示器)屏幕上每英寸面积,到底能放下多少个“像素点”。


这个值当然是越高越好啦!PPI越高,图像就越清晰细腻。



以前的功能机,例如诺基亚,屏幕PPI都很低,有很强烈的颗粒感。



后来,苹果开创了史无前例的“视网膜”(Retina)屏幕,PPI值高达326(每英寸屏幕有326像素),画质清晰,再也没有了颗粒感。



像素点必须要有颜色,才能组成缤纷绚丽的图片。那么,这个颜色,又该如何表示呢?


大家都知道,我们生活中的颜色,可以拥有无数种类别。


光是妹纸们的口红色号,就足以让我们这些屌丝瞠目结舌。。。


在计算机系统里,我们不可能用文字来表述颜色。不然,就算我们不疯,计算机也会疯掉的。在数字时代,当然是用数字来表述颜色。


这就牵出了“彩色分量数字化的概念。


以前我们美术课学过,任何颜色,都可以通过红色(Red)绿色(Green)蓝色(Blue)按照一定比例调制出来。这三种颜色,被称为“三原色”



在计算机里,R、G、B也被称为“基色分量”。它们的取值,分别从0到255,一共256个等级(256是2的8次方)。


所以,任何颜色,都可以用R、G、B三个值的组合表示。


RGB=[183,67,21]


通过这种方式,一共能表达多少种颜色呢?256×256×256=16,777,216种,因此也简称为1600万色。RGB三色,每色有8bit,这种方式表达出来的颜色,也被称为24位色(占用24bit


这个颜色范围已经超过了人眼可见的全部色彩,所以又叫真彩色。再高的话,对于我们人眼来说,已经没有意义了,完全识别不出来。





      视频编码基础知识     




好了,刚才说了图像,现在,我们开始说视频。


所谓视频,大家从小就看动画,都知道视频是怎么来的吧?没错,大量的图片连续起来,就是视频。



衡量视频,又是用的什么指标参数呢?


最主要的一个,就是帧率(Frame Rate)


在视频中,一个帧(Frame)就是指一幅静止的画面。帧率,就是指视频每秒钟包括的画面数量(FPS,Frame per second)。  


帧率越高,视频就越逼真、越流畅。


有了视频之后,就涉及到两个问题,一个是存储,二个是传输。



而之所以会有视频编码,关键就在于此:一个视频,如果未经编码,它的体积是非常庞大的。


以一个分辨率1920×1280,帧率30的视频为例。


1920×1280=2,073,600(Pixels 像素)

每个像素点是24bit(前面算过的哦)

也就是每幅图片2073600×24=49766400bit


8 bit(位)=1 byte(字节),所以,49766400bit=6220800byte≈6.22MB。


这是一幅1920×1280图片的原始大小,再乘以帧率30,也就是说,每秒视频的大小是186.6MB,每分钟大约是11GB,一部90分钟的电影,约是1000GB。。。


吓尿了吧?就算你现在电脑硬盘是4TB的(实际也就3600GB),也放不下几部大姐姐啊!


不仅要存储,还要传输,不然视频从哪来呢?


如果按照100M的网速(12.5MB/s),下刚才那部电影,需要22个小时。。。再次崩溃。。。


正因为如此,屌丝工程师们就提出了,必须对视频进行编码。



什么是编码?


编码,就是按指定的方法,将信息从一种形式(格式),转换成另一种形式(格式)。


视频编码,就是将一种视频格式,转换成另一种视频格式。



编码的终极目的,说白了,就是为了压缩。


各种五花八门的视频编码方式,都是为了让视频变得体积更小,有利于存储和传输。


我们先来看看,视频从录制到播放的整个过程,如下:



首先是视频采集。通常我们会使用摄像机、摄像头进行视频采集。限于篇幅,我就不打算和大家解释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码流的存储格式其实与其采样的方式密切相关。(采样,就是捕捉数据。


主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。



具体解释起来有点繁琐,大家只需记住,通常用的是YUV4:2:0的采样方式,能获得1/2的压缩率。


这些预处理做完之后,就是正式的编码了。




     视频编码的实现原理    




前面我们说了,编码就是为了压缩。要实现压缩,就要设计各种算法,将视频数据中的冗余信息去除。


当你面对一张图片,或者一段视频的时候,你想一想,如果是你,你会如何进行压缩呢?


对于新垣女神,我一bit也不舍得压缩…


我觉得,首先你想到的,应该是找规律。


是的,寻找像素之间的相关性,还有不同时间的图像帧之间,它们的相关性。


举个例子,如果一幅图(1920×1080分辨率),全是红色的,我有没有必要说2073600次[255,0,0]?我只要说一次[255,0,0],然后再说2073599次“同上”。




如果一段1分钟的视频,有十几秒画面是不动的,或者,有80%的图像面积,整个过程都是不变(不动)的。那么,是不是这块存储开销,就可以节约掉了?


以我们的签名图为例,只有部分元素在动,大部分是不动的


是的,所谓编码算法,就是寻找规律,构建模型。谁能找到更精准的规律,建立更高效的模型,谁就是厉害的算法。


通常来说,视频里面的冗余信息包括:




视频编码技术优先消除目标,就是空间冗余和时间冗余。



接下来,小枣君就和大家介绍一下,究竟是采用什么样的办法,才能干掉它们。


以下内容稍微有点高能,不过我相信大家耐心一些还是可以看懂的。


视频是由不同的帧画面连续播放形成的。


这些帧,主要分为三类,分别是I帧,B帧,P帧。


I帧,是自带全部信息的独立帧,是最完整的画面(占用的空间最大),无需参考其它图像便可独立进行解码。视频序列中的第一个帧,始终都是I帧。


P帧,“帧间预测编码帧”,需要参考前面的I帧和/或P帧的不同部分,才能进行编码。P帧对前面的P和I参考帧有依赖性。但是,P帧压缩率比较高,占用的空间较小。


P帧


B帧,“双向预测编码帧”,以前帧后帧作为参考帧。不仅参考前面,还参考后面的帧,所以,它的压缩率最高,可以达到200:1。不过,因为依赖后面的帧,所以不适合实时传输(例如视频会议)。


B帧


通过对帧的分类处理,可以大幅压缩视频的大小。毕竟,要处理的对象,大幅减少了(从整个图像,变成图像中的一个区域)。



如果从视频码流中抓一个包,也可以看到I帧的信息,如下:



我们来通过一个例子看一下。


这有两个帧:



好像是一样的? 


不对,我做个GIF动图,就能看出来,是不一样的:



人在动,背景是没有在动的。


第一帧是I帧,第二帧是P帧。两个帧之间的差值,就是如下:



也就是说,图中的部分像素,进行了移动。移动轨迹如下:



这个,就是运动估计和补偿。



当然了,如果总是按照像素来算,数据量会比较大,所以,一般都是把图像切割为不同的“块(Block)”或“宏块(MacroBlock)”,对它们进行计算。一个宏块一般为16像素×16像素。


将图片切割为宏块



好了,我来梳理一下。


对I帧的处理,是采用帧内编码方式,只利用本帧图像内的空间相关性。


对P帧的处理,采用帧间编码(前向运动估计),同时利用空间和时间上的相关性。简单来说,采用运动补偿(motion compensation)算法来去掉冗余信息。 



需要特别注意,I帧(帧内编码),虽然只有空间相关性,但整个编码过程也不简单。


如上图所示,整个帧内编码,还要经过DCT(离散余弦变换)、量化、编码等多个过程。限于篇幅,加之较为复杂,今天就放弃解释了。



那么,视频经过编码解码之后,如何衡量和评价编解码的效果呢?


一般来说,分为客观评价和主观评价。


客观评价,就是拿数字来说话。例如计算“信噪比/峰值信噪比”。


搞通信的童鞋应该对这个概念不会陌生吧?



信噪比的计算,我就不介绍了,丢个公式,有空可以自己慢慢研究...



除了客观评价,就是主观评价了。


主观评价,就是用人的主观感知直接测量,额,说人话就是——“好不好看我说了算”。





     视频编码的国际标准    




接下来,我们再说说标准(Standard)


任何技术,都有标准。自从有视频编码以来,就诞生过很多的视频编码标准。


提到视频编码标准,先介绍几个制定标准的组织。


首先,就是大名鼎鼎的ITU(国际电信联盟)。


 


ITU是联合国下属的一个专门机构,其总部在瑞士的日内瓦。


ITU下属有三个部门,分别是ITU-R(前身是国际无线电咨询委员会CCIR)、ITU-T(前身是国际电报电话咨询委员会CCITT)、ITU-D。



除了ITU之外,另外两个和视频编码关系密切的组织,是ISO/IEC。



ISO大家都知道,就是推出ISO9001质量认证的那个“国际标准化组织”。IEC,是“国际电工委员会”。


1988年,ISO和IEC联合成立了一个专家组,负责开发电视图像数据和声音数据的编码、解码和它们的同步等标准。这个专家组,就是大名鼎鼎的MPEG,Moving Picture Expert Group(动态图像专家组)




三十多年以来,世界上主流的视频编码标准,基本上都是它们提出来的。


ITU提出了H.261、H.262、H.263、H.263+、H.263++,这些统称为H.26X系列,主要应用于实时视频通信领域,如会议电视、可视电话等。


ISO/IEC提出了MPEG1、MPEG2、MPEG4、MPEG7、MPEG21,统称为MPEG系列。

ITU和ISO/IEC一开始是各自捣鼓,后来,两边成立了一个联合小组,名叫JVT(Joint Video Team,视频联合工作组)



JVT致力于新一代视频编码标准的制定,后来推出了包括H.264在内的一系列标准。


压缩率对比


视频编码标准的发展关系


大家特别注意一下上图里面的HEVC,也就是现在风头正盛的H.265。


 


作为一种新编码标准,相比H.264有极大的性能提升,目前已经成为最新视频编码系统的标配。



最后,我再说说封装


对于任何一部视频来说,只有图像,没有声音,肯定是不行的。所以,视频编码后,加上音频编码,要一起进行封装。


封装,就是封装格式,简单来说,就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中。再通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个饭盒,用来盛放饭菜的容器。


目前主要的视频容器有如下:MPG、VOB、MP4、3GP、ASF、RMVB、WMV、MOV、Divx、MKV、FLV、TS/PS等。


封装之后的视频,就可以传输了,你也可以通过视频播放器进行解码观看。




     最后的话    




好啦!额滴神啊,终于介绍完了。。。


其实,小枣君之所以要做视频编码这么一个看似和通信无关的“跨界”专题,是有原因的。


以前我上大学的时候,就有一门专业课程,叫图像识别,当时是我们学校的王牌专业,属于计算机系。那个时候我并不明白,图像识别到底是什么,为什么“画画”这种事情,会归为“计算机类”。


后来,我才明白,所谓的“图像识别”,就是让计算机看懂图像。怎么样才能看懂呢?就是把图像数字化。


图像变成了数字,计算机就能从中找到规律,也就能对它进行分析(图像识别)和学习(机器学习)。



这么多年过去了,图像识别取得了非常大的发展。我们渐渐发现,摄像头开始“认脸”了,停车场开始“看懂”车牌了,生活开始变得不一样了。



更没有想到的是,机器学习和AI人工智能也因此迅速崛起,开始对传统技术发起挑战。


前段时间很火的谷歌“你画我猜”程序,就是AI结合图像识别技术的一个“人机交互”经典案例。


运算速度足够快,存储空间足够大,学习数据足够多,计算机可以海量分析图像和视频数据,寻找其中的规律,构建模型。如果这个AI足够强大,就能做出反应和处理。


在电影《鹰眼》里,也描绘到这样的一个场景:强大的AI大脑,控制全球的视频摄像头,还有所有的计算机系统、武器系统,可以随时在全球范围内,找到想找到的人,并且干掉他。电影《速度与激情6》里,也有类似的场景。


电影《鹰眼》,2008年


除此之外,还有3D视频、VR/AR等,也都是和图像视频密切相关的应用。


总而言之,图像和视频识别是一个非常有前途的技术领域,也是AI人工智能的基础,值得深入进行研究。我们一直在寻找的5G爆款应用,也很可能与这个领域有关!



好啦,今天的内容就到这里,感谢大家的耐心观看!


下期再见!



鲜枣课堂 学通信,学5G,就上鲜枣课堂!
评论
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 131浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 104浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 86浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 134浏览
  • 艾迈斯欧司朗全新“样片申请”小程序,逾160种LED、传感器、多芯片组合等产品样片一触即达。轻松3步完成申请,境内免费包邮到家!本期热荐性能显著提升的OSLON® Optimal,GF CSSRML.24ams OSRAM 基于最新芯片技术推出全新LED产品OSLON® Optimal系列,实现了显著的性能升级。该系列提供五种不同颜色的光源选项,包括Hyper Red(660 nm,PDN)、Red(640 nm)、Deep Blue(450 nm,PDN)、Far Red(730 nm)及Ho
    艾迈斯欧司朗 2024-11-29 16:55 181浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 134浏览
  • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
    youyeye 2024-11-30 14:30 85浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 88浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 103浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 141浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 88浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 150浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 121浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 109浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦