h264中的ipb帧
来源:互联网 发布:windows模拟器 编辑:程序博客网 时间:2024/06/08 06:03
花满楼原创
本文简单介绍h264的I/P/B帧的概念。
压缩是为了节省存储容量与传输带宽,体积小质量又好,是追求的目标。
视频压缩的关键点是去掉冗余。
冗余是什么?你有我也有的(相关的)是冗余,我感觉不到的也是冗余。
h264编码去除冗余有两个方向,一个是帧内预测编码,另一个是帧间预测编码。
帧内预测,关注于一张独立的图的冗余(不考虑与前后图的联系),把这张图的冗余(宏块之间的冗余)去掉。
帧间预测,关注于前后图间的冗余,只保留差别,并依赖于参考帧。
帧间预测编码产生的帧,分为I帧、P帧与B帧。
所有帧参与分组,这个图像的组,也叫图像序列,即GOP。
而GOP很多时候是表示图像组的长度,可以设置。
一个图像序列内的图像是相关紧密的,也就是当更换场景(大变化来了)时就应该另起一个GOP。
MPEG2、h264与HEVC关于GOP的定义是不一样的,所以在讨论GOP时有必要先弄清楚是哪一个标准,这里讲的是h264。
h264的图像序列中,以IDR帧开始,到下一个IDR帧结束,一个图像序列中可以出现多个I帧。
GOP的第一个I帧,叫作IDR帧,区分于其它普通的I帧,所以IDR是I,但I未必是IDR。
IDR出现,意味着历史作废(历史的错不要影响到当前组),不能再依赖之前的图像,而要重新开始编码。
一般来说,连续图像变化小(比如录屏时缓慢滑动屏幕)则GOP值大,而且一个IDR后就可以连续用P或B帧来表示;变化大时(快速滑动屏幕)则GOP值小,可能一个IDR加两三个P帧后就切到下一组序列了,这时编码出来的体积也更大,如果传输的话就会产生带宽峰值。
IDR,叫即时可解码帧。
I帧,即Intra-predicted Frame,帧内预测帧。I帧还有很多同义词,比如关键帧、独立的完整图像、基本帧等。
I帧类似于JPEG的压缩算法。
P帧与B帧,都是帧间预测编码,也就是要依赖于其它帧,它本身只是差异内容(差值与运动矢量)。
P帧,前向预测编码帧。P帧表示的是这一帧与之前的某个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧的差别,生成最终画面。
B帧,双向预测编码帧。B帧依赖于前面的I或P帧,并且依赖于后面的P帧,所以解码B帧时,既要取得之前的缓存画面,也要解码之后的画面,才能叠加出最终的画面。
从压缩率来说,B>P>I,而解码复杂度来说也是这样。一般(I+P)这样的等级用得最多。
I跟P都是会成为参考帧,所以要注意影响,你差则别人也差。
- h264中的ipb帧
- IPB帧,pts,dts
- 视频压缩中IPB帧概念
- 音视频 IPB 关键帧
- IPB帧及PTS、D'T'S
- 音视频基础 、IPB帧及其特点
- 音视频基础 、IPB帧及其特点
- 音视频基础 、IPB帧及其特点
- ffmpeg源码分析--10.视频帧IPB
- H264 中的参考帧列表
- live555+ffmpeg如何提取关键帧(IPB帧)
- IPB帧 编码顺序 解码顺序 显示顺序
- IPB 帧的编码熟悉 解码顺序 与显示顺序
- IPB帧编码顺序(解码顺序)与显示顺序
- IPB帧编码顺序(解码顺序)与显示顺序
- IPB帧编码顺序(解码顺序)与显示顺序
- IPB帧编码顺序(解码顺序)与显示顺序
- IPB帧编码顺序(解码顺序)与显示顺序
- 操作系统概论(5)--死锁
- 简单说 通过CSS实现 文字渐变色 的两种方式
- CRF++在linxu下的使用
- enum
- elasticsearch 5.6 安装
- h264中的ipb帧
- Python sorted
- Farm Irrigation HDU
- 素数
- Linux下快速定位日志
- Spring Boot:(四)统一日志处理
- C++中的argc和argv
- 【Python】【矩阵】协方差矩阵;特征值;特征向量
- HDU-3371 Connect the Cities