解码H264文件的一些基础知识

本文介绍了H264编码中的图像类型,包括I帧、P帧和B帧的概念,以及它们在视频压缩中的作用。I帧是完全编码的图像,P帧和B帧则利用前后帧信息减少存储需求。此外,文章还提及了条带(Slices)、宏块(Macroblocks)以及指数哥伦布编码(Exponential-Golomb coding)在H264解码中的重要性。
摘要由CSDN通过智能技术生成

这段时间一直在进行编写H264文件的解析类,因此对于H264文件的格式有了初步的了解,官方文档也看了个大概。这篇文章主要是总结了一些为解码H264文件而需要的一些前期知识,话不多说,下面是干货,有些是自己在wiki上翻译过来的,有些是看官方文档后发现的一些关键部分。
首先了解一下视频文件中的一些知识:


Video compression picture types(视频压缩图像类型)

1. 视频帧的压缩使用了不同的算法,这些应用于视频帧的不同算法被称为图像类型或者帧类型。
    a. I - 该帧可压缩程度最低,也不需要通过其他视频帧解码。
    b. P  - 该帧可以引用前面的帧的数据来解压缩并且相对于I帧来说,该帧可以压缩程度更高。
    c. B - 该帧可以引用前面的帧和后面的帧的数据,从而压缩程度最高。

这里写图片描述
(图为一段视频帧,由2个关键帧(I-frame),1个向前预测帧(P-frame)和1个双向预测帧(B-frame)构成)

这里共有三种类型的帧被用在视频压缩技术中:I-帧,P-帧 和 B-帧。
I-帧是一种“内编码图片”,实际上是一种信息十分详细的图片,跟传统的静态图片文件相似。P-帧 和 B-帧 只存储了部分的图片信息,因此相比于I-帧来说,他们需要更少的存储空间,也因此而提高了压缩速率。
P-帧(“预测图片”)只保存图片中与前一帧的不同的地方。比如,在一个场景中,汽车行驶在静止的背景中,只有汽车的运动需要被编码。编码器无需存储未改变的背景像素信息到P-帧中,因此而节省了空间,P-帧 也同样被称为 delta-帧。
B-帧(“双向预测图片”)通过比较现在的帧和前后的帧的不同来指定具体存储的内容,从而节省了更多的空间。


Slices(条带)

一个条带是一个帧中比较独特的区域,不同于该帧中的其他区域。在最新的国际标准中,这里已经存在 I-slices(I-条带),P-slices(P-条带)和 B-slices(B-条带)。


Macroblocks(宏块)

普遍来说,图片(帧)被分割成许多宏块和个体预测类型能够在宏块层被挑选出来,并且整个图片(帧)中的宏块与宏块并不相同,如下:
1. I-帧 只能包含内部宏块
2. P-帧 既能包含内部宏块,也能包含预测宏块
3. B-帧 能包含内部宏块,预测宏块和双向预测宏块
进一步说,在视频编解码H.264中,帧能够被分割成宏块序列,该宏块序列被称为条带(slices)。编解码过程不是使用I,B和P 帧类型作为选集,而是通过每个条带明确无误的选择出预测类型。在H.264文件中也能找到几个额外的 帧/条带 类型:
1. SI-帧/条带(Switching I);使编码流之间的转换变得更加容易;包含了 SI-宏块(一种内部编码宏块的特殊类型)
2. SP-帧/条带(Switching P);使编码流之间的转换变得更加容易;包含了 P-宏块 和/或 I-宏块。
3. muti-帧 动态预测(包括16个引用帧,或32个引用域)


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值