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

typedef struct AVRational{
int num; ///< numerator
int den; ///< denominator
} AVRational; AVRational这个结构标识一个分数,num为分数,den为分母。 实际上time_base的意思就是时间的刻度: 如(,),那么时间刻度就是1/ (,),那么时间刻度就是1/ 那么,在刻度为1/25的体系下的time=,转换成在刻度为1/90000体系下的时间time为(*/)/(/) = *= ffmpeg中做pts计算时,存在大量这种转换 在以下结构中都有 AVCodecContext:编解码上下文。 AVStream:文件或其它容器中的某一个track。 如果由某个解码器产生固定帧率的码流 AVCodecContext中的AVRational根据帧率来设定,如25帧,那么num = ,den= AVStream中的time_base一般根据其采样频率设定,如(,) 在某些场景下涉及到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。

FFMPEG AVRational的更多相关文章

  1. [转载] FFMPEG之AVRational TimeBase成员理解

    FFMPEG的很多结构中有AVRational time_base;这样的一个成员,它是AVRational结构的 typedef struct AVRational{    int num; /// ...

  2. FFmpeg学习6:视音频同步

    在上一篇文章中,视频和音频是各自独立播放的,并不同步.本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的.主要有以下几个方面的内容 视音频同步的简单介绍 DTS 和 ...

  3. ffmpeg实现dxva2硬件加速

    这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.这是第二篇,记录用ffmpeg实现dxva2. 第一篇翻译的Direct3D device manager,链接:http: ...

  4. FFMpeg的码率控制

    mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面 ...

  5. ffmpeg 和 SDL 的结合使用

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视 频的完整解决方案.它包含了非常先进的音频/视频编解码库 ...

  6. Linux下编译带x264的ffmpeg的配置方法,包含SDL2

    一.环境准备 ffmpeg下载:http://www.ffmpeg.org/download.html x264下载:http://download.videolan.org/x264/snapsho ...

  7. ffmpeg未整理好,有时间整理下

    v  容器(Container) v  容器就是一种文件(封装)格式,比如flv.mkv.ts.mp4.rmvb.avi等.包含下面5种流以及文件头信息. v  流(Stream) v  是一种视频数 ...

  8. 最新版ffmpeg源码分析

    最新版ffmpeg源码分析一:框架 (ffmpeg v0.9) 框架 最新版的ffmpeg中发现了一个新的东西:avconv,而且ffmpeg.c与avconv.c一个模样,一研究才发现是libav下 ...

  9. FFMPEG解码流程

    FFMPEG解码流程:  1. 注册所有容器格式和CODEC: av_register_all()  2. 打开文件: av_open_input_file()  3. 从文件中提取流信息: av_f ...

随机推荐

  1. linux下shellcode提取常用到的命令

    汇编语言的汇编指令: nasm -f elf xxx.asm    生成xxx.o文件 ld -o xxx  xxx.o  生成可执行文件,不用加参数-s ,否则在提取shellcode的十六进制码的 ...

  2. 第三百五十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—利用开源的scrapy-redis编写分布式爬虫代码

    第三百五十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—利用开源的scrapy-redis编写分布式爬虫代码 scrapy-redis是一个可以scrapy结合redis搭建分布式爬虫的开 ...

  3. e821. 设置JScrollPane滚动栏

    A scroll bar in a scroll pane can be set to appear only as needed, always appear, or never appear. B ...

  4. kafka基本概念

    介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语:Kafka将消息以to ...

  5. chrome浏览器表单自动填充默认样式(背景变黄)-autofill

    之所以出现这样的样式, 是因为Chrome会自动为input增加如下样式. 这个样式的优先级也比较高. 无法通过important覆盖(这就比较恶心了). 解决方案(3种): 1. 关闭自动保存账号密 ...

  6. LNMP架构介绍 MySQL安装 PHP安装 Nginx介绍

  7. 微信小程序/支付宝小程序 WxParse解析富文本(html)代码

    小程序本身并不太支持html代码,比如html的img.span.p这个时候改这么办呢?需要用到一个小插件WxParse来实现. 小程序高级交流群:336925436  微信小程序支持富文本编辑器代码 ...

  8. spring mvc 框架URL接收中文参数的乱码解决方案

    后台可能就会出现乱码,具体解决方案如下: 一. 配置tomcat目录下的service.xml文件 tomcat7/conf/server.xml 给该行代码加上 URIEncoding=" ...

  9. Robot Framework分层、开发系统关键字

            开发系统关键字:http://www.cnblogs.com/fnng/p/4261293.html http://www.cnblogs.com/fnng/p/3969978.htm ...

  10. Java编程思想学习笔记——接口

    1.抽象类和抽象方法 抽象方法:不完整的,仅有声明而没有方法体. abstract void f(); 抽象类:包含抽象方法的类.(若一个类包含一个或多个抽象方法,则该类必须限定为抽象的.) 1.用抽 ...