文档章节

ffmpeg时间换算,对于seek播放有帮助

jamin-snails
 jamin-snails
发布于 2017/01/13 08:54
字数 216
阅读 310
收藏 0

根据pts来计算一桢在整个视频中的时间位置:  

timestamp(秒) = pts * av_q2d(st->time_base)  

计算视频长度的方法:  

time(秒) = st->duration * av_q2d(st->time_base)    

这里的st是一个AVStream对象指针。  

时间基转换公式  

timestamp(ffmpeg内部时间戳) = AV_TIME_BASE * time(秒)  

time(秒) = AV_TIME_BASE_Q * timestamp(ffmpeg内部时间戳)  

所以当需要把视频跳转到N秒的时候可以使用下面的方法:  

int64_t timestamp = N * AV_TIME_BASE;   

av_seek_frame(fmtctx, index_of_video, timestamp, AVSEEK_FLAG_BACKWARD);  

ffmpeg提供了不同时间基之间的转换函数:  

int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)  

这个函数的作用是计算a * bq / cq,来把时间戳从一个时基调整到另外一个时基。

在进行时基转换的时候,应该首选这个函数,它可以避免溢出的情况发生

© 著作权归作者所有

共有 人打赏支持
jamin-snails
粉丝 6
博文 20
码字总数 4552
作品 0
成都
高级程序员
私信 提问
加载中

评论(2)

jamin-snails
jamin-snails

引用来自“钛元素”的评论

我想知道怎么控制,ffmpeg参数控制么
控制的话,可以参考下,ffplay里面的代码,你搜索avformat_seek_file这个函数。还有一个 av_frame_seek好像,frame去seek的话,需要你自己去找到关键帧,不然很容易花屏,直接 seekfile,ffmpeg内部自己去找关键帧,但是seek的时间不准。
钛元素
钛元素
我想知道怎么控制,ffmpeg参数控制么
解密FFmpeg播放track mode控制

上一篇文章(http://my.oschina.net/u/2336532/blog/400790)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的起始码和AAC的ADTS头,这样一般来说播放是没有...

yang_danny
2015/04/19
0
0
解密FFmpeg播放状态控制内幕

上一篇文章(http://my.oschina.net/u/2336532/blog/400790)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的起始码和AAC的ADTS头,这样一般来说播放是没有...

东辉在线
2015/04/21
0
0
最新FFmpeg音视频核心技术精讲与实战分享

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

weixin_43746183
12/04
0
0
基于ffmpeg截取视频帧画面

看到有人发了嵌入式Linux通过帧缓存截图 - Embedded Linux Framebuffer Screenshot,我在前些时间也做了一些类似的工作,不过我截的是视频文件的帧画面。文章我在blog内发表了,现看到有人做...

mickelfeng
2013/06/19
0
0
FFmpeg音视频核心技术精讲与实战(目前完整)

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

weixin_43744894
12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多线程的实现方式

多线程是指 一个程序运行时,产生或使用了不止一个线程。 线程的生命周期是怎么样的,下面这张图我们可以看出些端倪: 这章我们主要讨论多线程实现的方式,基础知识部分我们可以下来再恶补。...

搬砖大侠
7分钟前
0
0
新人千万不要在 Windows 上使用 Ruby on Rails

标题:新人千万不要在 Windows 上使用 Ruby on Rails 副标题:鼓励新人在 Linux 和 Mac 上使用 Ruby on Rails ! 原则:要走寻常路,不要学美特斯邦伟! "在 Windows上 使用 Ruby on Rails "是...

Jason909
15分钟前
0
0
day177-2018-12-14-英语流利阅读-待学习

艾滋病的治愈方法是否触手可及? Daniel 2018-12-14 1.今日导读 几十年来,艾滋病一直是世界上最难对付的“超级绝症”之一,从人类历史上第一次诊断出艾滋病病例的 20 世纪 80 年代早期到 20...

飞鱼说编程
41分钟前
7
0
java 合成两张图片或图片与二维码

java中偶尔会出现需要将一张小图片嵌入大图中或带二维码的海报图片,那么本文就是奔着这个目的来的,直接上腊肉! zxing是生成1D和2D条形或二维码的工具类库,java图形库Graphics2D进行图片的...

貔貅叔
46分钟前
4
0
80后阿里P10,“关老板”如何带着MaxCompute一路升级?

我是个幸运的人。虽然幸运不能被复制,但是眼光和努力可以。 关涛/关老板,80后的阿里P10,阿里巴巴通用计算平台负责人,阿里巴巴计算平台研究员。12年职场人生,微软和阿里的选择。 关涛的花...

阿里云官方博客
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部