首页 > 其他分享 >ffmpeg中的时间戳

ffmpeg中的时间戳

时间:2023-11-10 12:03:57浏览次数:29  
标签:ffmpeg av 90000 AVRational BASE 时间 TIME

参考:https://zhuanlan.zhihu.com/p/468346396 1、基本概念 ffmpeg中提及时间戳时,一定要明确它所对应的时基(time_base)。为精确描述该其数值,使用以下结构体来描述这一有理数概念。

typedef struct AVRational{
    int num; ///< numerator
    int den; ///< denominator
} AVRational;

在ffmpeg中,时间的单位是微妙,那么标准的时基为 (AVRational){1, 1000000},其中ffmpeg定义了两个宏

#define AV_TIME_BASE            1000000
#define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE}

其中Q代表quotient,汉语为 “商”。

对于像H264视频的时基为(AVRational){1, 90000}。

2、同一时间戳在不同时基下的转换 例如, 在时基bq = {1,1000000}有时间戳 a1 = 48000,需要转换到时基 cq ={1,90000}下的时间戳a2,

计算过程应该为 a2 = 48000 *(1/1000000)/ (1/90000} = 4320,使用ffmpeg的对应接口计算函数为 a2 = av_rescale_q(a1, bq, cq); 。其中bq,cq为AVRational类型。

3、时长计算 时长=时间戳*时基 函数 av_q2d 用来 分数(结构体)转小数 如:计算视频时间(s)

int64_t current_time = pkt->pts*av_q2d(ic->streams[is->video_stream]->time_base);//结果为S,其中time_base为结构体(AVRational){1, 90000}

//Duration between 2 frames (us)
//int64_t frame_duration=(double)AV_TIME_BASE/av_q2d(ic->streams[is->video_stream]->r_frame_rate);//quotient to decimal

标签:ffmpeg,av,90000,AVRational,BASE,时间,TIME
From: https://blog.51cto.com/danielllf/8294944

相关文章

  • 记录使用mongotemplete关于时间查询时的大坑
    1、问题:在使用条件查询mongdb数据库的时候,涉及到使用时间范围来查询数据,比如当时使用的是:1990-01-01T00:00:00到1900-02-02T00:00:00查询的是1月1号到1月2号两天的数据,但是在使用Query.query(criteria);进行查询的时候,和使用Aggregation.match(criteria);进行查询得出的结果不......
  • mybatis-plus 根据当前时间,判断检索
    <iftest="timeStatus!=nullandtimeStatus.trim()!=''"><iftest="timeStatus==1"><![CDATA[ANDDATE_FORMAT(now(),'%Y-%m-%d%H:%i:%S')<DATE_FORMAT(start_date,'%Y-%m-%d......
  • mybatis中日期时间比较遇到得问题
    今天进行下面得查询得时候,总是报:Cause:java.lang.IllegalArgumentException:invalidcomparison:java.time.LocalDateandjava.lang.String,提示不能将LocalDate类型与String类型进行比较,刚开始一直在检查<if>下得条件,寻思是不是类型写的不对,后来才发现是<if>标签中得判断问题,......
  • 基于ARIMA、SVM、随机森林销售的时间序列预测|附代码数据
    原文链接  http://tecdat.cn/?p=1130最近我们被客户要求撰写关于时间序列预测的研究报告,包括一些图形和统计输出。如今DT(数据技术)时代,数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。对于零售行业来说,预测几乎是商业智能(BI)研究的终极问题,单纯......
  • sharding分表应用笔记(二)——按时间分表策略配置
    sharding分表应用笔记(二)——按时间分表策略配置目录sharding分表应用笔记(二)——按时间分表策略配置1背景2配置2.1命名空间配置2.2策略接口实现2.2.1时间精确分片策略2.2.2时间范围分片策略3外部链接1背景应用背景:物理数据源只有一个;对于部分数据量大的表实行按月分表处......
  • 如何获取一周的开始日期时间?
    内容来自DOChttps://q.houxu6.top/?s=如何获取一周的开始日期时间?在C#中,只知道当前时间,如何找到一周的开始(包括星期日和星期一)?类似于:DateTime.Now.StartWeek(Monday);使用扩展方法:publicstaticclassDateTimeExtensions{publicstaticDateTimeStartOfWeek......
  • 使用递归图 recurrence plot 表征时间序列
    在本文中,我将展示如何使用递归图RecurrencePlots来描述不同类型的时间序列。我们将查看具有500个数据点的各种模拟时间序列。我们可以通过可视化时间序列的递归图并将其与其他已知的不同时间序列的递归图进行比较,从而直观地表征时间序列。递归图RecurrencePlots(RP)是一种用于......
  • C语言程序设计 2009春季考试时间和地点
     课程名称考试时间监考教室考试人数C语言程序设计第11周周6(2009-05-09)19:00-21:00曲江10-40173C语言程序设计第11周周6(2009-05-09)19:00-21:00曲江10-40727C语言程序设计第11周周6(2009-05-09)19:00-21:00曲江10-40827C语言程序设计第11周周6(2009-05-09)19:00-21:00曲江10......
  • 软件测试技术,软件项目管理 实验时间安排 2009春季
     2009年春季十一周课表时间星期一星期二星期三星期四星期五时间上1   计082  8:00-8:502    9:00-9:503     10:10-11:004     11:10-12:00下5      6      7 项目软061-062计082 计06314:10-15:008  15:10-16:009 答疑曲江 16:10-17:0010......
  • R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析消费者价
    全文链接:http://tecdat.cn/?p=31108原文出处:拓端数据部落公众号作为衡量通货膨胀的基本指标,消费者价格指数CPI和生产者价格指数PPI的作用关系与传导机制一直是宏观经济研究的核心问题。对此问题的研究显然具有重要的学术价值与现实意义:当PPI先行地引导着CPI的变动,则意味着上游......