FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顾名思义,前者是解码的时间,后者是显示的时间。要仔细理解这两个概念,需要先了解FFmpeg中的packet和frame的概念。

FFmpeg中用AVPacket结构体来描述解码前或编码后的压缩包,用AVFrame结构体来描述解码后或编码前的信号帧。 对于视频来说,AVFrame就是视频的一帧图像。这帧图像什么时候显示给用户,就取决于它的PTS。DTS是AVPacket里的一个成员,表示这个压缩包应该什么时候被解码。 如果视频里各帧的编码是按输入顺序(也就是显示顺序)依次进行的,那么解码和显示时间应该是一致的。可事实上,在大多数编解码标准(如H.264或HEVC)中,编码顺序和输入顺序并不一致。 于是才会需要PTS和DTS这两种不同的时间戳。

I,P,B帧和PTS,DTS的关系

基本概念:

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及其解码的顺序都在里面:

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

【FFMPEG】I,P,B帧和PTS,DTS时间戳的关系相关推荐

  1. I帧、P帧、B帧、GOP、IDR 和PTS, DTS之间的关系

    I帧.P帧.B帧.GOP.IDR 和PTS, DTS之间的关系 一.视频传输原理 视频是利用人眼视觉暂留的原理,通过播放一系列的图片,使人眼产生运动的感觉.单纯传输视频画面,视频量非常大,对现有的网络 ...

  2. GOP(Group of pictrues) I帧 B帧 P帧 MPEG PTS DTS 码率 帧率

    资料 I.P.B帧区别 图像I.B.P帧介绍 视频编解码基本概念之 GOP I帧 帧内编码帧 又称 intra picture ,I 帧通常是每个 GOP( MPEG 所使用的一种视频压缩技术)的第一 ...

  3. ts流中的时间概念: pcr,pts,dts 实例解说

    ts流中的时间概念: pcr,pts,dts 实例解说 ---------------------------------------- PCR OPCR ---------------------- ...

  4. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS

    用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的.这个的确是一个恼火的事情.我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到 ...

  5. ffmpeg pts dts

    *Function:掌握ffmpeg中时间戳的知识点.并根据实际的时间来生成ffmpeg内部不同时间基的时间戳*知识点1:av_q2d(AVRational a)函数av_q2d(AVRational ...

  6. (转)I,P,B帧和PTS,DTS的关系

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

  7. [转]I,P,B帧和PTS,DTS的关系

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

  8. x264中I,P,B帧和PTS,DTS的关系

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

  9. I,P,B帧和PTS,DTS的关系 转载

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

  10. 音视频基础: I帧 P帧 B帧 GOP DIR PTS DTS 帧率 码率的介绍

    目录标题 基本概念 帧的介绍 I帧:帧内编码帧 P帧:前向预测编码帧 B帧:双向预测内插编码帧 IPB帧的区别 DTS和PTS GOP(序列)和IDR I帧和IDR帧的异同 帧率(FPS)和码率(BP ...

最新文章

  1. 五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍
  2. 架构师书单 2nd Edition--转载
  3. 获取input中的值
  4. .net 2.0 BackgroundWorker类详细用法
  5. Numpy-矩阵的分割
  6. SqlCommandBuilder
  7. Eclipse+MyEclipse+Tomcat平台搭建步骤
  8. 决策树原理详解及python代码实现
  9. Ubuntu Linux下通过TPM1.2芯片保护SSH私钥的安全
  10. android 备忘录 知乎,实用的语音转文字软件,知乎大佬力荐!会议纪要好帮手
  11. python自己制作视频_你还在为看电影发愁?Python制作全网视频播放工具!
  12. 【社招】 中/高级C++ Developer - 美国顶尖交易公司Akuna Capital–上海
  13. 这年代,你需要了解一下什么是聚合搜索(附站点推荐)
  14. 2016.7.31整机升级计划
  15. k8s cpu 和内存资源说明
  16. CMD快捷指令之磁盘检查(管理员身份运行命令提示符)
  17. c语言 release函数报错,91-100
  18. 泰州学院计算机与机械学院副院长,2020届考研学子风采展示
  19. sql语句-按照汉字拼音首字母排序
  20. 四川大学计算机专业调剂,2020年四川大学计算机学院(软件学院)考研调剂信息...

热门文章

  1. 四、HTTP协议Header介绍
  2. 系统自带的微软拼音输入法,在输入字母和数字的时候,间隔变大,输入中文没事的 问题。
  3. java close 方法_Java PushbackReader close()方法与示例
  4. C. New Year Ratings Change
  5. Linux那些事儿之我是U盘(28)第一次亲密接触(四)
  6. 这些百度搜索技巧,你知道吗?
  7. 用python实现弹跳球游戏_使用Pygame模块制作一个跳跃的小球游戏
  8. IOS使用Charts
  9. 罗技craft键盘使用入门
  10. 科普篇:内存、“运行内存”、外存?傻傻分不清楚。看完这篇就懂了