[H264学习(一)]简单理解H264原理和组成结构

0、为什么有H264格式的出现 。

讨论各种编码格式出现之前我们先讨论下为什么会有编码这一步骤, 我们现在的很多影片可能都3G或者4G大小左右,如果画质更好可能更大。但是这是压缩后的数据大小。我们想下一秒内帧率为30的电影: 1920108030(这是一秒内byte)/ 8(结果:字节) / 1024 (结果:kb) /1024(结果:MB) ≈ 7.4MB; 这只是仅1s视频的原始数据大小,如果1小时的影片那么总大小就到了惊人的26.6GB大小,无论是网络传输过程中,还是硬盘内存储都是非常头疼的事情!

1、H.264简介

H264是MPEG-4标准所定义的编码格式。
H264的编码原理(个人粗略理解):相邻的图片帧的色温、亮度、像素大部分差异不是很大,于是就定义了 I 帧、B帧 、 P帧 。其中 B帧、P帧用来存储差异的色温、亮度、像素数据。

2、I帧、P帧、B帧。

I帧(帧内压缩) :关键帧,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息。
P帧(帧间压缩):向前参考帧,压缩时只考虑前面已经处理的帧,存储与前面帧差异的数据部分。
B帧(帧间压缩): 双向参考帧,压缩时即考虑前面的帧又考虑后面的帧,压缩率最高,解码时占用CPU大。
IDR帧(I帧图像):当解码器解码到IDR帧图像时,立即将帧队列清空,起刷新解码器的作用。
图像组(GOP):一个序列就是一段内容差异不大的图像编码后的一串数据流。 GOP是画面组,一个GOP是一组连续的画面。 GOP一般有两个数字 M和N,其中M指定I帧与P帧之间的距离,N指定两个I帧之间的距离。
视频花屏原因:如果GOP组中P帧丢失,导致后面的P帧以及B帧无法参考前面帧数据。这种问题就造成了花屏现象从出现。
视频卡顿原因:为了解决花屏,我们一般将丢失帧的GOP组丢掉(包括所有帧),直到下一个I帧的到来,因为要等待下一GOP组所以就会出现画面卡顿的现象。

3、H264组成

H.264原始码流是由一个接一个NALU组成,它功能分为两层, VCL(视频编码层)和NAL(网络抽象层)

1、视频编码层(VCL):进行编码的过程。

2、网络抽象层(NAL):负责将VCL产生的byte字符串配送到网络层和多元环境中。

4、H264码流结构

在这里插入图片描述

1.NAL(Network Abstraction Layer)和NALU(NAL Unit)的关系

NAL 是一个封装层的概念,而NALU是NAL中的基本单元。NALU封装了视频数据,并通过NAL的结构进行分割和传输。

2. H264的NALU

在VCL进行数据传输或者存储数据时,这些编码的数据被封装进NAL单元(NALU)中。
H264码流由一个接一个的NAL单元构成。
一个NALU = 一组对应于视频编码的NALU头部信息 + 一个原始字节序列负荷(RBSP)。
在这里插入图片描述
即一个NALU是NALU的头部 + RBSP。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rain_ZZX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值