DTS、PTS 概念剖析

视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉。
但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理。由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别,其中包括:I帧,P帧,B帧。

I,P,B帧
I帧,P帧,B帧的区别在于:

I帧(帧内编码帧):I帧图像采用帧内编码方式,即只利用了单反图像内的空间相关性,而没有利用时间相关性.I帧使用帧内压缩,不使用运动补偿,由于I帧不依赖其它帧,所以是随机存取的入点,同时是解码的基准帧.I帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I帧图像的压缩倍数相对较低.I帧图像是周期性出现在图像序列中的,出现频率可由编码器选择。
P帧(预测帧):P帧和乙帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性.P帧图像只采用前向时间预测,可以提高压缩效率和图像质量.P帧图像中可以包含帧内编码的部分,即P帧中的每一个宏块可以是前向预测,也可以是帧内编码
.B帧(双向预测帧):B帧图像采用双向时间预测,可以大大提高压缩倍数。值得注意的是 ,由于B帧图像采用了未来帧作为参考,因此MPEG-2编码码流中图像帧的传输顺序和显示顺序是不同的。
也就是说,一个I帧可以不依赖其他帧就解码出一幅完整的图像,而P帧,B帧不行.P帧需要依赖视频流中排在它前面的帧才能解码出图像.B帧则需要依赖视频流中排在它前面或后面的帧才能解码出图像。这就带来一个问题:在视频流中,先到来的乙帧无法立即解码,需要等待它依赖的后面的I,P帧先解码完成,这样一来播放时间与解码时间不一致了,顺序打乱了,那这些帧该如何播放呢?这时就需要我们来了解另外两个概念:DTS和PTS。* DTS,PTS的概念* DTS,PTS的概念如下所述:DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据.PTS(演示时间):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。需要注意的是:虽然DTS,PTS是用于指导播放端的行为,但它们是在编码的时候由编码器生成的当视频流中没有乙帧时,通常DTS和PTS的顺序是一致的但如果有乙帧时,就回到了我们前面说的问题:。解码顺序和播放顺序不一致了比如一个视频中,帧的显示顺序是:IBBP,现在我们需要在解码乙帧时知道P帧中信息,因此这几帧在视频流中的顺序可能是:IPBB,这时候就体现出每帧都有DTS和PTS的作用了.DTS告诉我们该按什么顺序解码这几帧图像,PTS告诉我们该按什么顺序显示这几帧图像。顺序大概如下:PTS:1 4 2 3 DTS:1 2 3 4

流:IPBB
音视频的
同步上面说了视频帧,DTS,PTS相关的概念。我们都知道在一个媒体流中,除了视频以外,通常还包括音频。音频的播放,也有DTS,PTS的概念,但是音频没有类似视频中B帧,不需要双向预测,所以音频帧的DTS,PTS顺序是一致的。

。音频视频混合在一起播放,就呈现了我们常常看到的广义的视频在音视频一起播放的时候,我们通常需要面临一个问题:怎么去同步它们,以免出现画不对声的情况。

要实现音视频同步,通常需要选择一个参考时钟,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每帧数据打上时间戳。在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。这里的说的时间戳就是我们前面说的PTS。实践中,我们可以选择:同步视频到音频,同步音频到视频,同步音频和视频到外部时钟。

例子:

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

顺序图

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

总结:

IPB帧的不同:

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

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

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

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

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

DTS和PTS的不同:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值