FFmpeg中PTS与DTS详解

本文详细介绍了FFmpeg中PTS(Presentation Time Stamp)与DTS(Decode Time Stamp)的概念,以及它们在解码和渲染时的作用。时间基(time_base)作为时间戳的刻度单位,用于在不同层之间进行时间戳转换。文章还探讨了ffmpeg的分层结构,包括封装层、编解码层和原始数据层,并阐述了时间基在ffmpeg中的重要性和转换方法。
摘要由CSDN通过智能技术生成

一、PTS与DTS简介

  1. Decode Time Stamp(DTS)是解码时间戳,解码器解码时相对于SCR(系统参考)的时间戳。
  2. Presentation Time Stamp(PTS)是渲染时间戳,解码器渲染时相对于SCR(系统参考)的时间戳。
  3. duration是视频时长,表示当前帧的持续时间,或者说两帧之间的时间间隔是多少。
    简单的理解就是PTS视频帧什么时候显示,dts视频帧什么时候解码。

二、时间基(time_base)简介

时间戳表示刻度,时间基表示秒/单位刻度,即一个刻度是多少秒。
封装格式不同、数据状态不同、时间基不同。例如原始数据(YUV)的时间基time_base = AVRational{1,25},压缩后的数据对应的时间基是time_base = AVRational{1,90000}。
时间基转换函数:
av_rescale_q_rnd(pts, in_tb, out_tb, (AVRounding)(AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX));
函数实现将时间戳pts从in_tb时间基住转换到out_tb 时间戳:pts*in_tb/out_tb 。

三、ffmpeg分层结构与时间基(timebase)

时间基存在的意义:
1. 为了方便表示时间戳
当时间戳为很大或者很小的量级时,可以用正常的数字表示。
2. ffmpeg的分层结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值