视频I P B帧理解

本文介绍了IPB帧的概念,它是视频编码中的一种帧结构,用于帧间预测和压缩。重点讲解了I帧、P帧和B帧的区别,以及如何通过GOP控制压缩质量和画面组的解析顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

兄弟们,我这可算是高产了,中午写完了YUV,下午看到了IPB的时候又有许多疑问了,哈哈… 可能好奇心才是进步的源泉吧,下面就记录下我下午的学习成果,如有错误,欢迎指正!

什么是帧 I P B?

先说结论,IPB是一种帧结构的概念,用于视频编码中的帧间预测和压缩
在谈什么是I P B帧前,我们先了解下视频是怎么组成的,相信大部分人都知道,一段视频其实就是一张张图片组成的,看过我上一篇图像存储格式YUV444 YUV422 YUV420叫法的原因 的应该都明白没有经过压缩的数据是多么庞大。

YUV是用于单独一张图片的压缩,而IPB帧是针对图片与图片的,虽然单独一张图片已经压缩了,但是对于一个视频来说,连贯的图片里其实有太多地方重复了,如下:
在这里插入图片描述
这里的黄飞鸿师傅打拳看起来非常剧烈,但是我们仔细看看他的背景就能发现这背景没有太大的变化,而且这背景可是占据了视频画面的一大部分, 所以我们能否把这部分重复的地方再进行压缩呢?答案当然是可以的,大聪明人类发明了IPB这个概念。

IPB是怎么压缩的

I帧:不需要参考其他画面生成,靠自己就能重构出图像
P帧:根据本帧与相邻前一帧(I帧或P帧)的不同点来压缩本帧数据,同时利用时间和空间上的相关性。
B帧:根据本帧与相邻前一帧(I帧或P帧)和相邻后一帧P帧的不同点来压缩本帧数据。

从这可看出P帧属于前向预测,B帧属于双向预测。
需要注意的地方:
1、B帧后面的依赖帧肯定是P帧
2、压缩后的I帧 P帧 B帧就是单独的一帧,而不是三个组合起来形成一帧然后再显示(我看知乎上有篇文章说是三个叠加起来形成一帧,这差点把我CPU干烧了,要知道I帧就基本类似于未压缩的一帧了,何必再叠加B帧P帧,是觉得自己网速太快、存储空间太大、电脑CPU性能太好吗?)

看到这我们大概明白了,视频压缩(此处只指使用IPB概念的压缩技术)就是将每一帧画面压缩成I帧、P帧或者B帧。在同一段视频里,I帧越少,占用的内存也就越小,GOP(Group of Pictures 画面组,每一个画面组都能独立解析)的值也就越大,GOP实际上就是I帧之间的间隔,比如:

所以在压缩时需要注意GOP的值,相信诸位从I P B的关系就能看出,GOP越大,画面质量就越不好,因为P 和B还原的画面肯定是不如原始画面I帧好。

IPB怎么解析的

从上面I帧 P帧 B帧的解释就能看出,一个压缩后的视频能否正常显示的关键就在于I帧,如果I帧出现问题,播放时会出现黑屏的现象。下图是一个视频的解析顺序:
在这里插入图片描述
DTS ( Decoding Time Stamp):解码时间戳,用于指示解码器何时应该解码特定的帧。
PTS ( Presentation Time Stamp):,显示时间戳,用于指示特定帧在播放时应该被显示的时间。

读者大爷们根据IPB的定义肯定就能知道,I是能独立解析的,P需要依赖于I,B依赖于P和I,所以每个画面组中的解析顺序应该是这样:

I:无需依赖谁,自己就能重构出图像,最先解析
P:先去解析I,在根据I帧解析P , 第二个解析
B:根据I和P,解析出B,最后解析
根据这个顺序,套娃似的解析,就能得出上面表格的顺序了。根据这个解析的顺序也能发现,如果某一个画面组中的I帧损坏了,那么这一个画面组在显示时就肯定是黑屏的状态,所以I帧至关重要。

暂时就只想到记录这些,后续如果有新的感悟,再更新此博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值