ffmpeg的时基

FFMPEG的很多结构中有AVRational time_base;这样的一个成员,它是AVRational结构的

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

AVRational这个结构标识一个分数,num为分数,den为分母。

实际上time_base的意思就是时间的刻度:

如(1,25),那么时间刻度就是1/25

(1,9000),那么时间刻度就是1/90000

那么,在刻度为1/25的体系下的time=5,转换成在刻度为1/90000体系下的时间time为(5*1/25)/(1/90000) = 3600*5=18000

ffmpeg中做pts计算时,存在大量这种转换

在以下结构中都有

AVCodecContext:编解码上下文。

AVStream:文件或其它容器中的某一个track。

如果由某个解码器产生固定帧率的码流

AVCodecContext中的AVRational根据帧率来设定,如25帧,那么num = 1,den=25

AVStream中的time_base一般根据其采样频率设定,如(1,90000)

在某些场景下涉及到PTS的计算时,就涉及到两个Time的转换,以及到底取哪里的time_base进行转换:

场景1:编码器产生的帧,直接存入某个容器的AVStream中,那么此时packet的Time要从AVCodecContext的time转换成目标AVStream的time

场景2:从一种容器中demux出来的源AVStream的frame,存入另一个容器中某个目的AVStream。

            此时的时间刻度应该从源AVStream的time,转换成目的AVStream timebase下的时间。

其实,问题的关键还是要理解,不同的场景下取到的数据帧的time是相对哪个时间体系的。

demux出来的帧的time:是相对于源AVStream的timebase

编码器出来的帧的time:是相对于源AVCodecContext的timebase

mux存入文件等容器的time:是相对于目的AVStream的timebase

这里的time指pts。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏西枫里博客

Python学习笔记十一(递归)

本次学习先回顾了前两天的lambda表达式,使用lambda表达式创建匿名函数。接着学习本次课程的内容:Python的递归。什么是递归,程序调用自身的编程方法叫...

522
来自专栏数据结构与算法

洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple)。对于两个正整数a和b,LCM(a, b)表示能同时整除a和b的最...

851
来自专栏JMCui

学习思考之《编程之美》.

一、智者说:无聊的时候来几道算法题,可以训练训练自己的思维嘛!难怪之前人家说数学好的人编程起来事半功倍,写算法的过程中真是深有体会啊!感觉就像是在做大学的高数题...

2889
来自专栏数据的力量

Vlookup多条件匹配(不用辅助列)

1394
来自专栏数据结构与算法

二项式定理

其实二项式定理也就一句话:$(x + y)^n = \sum_{i = 0}^n C_{n}^i x^{n - i} y^{i}$

301
来自专栏架构说

折半查找部分有序

部分有序 本周qq群有人咨询 Search in Rotated Sorted Array 来源: https://leetcode.com/proble...

2729
来自专栏AILearning

【机器学习实战】第11章 使用 Apriori 算法进行关联分析

第 11 章 使用 Apriori 算法进行关联分析 ? 关联分析 关联分析是一种在大规模数据集中寻找有趣关系的任务。 这些关系可以有两种形式: 频繁项集(...

2486
来自专栏编程微刊

2018年各大互联网前端面试题二(滴滴打车)

2062
来自专栏小樱的经验随笔

Lucas定理学习(进阶中)

(1)Lucas定理:p为素数,则有: ? ? ? (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 =  [n...

2608
来自专栏趣谈编程

神速Hash

面试官: 聊聊HashMap的底层 理解HashMap底层,首先应该理解Hash函数,今天我们聊聊Hash函数出现冲突的解决办法(此故事为连载形式,若没看上篇...

1795

扫描关注云+社区