H264(3)---------帧间压缩

GOP 是一组强相关的帧。

帧间压缩一定是在一个GOP当中进行压缩。

 

参考帧

后面的帧要参考前面的帧进行编码。

运动估计(宏块匹配 + 运动矢量)

通过宏块匹配的方法,找到运动矢量。两个帧之间,通过宏块之间的对比,来发现相关的宏块运动到了什么地方,就是运动矢量。

运动补偿

找到残差值,解码时候把残差值给补上。

通过下面的图来描述帧间压缩:

我们来看一下例子,下面是捕获的一组运动的台球的视频帧,台球从右上角滚到了左下角。

 

技术分享图片

H264编码器会按顺序,每次取出两幅相邻的帧进行宏块比较,计算两帧的相似度。如下图:

技术分享图片

通过宏块扫描与宏块搜索可以发现这两个帧的关联度是非常高的。进而发现这一组帧的关联度都是非常高的。因此,上面这几帧就可以划分为一组。

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

在H264编码器中将帧分组后,就要计算帧组内物体的运动矢量了。还以上面运动的台球视频帧为例,我们来看一下它是如何计算运动矢量的。

H264编码器首先按顺序从缓冲区头部取出两帧视频数据,然后进行宏块扫描。当发现其中一幅图片中有物体时,就在另一幅图的邻近位置(搜索窗口中)进行搜索。

如果此时在另一幅图中找到该物体,那么就可以计算出物体的运动矢量了。

技术分享图片

通过上图中台球位置相差,就可以计算出台球运行的方向和距离。

H264依次把每一帧中球移动的距离和方向都记录下来就成了下面的样子:

技术分享图片

 

运动矢量计算出来后,将相同部分(也就是绿色部分)减去,就得到了补偿数据。我们最终只需要将补偿数据进行压缩保存,

以后在解码时就可以恢复原图了。压缩补偿后的数据只需要记录很少的一点数据。

我们把运动矢量与补偿称为帧间压缩技术,它解决的是视频帧在时间上的数据冗余。

 

使用到帧间压缩的帧 B 帧和P帧

B 前后参考帧

P 向前参考帧

视频花屏的原因?

如果GOP分组当中有帧丢失,就会造成解码端的图像生成发生错误,就会出现马赛克。

 

避免花屏的原因?

一旦遇到帧丢失,直接将这个GOP丢弃,直到下一个IDR帧重新刷新图像。这样就会导致卡顿。

花屏和卡顿是一把双刃剑,只能选择一个。

帧内压缩没有帧间压缩的压缩比高。

 

本文参考了http://m.bubuko.com/infodetail-2836715.html

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值