`
蒙面考拉
  • 浏览: 160210 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

流媒体中的I帧、B帧、P帧[转]

阅读更多

基本概念:

I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。

P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;

B frame: 双向预测内插编码帧 又称bi-directional interpolated prediction frame,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧;

PTS:Presentation Time Stamp。PTS主要用于度量解码后的视频帧什么时候被显示出来

DTS:Decode Time Stamp。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码。

在没有B帧存在的情况下DTS的顺序和PTS的顺序应该是一样的。

IPB帧的不同:

I frame:自身可以通过视频解压算法解压成一张单独的完整的图片。

P frame:需要参考其前面的一个I frame 或者B frame来生成一张完整的图片。

B frame:则要参考其前一个I或者P帧及其后面的一个P帧来生成一张完整的图片。

两个I frame之间形成一个GOP,在x264中同时可以通过参数来设定bf的大小,即:I 和p或者两个P之间B的数量。

通过上述基本可以说明如果有B frame 存在的情况下一个GOP的最后一个frame一定是P.

DTS和PTS的不同:

DTS主要用于视频的解码,在解码阶段使用.PTS主要用于视频的同步和输出.在display的时候使用.在没有B frame的情况下.DTS和PTS的输出顺序是一样的.

例子:

下面给出一个GOP为15的例子,其解码的参照frame及其解码的顺序都在里面:

ibpdtspts

如上图:I frame 的解码不依赖于任何的其它的帧.而p frame的解码则依赖于其前面的I frame或者P frame.B frame的解码则依赖于其前的最近的一个I frame或者P frame 及其后的最近的一个P frame.

分享到:
评论

相关推荐

    从ts流中解读I帧 p帧 b 帧的c代码

    在数字视频编码中,I帧、P帧和B帧是三种不同类型的图像帧,它们用于高效地压缩视频数据。在TS(Transport Stream)流中,这些帧被封装在一个复杂的结构中,以便在网络传输和存储中保持数据的完整性和可靠性。本篇...

    I 帧,B帧,P帧简介

    ### H264编码原理与I帧、B帧、P帧详解 #### 一、H264编码标准概述 H264作为新一代视频编码标准,以其出色的压缩效率、高质量的视频表现以及对多种网络环境的支持而在视频流媒体领域占据重要地位。该标准的核心优势...

    H264编码原理以及I帧、B和P帧详解

    - B帧不仅可以从前面的I帧或P帧中获取预测值,还可以从后面的P帧中获取预测值。 - B帧的解码需要访问前后帧的数据,这增加了解码的复杂性。 - 由于可以从两个方向获取预测信息,B帧的压缩效率最高。 - B帧不作为...

    从ts文件或流中解析I帧

    在多媒体处理领域,TS(Transport Stream)是一种广泛用于广播和流媒体传输的容器格式,而I帧是视频编码中的关键帧,对于视频解码和快速定位至关重要。本篇将深入探讨如何从TS文件或流中解析出I帧,以及在这个过程中...

    C语言实现在TS流中的I帧提取

    I帧,全称是Intra Coded Frame,是视频编码中的一种关键帧,包含完整的图像信息,可用于独立解码,是其他预测帧(如P帧和B帧)解码的基础。 标题“C语言实现在TS流中的I帧提取”意味着我们将探讨如何使用C语言编程...

    从mpeg ts文件中提取I帧

    5. **检测帧类型**:在PES包中,视频数据可能包含I帧、P帧和B帧。I帧的标识通常在编码标准定义的帧头中,如H.264编码的NAL单元类型为5或7表示I帧。 6. **提取和保存I帧**:一旦检测到I帧,程序会将其从PES包中提取...

    h264流,拆出来I帧与其余帧,并能重新组装,完整工程

    总结,这个项目涉及到H264编码的底层操作,通过理解I帧、P帧和B帧的工作原理,利用x264库的功能,实现了从H264流中提取特定帧并重新组装的能力。这对于视频编辑、流媒体服务、视频分析等领域都具有重要的实用价值。...

    MPEG-2视频I帧提取

    在MPEG-2编码中,视频数据被分为不同类型的帧:I帧、P帧和B帧,每种帧都有其特定的角色和用途。I帧(Intra-coded frame)是关键帧,它包含了完整的图像信息,可以独立解码,而不需要依赖其他帧。P帧(Predicted ...

    rtsp.rar_I P B frames c_Simple RTSP_h264_h264 RTSP_rtsp

    在IT行业中,RTSP(Real-Time Streaming Protocol)是一种用于控制实时流媒体的协议,它允许客户端与...对于开发流媒体应用或者网络视频处理的工程师来说,深入理解RTSP、H.264以及I、P、B帧的工作原理是至关重要的。

    FFMpeg关键帧提取

    I帧是无依赖性帧,可以直接解码显示,而P帧(Predicted frame)和B帧(Bi-directionally predicted frame)则依赖于前后的帧进行解码。在提取关键帧时,我们通常关注I帧,因为它们包含了完整的图像信息。 使用...

    FFmpeg_09_视频帧序列类型转换

    在FFmpeg_09_视频帧序列类型转换这个主题中,我们将深入探讨如何使用FFmpeg库来操作和转换视频帧序列的类型,这对于视频编码、解码、编辑和流媒体应用至关重要。 FFmpeg 包含了一系列的工具和库,如libavcodec...

    LIVE555 拉取H264 按每帧读取数据流(二)

    4. **按帧读取**:H264帧分为I帧、P帧和B帧,它们在解码和播放中的作用不同。为了按帧读取,需要识别NAL单元的类型标识符,然后根据帧类型和时间戳进行处理。I帧是无依赖性的,可以单独解码;P帧依赖于前一个I或P帧...

    程序4_视频帧数提取_

    3. **关键帧与非关键帧**:视频帧分为I帧(关键帧)、P帧和B帧。I帧不依赖于其他帧,可以直接解码;P帧依赖前一个I或P帧;B帧则依赖前后两个I或P帧。提取帧数时,I帧通常更为重要,因为它们标志着时间轴上的关键点。...

    基于FFMPEG SDK流媒体开发1---解码媒体文件流信息

    视频帧分为I帧、P帧和B帧,音频帧则是连续的时间段。 6. **时间基(Time Base)**:用于表示时间戳的精度,比如1/90000意味着每90000个单位代表一秒钟。 7. **封装(Packet)**:原始数据从容器中读取时,以`...

    流媒体知 识核心概念.pdf

    在流媒体知识核心概念中,主要涉及视频封装格式、视频压缩编码标准、视频流式封装、索引封装以及视频编码技术等重要知识点。 首先,视频封装格式和视频编码方式的关系类似于项目工程与编程语言的关系。封装格式是...

    H264帧分析工具Elecard

    其帧结构主要包括I帧(关键帧)、P帧(前向预测帧)和B帧(双向预测帧),这些不同类型的帧共同构成了高效的编码框架。 Elecard Stream Tools作为一款H264帧分析工具,其核心功能主要包括以下几个方面: 1. **帧...

    行业分类-设备装置-具有帧信息表的帧级多媒体解码.zip

    多媒体解码是数字媒体技术的重要组成部分,尤其是在视频播放和流媒体服务中起着核心作用。解码过程通常涉及到将编码后的数据恢复成原始的视频帧,以便在显示器上呈现。帧级解码意味着我们需要关注每个单独的图像帧,...

    流媒体编解码技术.pptx

    MPEG-1标准中的编码类型主要有I帧、P帧和B帧。I帧采用帧内编码,仅利用单帧图像内的空间相关性,是随机存取的插入点,也是解码的基准。P帧基于前一帧进行前向预测,结合空间和时间相关性。B帧则采用双向预测,利用...

    GetSliceType

    在这个上下文中,“GetSliceType”可能是一个与FFmpeg相关的函数,用于解析H264码流并确定切片(slice)类型,进而识别I帧、P帧和B帧。 I帧(Intra Coded Frame)是无参考帧的图像,包含完整的图像信息,是解码过程...

Global site tag (gtag.js) - Google Analytics