H.264标准中的基本概念

版权声明:本文为卫伟学习总结文章,转载请注明出处!

1.H264基础概念

在H.264/AVC视频编码标准中,整个系统框架划分如下两个层面:

  • 视频编码层(VCL): VCL数据即被压缩编码后的视频数据序列,负责有效表示视频数据的内容;
  • 网络抽象层(NAL):负责将VCL数据封装到NAL单元中,并提供头信息,以保证数据适合各种信道和存储介质上的传输。

因此平时每帧数据就是一个NAL单元。NAL单元的实际格式如下:

每个 NAL 单元都是由 1 字节 NAL header 和 若干整数字节的负荷数据 EBSP 构成。

2. I帧、B帧和 P帧

视频压缩中,每一帧代表一副静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。
简单地说,I帧就是关键帧。可以理解为帧内压缩。P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。

  • I帧:表示关键帧,可以理解为这一帧画面的完整保留,解码时只需要本帧数据就可以完成(因为包含完整画面)。
  • P帧:表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)。
  • B帧:是双向差别的帧,也就是 B帧 记录的是本帧与前后帧的差别(具体比较复杂,有四种情况)。换言之,要解码 B帧,不仅要取得之前的缓存画面,还要本帧之后的画面,通过前后画面与本帧数据的叠加取得最终的画面。B帧 压缩率高,但是解码时 CPU 会比较累。

采用的压缩方法:分组,将几帧图像分为一组(GOP),为防止运动变化,帧数不宜取多。

    1. 定义帧:将每组内各帧图像定义为三种类型,即 I帧,P帧,B帧;
    1. 预测帧:以 I帧 为基础帧,以 I帧 预测 P帧,再由 I帧 和 P帧 预测 B帧;
  • 3 数据传输:最后将I帧数据与预测的差值信息进行存储和传输。
3. GOF

GOF:一组帧。如果一秒钟之内有三十帧,这三十帧可以划为一组。如果摄像头一分钟内捕获的图片都没有什么大变化,这样也可把这一分钟内的所有帧成为一组帧。

所谓一组帧,就是在一个I帧与另一个I帧之间这一组包括了B和P帧。这一组称为GOF。

3.1 SPS与PPS

SPS与PPS实际是对存GOF的参数。
SPS:Sequence Parameter Set, 序列参数数集,存放帧数、参考帧数目、解码图像尺寸、帧场编码模式选择标识等。
PPS:Picture Parameter Set,图像参数集,存放熵编码模式选择标识、片组数目、初始量化参数和去方块滤波系数调整标识等。
在一组帧之前,首先会收到SPS和PPS,如果没有这两个参数就不能进行解码和编码处理。SPS和PPS规划为I帧,这两个帧数据是不能丢失的。

4. 视频花屏/卡顿原因

如果GOF分组中的P帧丢失会造成解码端的图像发生错误。本身一组帧形成图像的连贯动作,当某一个帧没有到达或者损失了,这时更新的那一块数据就没有。后面帧更新了,但前面那一块没有更新,就出现了花屏现象。
为了避免花屏问题的发生,一般如果发现P帧或者I帧丢失,就不显示本GOP内的所有帧,直到下一个I帧来后重新刷新图像。这时会出现卡顿现象。
总结花屏是因为丢失了数据,卡顿是为了防止花屏主动丢掉一组GOF数据。

5.视频编码器

x264/x265:x264是目前最广泛的H.264的视频编码器。软编基本用x264。x265也逐渐成熟。因为它的压缩比更高,占用CPU的性能也高,在直播系统里不适合用。在点播系统里可以尝试使用。
openH264:比x264性能更低些,但支持SVC视频技术。SVC将视频进行分层传输,一帧数据分为小中大三个部分。如果网络差的情况下,只发最小内核的帧,网络稍微好点,发中间内核帧。网络非常好,全部发出去。发出去后,将这三层叠加在一起,恢复原来的视频。

6.宏块的划分与帧分组

左上角是一个8*8的宏块,横着是8个像素,竖着也是8个像素。将整张图片用宏块来划分,划分的效果如下:
其中的一个宏块可以再进行细化,在大的宏块里面左边下边都有一小块黑色。右边也有块黑色。为了更好的压缩,把这个宏块划分为多个子块。
MPEG2是将一个宏块进行平等的划分,压缩后的数据还是比较大。H.264进行更加多的子块划分。
帧分组:一组帧内,一个物体运动是变化很小的。比如台球的运动轨迹,可以将它的轨迹运动的帧划分为一组。因为它们的变化特别小,整个背景都是绿色,只有台球是白色。可以通过算法推算出台球在某一帧它应该会滚动到哪一个位置。

7.H264压缩技术

帧内预测压缩:解决的是空域数据冗余问题。空域数据就是一幅图中其中颜色、色彩和光亮等人眼不是很敏感的部分,这部分称之为冗余数据,可以将它直接删除掉的。
帧间预测压缩:解决的是时域数据冗余问题。因为一组帧的数据相关型非常高,这些帧数据基本重复的,把这些重复的数据全部删除。
整数离散余弦变换(DCT):将空间上的相关性变为频域上无关的数据然后进行量化。
CABAC压缩:无损压缩。

7.1.组内宏块查找 (帧间压缩技术)

一组运动台球的帧,从一个角滚动到另一个角。将这一组帧的相邻的两帧做为组内的宏块查找。当扫描到一个台球时,发现台球之后就会在台球周围去找,周围是否有类似的宏块。它们之间有一个运动的方向和一个运动的距离,这就是运动矢量。将所有的这些帧都进行两两比较,最好就形成了右边这张图。每一个红色的标注就是运动矢量。

因为所有帧的背景都时一样的,变化的就是它的运动矢量。还有它的台球的数据。这样通过运算压缩之后,留下来的数据:运动矢量数据+残差的数据。这过这样帧间压缩,只需要存一点点数据。解决时间数据的冗余。
7.2 帧内预测

帧内压缩主要针对的时I帧的,解决的时空间的数据冗余。先通过一种计算,选择想用的那种模式。对每个宏块采用不同的模式运算,将产生每一个宏块产生帧内预测的模式。帧内预测有九种模式。

挑选出后,每一个宏块使用的块预测模式,预测完了之后,如左那个图。将预测来的帧图与原图进行差计算。得到差数据就是残差值。

帧内压缩:残差数据+选择每个宏块的模式信息数据。解码的时候,首先通过预测的模拟信息恢复出预测的图,再将预测的图与残差值进行累加。就能还原出原始的图像。
7.3 DCT压缩

通过数字对宏块进行量化,量化之后通过DCT数据方法进行压缩。

DCT压缩后的效果如下:
7.4 VLC压缩

上下文适应无损压缩技术。具体详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容