H.264 编码中, I 帧、B 帧、P 帧、IDR 帧的区别

news2025/1/18 7:29:16

在H.264协议里定义了三种帧,完整编码的帧叫 I 帧,参考之前的 I 帧生成的只包含差异部分编码的帧叫 P 帧,还有一种参考前后的帧编码的帧叫 B 帧。

H.264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成 I 帧的算法,帧间压缩是生成 B 帧和 P 帧的算法

I帧

I 帧:帧内编码帧 ,I 帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)。

P帧 

P 帧:前向预测编码帧。P 帧表示的是这一帧跟之前的一个关键帧(或P 帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。
P帧的预测与重构:P 帧是以 I 帧为参考帧,在 I 帧中找出 P 帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。

在接收端根据运动矢量从 I 帧中找出 P 帧“某点”的预测值并与差值相加以得到 P 帧“某点”样值,从而可得到完整的 P 帧。

B帧

B 帧:双向预测内插编码帧。B 帧是双向差别帧,也就是 B 帧记录的是本帧与前后帧的差别(具体比较复杂,有 4 种情况,但我这样说简单些)。

换言之,要解码 B 帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B 帧压缩率高,但是解码时 CPU 会比较累。


B 帧的预测与重构:B 帧以前面的 I 或 P 帧和后面的 P 帧为参考帧,“找出”B 帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。

接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到 B帧“某点”样值,从而可得到完整的 B 帧。

注:I、B、P 各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧。一般来说,I 帧的压缩率是7(跟JPG差不多),P 帧是20,B 帧可以达到50。

可见使用 B 帧能节省大量空间,节省出来的空间可以用来保存多一些 I 帧,这样在相同码率下,可以提供更好的画质。

序列:
一般来说,编码器编出来的首帧数据是PPS,然后是SPS,接下来是I帧,P帧、B帧等;
一个序列 == 一个SPS + 1个PPS + 一个I帧 + 若干P帧 + 若干B帧

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【镜像取证篇】DD和E01镜像格式区别(简)

【镜像取证篇】DD和E01镜像格式区别(简) ​ 简单总结下—【蘇小沐】 文章目录 【镜像取证篇】DD和E01镜像格式区别(简)1、实验环境 (一)DD镜像-原始镜像(和源盘大小一致)&#xff0…

C#基础学习--事件

目录 发布者和订阅者 源代码组件概览 声明事件 事件是成员 订阅事件 触发事件 标准事件的用法 通过扩展EventArgs来传递数据 泛型委托 移除事件处理程序 - 事件访问器 发布者和订阅者 发布者/订阅者模式中,发布者类 定义了一系列程序的其他部分可能感兴趣的事件…

第12讲:ElementUI+Vue路由综合案例

本博文主要呈现一个NPM脚手架Vue路由ElementUI的综合案例,完成本案例需要有一定的Vue基础,请参考以下文章完成项目的构建 第08讲:使用脚手架创建vue项目 第09讲:路由开发 第10讲:vue脚手架集成axios 第11讲&#xff1a…

2023年mahorcupC题电商物流网络包裹应急调运与结构思路分析

C 题 电商物流网络包裹应急调运与结构优化问题 电商物流网络由物流场地(接货仓、分拣中心、营业部等)和物流场 地之间的运输线路组成, 如图 1 所示。受节假日和“双十一” 、“618”等促销 活动的影响,电商用户的下单量会发生显著波动,而疫情…

软件测试真的只能干到35岁吗?难道测试岗位真的只是青春饭吗?

一:前言:人生的十字路口静坐反思 入软件测试这一行至今已经10年多,承蒙领导们的照顾与重用,同事的支持与信任,我的职业发展算是相对较好,从入行到各类测试技术岗位,再到测试总监,再…

释放数据价值这道难题,数据科学基础平台有解

去年底,《中共中央、国务院关于构建数据基础制度更好发挥数据要素作用的意见》(以下简称:" 数据二十条 ")正式颁布,标志着数据基础制度的建设步入快车道,数据要素化有望全面提速。 " 数据二…

通过遍历结果构造二叉树

⭐️前言⭐️ 本篇文章主要总结通过前序遍历、中序遍历、后序遍历中的两个遍历结果,来构造二叉树的过程,通过本篇文章的总结,可以解决一下问题。 LeetCode难度654. 最大二叉树🟠105. 从前序与中序遍历序列构造二叉树&#x1f7e…

编程辅助插件BitoAI使用指南(以VSCode开发环境为例安装并使用BitoAI插件从而提高生产效率)

2023年是AI爆发元年,已经被各种AI工具、新闻轰炸了几个月,只有一种感觉:时间不够用! 本文介绍编程辅助神器:Bito AI。 本插件使用与ChatGPT相同的模型!目前免费,且拥有强大的辅助能力&#xff0…

高压放大器应用之无损检测

在高压放大器的应用中,很多电子工程师经常会进行无损检测实验,那么无损检测是什么,无损检测的知识又有哪些呢,就让安泰电子带大家来看看。 无损检测是什么: 无损检测是指不损害物品的情况下对产品进行检测的方法&#…

FFMPEG源码分析一 av_register_all()

我们在使用FFMPEG库时,第一个调用的就是av_register_all(),这个函数到底做了什么,有什么用,这里做个简单分析。 本文基于雷霄骅博客学习而来。详情请移步FFmpeg源代码结构图 - 编码_ffmpeg源码结构_雷霄骅的博客-CSDN博客 解析和…

Vsync信号和SurfaceFlinger刷新机制;打造智能车厢的关键技术

概述 车载智能座舱系统在现代汽车中已经越来越常见,它可以提供各种功能,例如音乐、导航和驾驶辅助等。要实现这些功能,需要底层硬件和系统软件的支持。其中,Vsync信号和SurfaceFlinger刷新机制是车载智能座舱系统中的两个关键技术…

无人驾驶——ros_canopen安装

上篇文章提到过,对于CAN测试,不能完全依靠CAN卡对应的软件,指导老师推荐了ros_canopen、socketcan_interface方法。记录一下使用该方法的过程。 安装ros_canopen,对应ros版本git clone下载资源并安装。 https://github.com/ros-industrial…

camunda如何启动一个流程

在 Camunda 中启动一个流程需要使用 Camunda 提供的 API 或者用户界面进行操作。以下是两种常用的启动流程的方式: 1、通过 Camunda 任务列表启动流程:在 Camunda 任务列表中,可以看到已经部署的流程,并可以点击“Start”按钮&am…

【Linux】Mysql事务

一、什么是事务 Mysql 数据库中不是所有的存储引擎都实现了事务处理。 支持事务的存储引擎有: InnoDBNDB Cluster 。不支持事务的存储引擎代表有: MyISAM 事务简单来说:一个 Session 中所进行所有的操作,要么同时成功&#xff0c…

CMU15445 - Project 0. C++ Primer(在写)

文章目录 系列笔记作业链接TASK 1GetPutRemove Task 2 系列笔记 环境配置 Project 0. C Primer (ing) 作业链接 作业链接(2020,废) 作业链接 p0就是一个C水平测试,很简单 2023的明显难不少。 TASK 1 先简单说一下看到这个数据…

linux 目录常用操作

1.linux复制粘贴命令 CtrlShiftC 复制 CtrlShiftV 粘贴 2.中断执行 CtrlC 键“保留”用于停止命令 3.终端清屏 clear 4.显示当前路径 pwd 5.进入目录 cd 目录名称 返回上级目录 cd .. 6.查看当前目录 ls查看详细信息 ls -l 7.创建目录(可以理解为文件夹&…

怎么将太大的word文档压缩变小,3个高效方法

怎么将太大的word文档压缩变小?word文档是我们在办公中使用较多的文件格式之一,相信小伙伴们会遇到这样的问题,编辑完成word文档之后发现,编辑完的文档体积太大了,无论是发送给客户还是上传到邮箱中都不方便&#xff0…

pdf转成word | ppt | jpg图片,免费一键转换教程

我不允许真的还有人不知道如何免费将pdf转成 ppt、word 或者 jpg图片! 职场小伙伴是不是会经常遇到pdf怎么转成word,pdf怎么转成word,pdf怎么jpg图片等问题?别再为pdf转化格式难、而且还要付费而发愁了!这份pdf免费一…

设计模式-行为型模式之观察者模式

3. 观察者模式 3.1. 模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多…

重学Java设计模式-行为型模式-迭代器模式

重学Java设计模式-行为型模式-迭代器模式 内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-23-重学 Java 设计模式《实战迭代器模式》.html#重学-java-设计模式-实战迭代器模式「模拟公司组织架构树结构关系-深度迭代遍历人员信息输出场景」 迭代…