浅谈H264

前言

图像编解码技术是基于传输媒体开发的,经历了早期的卫星通信、电话通讯等通讯技术。互联网时代的到来,使得IP网络开始普及,出现了基于IP网络的H323视频传输协议,同时,更兼容IP网络的H264视频编解码协议也应运而生。

两者共同组成了一个体系,即H264负责视频编解码,而H323负责网络传输。我们可以把编码的过程理解为把图像拆分为零件、解码过程是将零件组装起来还原成一个完整图像,而网络传输就是将每一个零件及时准确地从编码端送到解码端。

简单来说就是H264负责拆分和组装零件,而H323负责运输零件。

浅谈H264
浅谈H264

H264的原理

1、概念

浅谈H264

在图像编码中,有两个重要的概念,帧、行和场。

(一)帧

相信大家都玩过动画,捏住画本的一侧,翻动画本就变会成一套连贯动作的动画。视频也是一样,我们把一个静止的画面称为帧,人眼的能感知每秒24帧,所以视频都是高于24帧的。由于,早期信号取样于市电的交流电频率,如,美国、日本为60HZ,欧洲、中国为50HZ,就出现了美国和日本采用的N制30/60帧,欧洲以及中国采用的P制25/50帧。

(二)行和场

一帧画面是由一个水平扫描和一个垂直扫描组成的,行是水平扫描、场是垂直扫描,然后再由行和场,重构为完整的画面。

电视领域有逐行扫描和隔行扫描两个模式。由于传输带宽和硬件限制,早期都是逐行扫描,将行和场分开传输后在接收端组成一个画面,这样的好处是传输的信号量只有一半,但是由于非同步的时差,画面边缘会有毛刺,肉眼会有闪烁感。而逐行扫描是将行和场同时扫描、同步传输,相比逐行扫描能得到更流畅、更平滑的观感。如,显示屏参数1080P和1080I,P就是代表逐行扫描、而I代表隔行扫描。随着硬件提升,逐行扫描也逐渐普及起来,绝大多数设备已标配逐行扫描,仅电视行业还保留着隔行扫描。

2、编解码原理

浅谈H264

编解码有两个模式即帧编码和场编码,两者区别是帧编码适合运动量较小或者静音画面,而场编码适合运动量较大的画面,在视频会议中,由于画面运动量较小大多情况下是帧编码。

浅谈H264

图片来源于参考资料

(一)编码过程

H264编码是一种有损压缩的编解码格式。将摄像头采集到视频帧被送到 H264 编码器的缓冲区后,编码器会为每一幅图片划分若干模块,如下图:

浅谈H264

图片来源于参考资料

每一个块会使用8×8或16×16来计算像素值,形成像素的颜色、位置等数据。

浅谈H264

图片来源于参考资料

依次将每个块的像素值计算后,就变成由像素点组成的一组数据。这样一帧画面就转变成数据形式,如下图:

浅谈H264

图片来源于参考资料

(二)压缩过程

以打台球为例,我们将打出台球这一个连续动作的一组画面作为一段视频,截取其中一帧。

浅谈H264

图片来源于参考资料

然后H264编码器会按顺序,每次取出两幅相邻的帧进行宏块比较,找出模块的相似度。以前后两帧的图像为例子:

浅谈H264

图片来源于参考资料

上面两张图像我们发现:相邻的像素往往很相似、相邻的帧的内容往往很相似,并且对明暗细节不敏感。H264编码根据“在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内”的算法做了相应压缩,即空间位置不同的帧间压缩、不敏感细节信息的帧内压缩和近似内容的算法压缩。它们的区别是:

帧间压缩是采用运动矢量与补偿称对相邻的内容记录不同的位置信息。

帧内压缩是将人眼不敏感高频亮度的数据去除掉,记录敏感的低频亮度。

DCT和CABAC压缩是通过对比,去掉有相关性多余的数据,进一步压缩数据。

这样据得到三个数据,即I帧、P帧和B帧。I帧是完整编码的帧,P帧是相比前一个I帧生成的只包含差异部分编码的帧,B帧是前后的帧重新编码的帧。

(三)网络传输

经算法编码后,我们只保留第一帖的完整数据,其它帧都通过参考上一帧计算出来。我们称第一帧为IDR/I帧,其它帧我们称为P/B帧,这样编码后的数据帧组我们称为GOP。

GOP的数据帧在网络上进行传输,而传输网络包的最大传输单元是1500字节,由于一帧的数据往往是大于1500字节,所以就需要将一个帧拆成多个数据包进行传输。

(四)解码

如此一来,编码端把画面拆成一个可以供给网络传输的零件,通过H323协议送到解码端后,解码端会根据H264算法,将零件重新组装起来,还原成非常接近初始的画面。

浅谈H264

工作中的应用

通过上面大家可以解到,视频中传输主要数据是关键的I帧数据,如果得不到I帧的话,解码端无法还原画面。因此,设计了一个向编码端重新发送I帧的机制,这种现象我们称为I帧请求。

1、常见问题

浅谈H264

I帧请求通过网络协发送,就出现了网络术语中“RTP丢包重传”,常常出现三种情形:

(一)花屏和马赛克

在网络不佳情况下,未收到上一个报文时就再次发起新的I帧请求,大量报文会挤占网络通道直到网络拥堵,从而引起花屏、马赛克等问题,严重影响整体观感。

浅谈H264

(二)峰值

在网络延迟稍高情况下,新的I帧比算法中时间晚到,由于UDP包是无序的,所以会造成画面一定扭曲,肉眼下会出现明显的画面卡顿或部分图像细节错位,较影响整体观感。

浅谈H264

(三)抖动

在网络良好的情况下,解码端拿到新的I帧情况,由于I帧包含提前预测图像信息,能及时恢复初始化面,肉眼下仅画面边缘有一些锯齿和画面模糊情况,不会影响整体观感。

由此可见,视频会议对网络要求较高,必须符合三个标准:带宽不低于2M,丢包率低于1%,延迟不高于200ms。

2、带宽保障

浅谈H264

常使用QOS网络带宽保障来优化网络质量,常用固定带宽、固定链路、优先队列三种策略。

(一)固定带宽

在网路设备上为视频业务设置不低于2M的带宽的策略,可以保证为视频会议预留传输通道,但局限是需要双向做带宽保障,并在网络拥堵的情况下,由于网络延迟较高该策略已经失效。

(二)固定链路

为视频业务设置专用的网络链接通道,避免带宽拥堵时抢占端口。但局限是要全链接使用同一品牌、支持同协议的网络设备,不适用于各企业独立网路情况。

(三)优先队列

对IP地址设置专用标签,优先保障视频数据包优先传输。但局限是使用支持同协议的网络设备以识别标签信息,同样不适用于目前各企业独立网路情况。

浅谈H264

— End —

注:参考资料

https://cloud.tencent.com/developer/article/1608800?areaSource=102001.2&share_token=baa3f07f-89aa-4227-b539-ec2a4f0a856f

文章作者:黄勇文

手绘插画:岳    媛

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33084.html

Like (0)
EBCloud的头像EBCloud
Previous 2024年4月2日 下午3:28
Next 2024年4月2日 下午3:28

相关推荐

  • jnci什么意思,jncis-sec

    您对网站建设/设计行业感兴趣吗?你可能听说过这个行业,但你可能不知道它到底是什么。今天我们将探讨网站建设和设计行业发展的历史、重要性和作用,并分享如何成为一名优秀的网站建设设计师。…

    行业资讯 2024年3月30日
    0
  • qq服务器拒绝了你发送离线文件

    你是否曾经遇到过这样的情况?当你想要发送离线文件给好友,却收到了QQ服务器拒绝发送的提示。这不仅让人感到困惑,更让人担心自己的网络安全是否受到了威胁。那么,什么是网络安全加速行业?…

    行业资讯 2024年3月22日
    0
  • 服务器众包

    服务器众包,你听说过吗?它是近年来兴起的一种新型云服务器服务模式。或许你会想,什么是服务器众包?它和传统的服务器服务有什么不同?今天,我将为你揭开这个行业的神秘面纱。在这里,你将了…

    行业资讯 2024年4月19日
    0
  • dns劫持什么意思,dns劫持的危害

    你是否经常在打开网页后被重定向到完全不同的页面?或者你在浏览网站时突然看到各种广告?这就是我们今天要讨论的话题,——dns高杰克和污染。虽然它们看起来相似,但实际上有本质的不同。那…

    行业资讯 2024年5月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注