首页 > 其他分享 >FFmpeg 时间戳与时间基

FFmpeg 时间戳与时间基

时间:2024-04-05 12:33:26浏览次数:23  
标签:25 FFmpeg base 时间 刻度 12800

FFmpeg 时间戳与时间基

什么是时间基?

FFmpeg中时间基是时间刻度,表示每个刻度有多少秒,能更精确的度量时间。在不同的封装格式下,时间基是不同的。
简单来说,比如一个时间刻度是0.0001秒,那么时间基就是1/10000。
时间基 = 时间刻度

在FFmpeg中表示时间基的的结构体是AVRational,其实就是一个分子分母组成的。
在FFmpeg中也有自己内部的时间基

/**
 * Internal time base represented as integer
 */

#define AV_TIME_BASE            1000000

/**
 * Internal time base represented as fractional value
 */

#define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE}

什么是时间戳?

FFmpeg中的时间戳与我们平常所理解的时间戳有所区别,通常意义上的时间戳是指1970年到现在的秒数,而ffmpeg中的时间戳表示占多少个时间刻度,单位是时间刻度,而不是秒,这个理解非常重要,只有转成实际时间才有意义。
FFmpeg中有两个时间戳,PTS和DTS

PTS:显示时间戳,在什么时候开始显示这一帧数据。
DTS:解码时间戳,在什么时候开始解码这一帧数据。
实际时间(秒):时间戳 * 时间基,比如一帧数据的时间戳是1000,时间基是1/1000,那么这一帧数据在一秒的时候开始显示或者解码。

在使用ffprobe 命令是,我们经常看到这样一个输出
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x368 [SAR 1:1 DAR 40:23], 380 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)

tbr:time base of rate,表示帧率,比如上面,25 tbr 表示1/25秒,也就是一秒25张图片
tbn:time base of stream,表示视频流的时间基,12800 tbn,表示一个时间刻度就是1/12800,那么视频播放在1秒的时候,pts就是12800,两秒就是12800*2
tbc:time base of codec,表示视频解码的时间基。50 tbc,那么解码1秒的那一帧数据,DTS就是50

标签:25,FFmpeg,base,时间,刻度,12800
From: https://www.cnblogs.com/wkzs/p/18115637

相关文章

  • FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
    ​FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于op......
  • 操作系统综合题之“采用实时调度,可调度的限制条件和可调度的最大X值是是多少ms的CPU时
    一、问题:单处理器情况下,m个周期性实时进程,若进程i处理时间为Ci,周期时间为Pi<(1≤i ≤m)1.要使系统可调度的限制条件什么?2.设置一个实时系统使用了4个周期事件,其周期分别为50ms,100ms,200ms,200ms。假设这4个周期时间分别需要25ms,20ms,10ms和xms的CPU时间。保持系统可调度的最......
  • 操作系统综合题之“采用实时调度,6个实时进程是否能保证都在截止时间完成吗?”
    一、问题:为了实现实时调度,系统需要为调度程序提供那些信息?(至少写出4个)在单处理机情况下,如果有6个实时进程,周期时间都是30ms,系统为每个进程分配6ms的处理时间,请问系统能否保证每个实时进程都能在截止时间内完成吗?为什么? 二、参考答案答:1.系统需要提供的信息:就绪时间,开始截止时......
  • Java代码实现带时区时间字符串转为LocalDateTime对象
    不带时区时间字符串可以使用Java8中的DateTimeFormatter类来将字符串转换为LocalDateTime对象。下面是一个示例代码:importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;publicclassDateTimeConversionExample{publicstaticvoidmain(Stri......
  • Android 11.0 展讯平台长按power电源键开机时间修改
    1.前言在11.0的系统rom产品定制化开发中,在产品关机的情况下,长按power电源键的情况下,会开启机器然后进入开机流程中,否则就不会开机,但是为了防误撞,误开机要求延长长按power电源键开机时间,所以就需要从kernel中来分析下长按开机的相关源码来实现相关的功能2.展讯平台长按powe......
  • 【leetcode面试经典150题】12.O(1) 时间插入、删除和获取随机元素(C++)
    【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)【题目描述】实现RandomizedSet 类:......
  • SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环
    SCI一区|Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测目录SCI一区|Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介......
  • 操作系统综合题之“采用短进程优先调度算法(Shortest-Process-First,SPF)和先来先服务调
    一、问题:某系统中有四个进程,他们进入系统的时间和需要服务的时间如题下表所示(表中数值均为十进制)进程进入系统的时间需要服务的时间P10100P21060P32525P43540 1.采用先来先服务调度算法(FCFS)时,填写题表,并及计算平均周转时间(四舍五入,保留小数后两位......
  • 操作系统综合题之“短进程优先调度算法(Shortest-Process-First,SPF)计算平均周转时间以
    一、问题:有4个进程A、B、C、D,他们的到达时间、预计运行时间以及优先级数值(优先级数值越小,表示优先级越高)如下表所示。(注:精确到小数点后2位) 1.请计算采用短进程优先调度算法的平均周转时间和平均带权周转时间2.请计算采用抢占式优先调度算法的平均周转时间和平均带权周转时间......
  • 时间复杂度和空间复杂度
    通过什么来衡量一个算法的好坏呢,那就是时间复杂度和空间复杂度。实现相同功能但时间和空间复杂度更优的算法是更优的算法,算法需要优化也可以从时间或者空间的复杂度的角度来考虑。时间复杂度主要衡量一个算法执行所需的时间长短,具体来说,如果一个算法的时间复杂度是O(n),那么......