【经验分享】RTC 技术系列之视频编解码

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要了解什么是视频编解码,首先我们需要了解什么是视频","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"视频归根结底是一系列连续的图像帧,当这些图像以一定速率播放时,人眼就会判断其是连续活动的,这样就构成了视频。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那为什么要进行视频编解码呢,因为视频信号数字化后数据量巨大,如果以这样的数据量进行网络传输或者存储时,会占用大量的带宽和存储空间,造成浪费。已当前主流的1080P分辨率,一秒30帧的视频举例","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1080P图像的高和宽分别为1080和1920,每个像素用三原色RGB表示(即每个像素三个字节),因此每帧图像的数据量为1080*1920*3*8=49766400,每秒30帧,则需要乘以30,49766400*30 = 1,492,992,000bps。因此视频编解码技术因此而诞生。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"为什么视频可以压缩呢,我们分两个方面看这个问题","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1 在一副图像中,往往有相近的颜色区域,这样就蕴含了大量的冗余信息,可以基于","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"变化编码和量化编码进行冗余信息处理,达到压缩的可能。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"2 两幅图像之间,肯定也存在大量相同以及相似的部分,因此产生了运动补偿及运动估计来描述运动矢量来进行图像间冗余信息压缩的可能。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"基于图像内预测编码和图像间预测编码原理,诞生了众多的视频编解码","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/bf/bfeeefe21e63d537b79238804a7a33e6.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"H.26X系列,从H.261,H.263,到当前主流的H.264,及H.265,当前最新制定标准的H.266;H.26X系列的发展宗旨为使用技术优化压缩数据量不能够达到更好的视频质量;像","attrs":{}},{"type":"text","text":"H.265旨仅需原先的一半带宽即可播放相同质量的视频。它与H.264有着相类似的算法架构,并同时对一些相关技术加以改进而大幅提高视频质量。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Mpeg系列,Mpeg1,Mpeg2,Mpeg4(Mpeg4之后与H.264融合)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"VP系列,VP8,VP9;VP系列是Google自研并开源的编解码系列,Google创建VP系列编解码的原因也是H.264需要专利费用,即如果WebRTC使用H.264,则需要按浏览器支付相关的专利费用(当然由于H.264广泛支持性,主要原因还是cisco开源了OpenH64),VP8即对标H.264,除了在WebRTC领域,其知名度和支持度则相对有限;","attrs":{}},{"type":"text","text":"VP9则对标H.265,VP9的目标之一是在保证相同质量的情况下相对于VP8可以减少50%左右的码率,换句话说,相同的码率,VP9能比VP8画质有非常明显的提高。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"国产系列,AVS标准,AVS1.0,AVS2.0;","attrs":{}},{"type":"text","text":"AVS是我国具备自主知识产权的第二代信源编码标准。AVS2.0,属于与H.265和VP9同级的新一代标准;虽然AVS的使用和知名度貌似不高,但说明我国已经注意到这个领域并发力。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SVAC标准,我国一个应用于视频监控领域的编解码,特点在于加密认证高安全:规定了加密和认证接口及数据格式,保证数据的安全性、完整性、非否认性;感兴趣区域(ROI)编码:图像分为若干个感兴趣区域和一个背景区域,在重点监控区域保证实时视频信息,帧率较高,节省非感兴趣区域的开销; 视频信息嵌入,可将声音识别特征参数、特殊事件、时间等信息都可嵌入编码里,在不解开视频的前提下,可针对性的提取、快速检索、分类查询;可伸缩性视频解码(SVC):对视频数据分层编码,满足不同传输网络宽带和数据存储环境的需求,普通编码程序传输有主码流、子码流,占用带宽较大,SVAC传输只有一类码流,对码流分层就可获得不同分辨率的图片信息。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"WebRTC最初由Google提出,主要是基于浏览器的RTC通讯,故此叫做WebRTC;初期几大浏览器在WebRTC及其视频编解码支持的力度上也是不一的,像Mozilla阵营的Chrome,FireFox,Opera初期也不一样,Chrome初期只支持VP系列,原因上面介绍过,后续逐渐延伸到H.264,由于原有的RTC通讯领域大都使用H.264编解码,因此H.264的支持对于跨领域RTC互通提供了很大便利,我觉得也一定程度上加速了WebRTC的发展,比如浏览器和手机同时加入到视频会议;或者浏览器跟当前的SIP终端点点通话,由于H.264的支持,大大减少了转码的要求,做视频的转码是非常消耗性能的,或者使用专用硬件实现。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/d2/d242b8a3e7fd7d5acd394cd09ffdde12.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"当然后续越来越多厂家加入了WebRTC领域,像Agora声网的RTC系统,已经超过了WebRTC,像他的各种硬件芯片平台的SDK适配,SD-RTN系统(优先路径选择确保高的传输质量,毕竟通讯不是纯终端侧的功能,网络对通讯质量,视频或者音频的影响也是juda),优异的弱网对抗算法,可以抵御70%的视频丢包确保通话流畅。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"当前随着物联网的发展,除了人们的通话通讯,音视频会议之外,RTC越来越广泛的应用各个领域;像安防监控,智能硬件终端,视频处理所处的硬件设备越来越小型甚至微型化,原有的基于软件进行编解码,无论从内存,CPU,性能等资源占用方面,都显示出很大劣势;众多厂家也意识到这个情况,因此越来越多的专业芯片干专业事情的趋势越发明显。像监控领域,华为海思ARM+专业视频处理单元,占据了国内视频70%以上的市场;NVIDIA推出了Jeston系列芯片,应对边缘计算场景,ARM+GPU的处理方式更通用,同时由于ARM的低功耗,可以使得边缘侧设备具备视频处理,机器视觉处理,AI分析能力,大大丰富了智能物联网的应用。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由于这两年的疫情,在线教育,直播的发展,Web实时通讯带来了非常大的发展机会,其商业化成功也为技术发展持续注入了活力;伴随着5G的火热,VR/AR、自动驾驶等新应用场景的出现,必将为WebRTC技术带来新的动力,催动着基于互联网的实时音视频通信技术的发展。","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章