美文网首页
音视频-帧、DTS、PTS

音视频-帧、DTS、PTS

作者: BKQ_SYC | 来源:发表于2019-08-15 16:31 被阅读0次

采样率、比特率、帧率

  • 采样率:每秒钟的采样次数,声音/画面越高越连贯,单位为Hz
  • 比特率:在视频领域又称码率,每秒传送的bit数,越高则传的数据越多且画质越清晰,单位为bps(bit per second),MediaFormat.KEY_BIT_RATE
  • 码流率/码率/采样率:单位时间使用的数据流量,单位kb/s。该值越大,则精度越高,画面质量越高,体积越大
  • 帧率/帧速率:每秒钟刷新的图片帧数,单位fps(frame per second)。该值越高,动画越流畅,越逼真。MediaFormat.KEY_FRAME_RATE

  • 视频播放是一帧一帧的画面按照时间顺序呈现出来的
  • 为保证传输,会对视频进行压缩,所以,每一帧并不都完整
  • 视频帧分为:I帧、P帧、B帧

I帧:帧内编码帧,不依赖前后帧
P帧:帧间预测编码帧,需参考前面的I帧才能进行编码。表示当前帧与前一个I帧或者P帧的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。
B帧:双向预测编码帧,记录的是本帧与前后帧的差别。解码时不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面与本帧数据的叠加取得最终画面。

I帧只考虑本帧;P帧记录与前一帧(前一个I帧或者P帧)的差别;B帧记录的是前一帧及后一帧的差别

问题

1. B帧或P帧提前到达,必然会导致视频无法解码,如何解决?
2. 三种帧之间的解码依赖关系如何?
3.三种帧解码顺序如何?解码顺序和显示顺序有何关联?

说明

采集阶段:
假定摄像头采集帧顺序为a b c d e。
最终编码结果是:a编码成I帧,b、c、d编码成B帧,e编码成P帧。

编码阶段:
1 先编码a,编成I帧
2 b、c、d编码成B帧,先缓存并记录采集时间点,后续作为PTS基准
3 编码e,编成P帧 (注意:e虽先编码,DTS相对b、c、d靠前,但采集时间晚,因此PTS大于b、c、d) 
4 编码b、c、d,编成B帧

存储阶段:
编码后立即经过mux写文件,所以存储顺序和编码顺序是一致的,编码顺序(DTS)为:
a(I)   e(P)   b(B)   c(B)   d(B)

解码阶段:
a为I帧,e为P帧需要以a为基准才能解码,b、c、d为B帧需要以a和e为基准才能解码,所以最后解码顺序为:
a   e   b   c   d

显示阶段:
帧的解码顺序由DTS决定,但帧的显示顺序由PTS决定,该顺序即为采集顺序,因此,显示顺序为:
a   b   c   d   e

DTS、PTS

  • DTS(Decoding Time Stamp):解码时间戳,用于告诉播放器该在什么时候解码这一帧的数据。
  • PTS(Presentation Time Stamp):显示时间戳,用于告诉播放器该在什么时候显示这一帧的数据。
  • 当视频流中无B帧时,通常DTS和PTS的顺序是一致的
  • 音频中无B帧,所以音频的DTS和PTS顺序是一致的

音视频同步,通常需要选择一个参考时钟,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每一帧数据打上时间戳。播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。

相关文章

  • FFmpeg 入门-前置基础

    章节 像素存储格式 YUV & RGB I、B、P 帧 pts & dts 音视频开发技术可以做的事情 前言 在学...

  • flv # 存在B帧情况下的dts和pts

    如果不存在B帧,当然dts等于pts。如果存在B帧呢,flv文件中dts和pts是如何体现的呢? FLV的官方文档...

  • 音视频-帧、DTS、PTS

    采样率、比特率、帧率 采样率:每秒钟的采样次数,声音/画面越高越连贯,单位为Hz比特率:在视频领域又称码率,每秒传...

  • 理解音视频 PTS 和 DTS

    理解音视频 PTS 和 DTS 视频 视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在...

  • 2020-09-09 ffmpeg pts、dts、time_b

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

  • 音视频同步原理

    pts 显示的时间戳 有b帧 pts和dts不同否则相同 第三个函数 能推算出pts 三种不同的刻度 转成秒 要乘...

  • one example of dts & pts &am

    dts是unsigned的。 详细关系参见:flv # 存在B帧情况下的dts和pts 以下是一个flv文件中的d...

  • 解决ffmpeg中的时间戳同步问题_day95

    PTS/DTS(时间戳)要想解决时间同步问题就必须要了解ffmpeg中的PTS和DTS到底是什么 PTS: PTS...

  • 理解音视频 PTS 和 DTS

    本文转自:理解音视频 PTS 和 DTS | www.samirchen.com 视频 视频的播放过程可以简单理解...

  • ffmpeg中的pts和dts

    pts反映帧什么时候开始显示,dts反映数据流什么时候开始解码 怎么理解这里的“什么时候”呢?如果有某一帧,假设它...

网友评论

      本文标题:音视频-帧、DTS、PTS

      本文链接:https://www.haomeiwen.com/subject/wzsajctx.html