zoukankan      html  css  js  c++  java
  • AV时间戳dts,pts。图析ffmpeg解码序列。

    解码过程中,dts由媒体流读入的包推动(解码包中的dts标记),dts在前进。pts是在dts前进到某处(截点)而进行动作的标记。

    物理时间自然流逝,dts可以被控制同步与物理时间同一脚步节奏,也可以不。

    一个节目的各条流(一般就一视频一音频,再加一字幕)共同参照dts。

    流的各帧正确在物理世界呈现,pts必须参照物理时间与物理时间同步。

    上图是mp4文件的解码,由于P,B要参考I,B需要正向参考P,所以某一帧被解码呈现的时候,已经被安排读入前前后后的几帧(这里的帧不专指主帧),所以pts会编排成dts之后。上图所示,pts:133的主帧安排在dts:0时加载,pts:333的B帧安排在dts:66时加载,pts:266的B帧安排在dts:133时加载。

    又由于音频各帧独立,所以可以直接读入直接进行解码,pts和dts编排成一致。

    上图在dts进行至133时(图中最右一个AVPacket编码帧),对pts=133的视频帧(图中最左一个AVPacket编码帧)解码。

    解码出的帧dts打上当前的dts。在下面的AVFrame结构中,pkt_pts和pkt_dst是从AVPacket解码出来的时间截,而pts用于编码成AVPacket。

    2020补充:

    dts,理解成正在流逝的时钟时间。当然不是物理时钟时间。

    pts,理解成计划任务时间,dts到点了就执行任务。

    dts排序成一条时间轴,可以控制前进后退。

    pts排序成一条队列,dts到达时触发执行。

  • 相关阅读:
    【解决火车轮播图小圆点跳的问题】传统轮播图-三位法
    jq龙禧轮播图
    QT MSVC环境中添加QWT
    XDMA ip core的使用
    PCIe基础知识与例程分析----PIO_demo
    Day04 (四)_TCP文件传输设计
    Day04 (三)_UDP传输端设计
    Day04 (二)_TCP传输客户器端设计
    Day04 (一)_TCP传输服务器端设计
    Day03 (下)_Qt文件系统
  • 原文地址:https://www.cnblogs.com/bbqzsl/p/6002003.html
Copyright © 2011-2022 走看看