什么是多媒体 流媒体音视频中的 I帧 P帧 B帧
I 帧
I 帧是帧内编码帧,是自带全部信息的独立帧,无需参考其它图像便可独立进行解码,视频序列中的第一帧始终是 I 帧。
智能编辑重构 批处理式 "数字 Python IDE" 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序)
http://dt.digitser.cn/zh-CN/ide/idepy/index.html
IDR
IDR 是 Instantaneous Decoding Refresh 的缩写,中文译为即时解码刷新。
I 帧和 IDR 帧都使用帧内预测。它们是同一种东西,在编码和解码中为了方便,要将首个 I 帧和其它 I 帧区别开,所以才把第一个首 I 帧叫 IDR,这样方便控制编码和解码流程。
IDR 帧的作用是立刻刷新,使错误不致传播,从 IDR 帧开始,重新算一个新的序列开始编码。而 I 帧不具有随机访问能力,这个功能由 IDR 承担。
IDR 会导致 DPB (Decoded Picture Buffer 参考帧列表) 被清空,而 I 帧不会。
IDR 图像一定是 I 图像,但 I 图像不一定是 IDR 图像。一个序列中可以有很多的 I 图像,I 图像之后的图像可以引用 I 图像之间的图像做运动参考。
对于 IDR 帧,其后的所有帧都不能引用任何 IDR 帧之前的帧内容,与此相反,对于普通 I 帧,其后的 B 帧和 P 帧可以引用位于普通 I 帧之前的 I 帧。
从随机存取的视频流中,播放器永远可以从一个 IDR 帧播放,因为在它之后没有任何帧引用之前的帧。但是,在没有 IDR 帧的视频中不能从任意点开始播放,因为后面的帧总是会引用前面的帧。
P帧
P 帧是前向预测编码帧。
在对连续动态图像编码时,将连续若干幅图像分成P B I 三种类型,P 帧由在它前面的 P 帧或 I 帧预测而来,比较它前面的 P 帧或 I 帧之间的相同信息或数据,即:考虑运动的特性进行帧间压缩。
P 帧法是根据本帧与相邻的前一帧 (I 帧或 P 帧) 的不同点来压缩本帧数据。采取 P 帧和 I 帧联合压缩的方式,可做更高压缩且无明显压缩痕迹。
P 帧的预测与重构:P 帧是以 I 帧为参考帧,在 I 帧中找出 P 帧的某点预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从 I 帧中找出 P 帧某点的预测值并与差值相加,得到 P 帧某点值,从而得到完整 P 帧。
B 帧
B 帧是双向预测内插编码帧。
B 帧的预测与重构:B 帧法是双向预测的帧间压缩算法。
当把一帧压缩成 B 帧时,它根据相邻的前一帧、本帧及后一帧数据的不同点来压缩本帧,也即仅记录本帧与前后帧的差值。只有采用 B 帧压缩才能达到 200:1 的高压缩。
B 帧是以前面的 I 或 P 帧和后面的 P 帧为参考帧,找出 B 帧某点的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中查找 B 帧。
有的视频序列比较简单,没有 B 帧。
扫一扫关注 德云社区 微信公众号
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载。
|