C++编程音视频库ffmpeg的pts时间怎么换算

您所在的位置:网站首页 ffmpeg推流断线重连 C++编程音视频库ffmpeg的pts时间怎么换算

C++编程音视频库ffmpeg的pts时间怎么换算

2023-04-02 21:10| 来源: 网络整理| 查看: 265

0 分享至

用微信扫码二维码

分享至好友和朋友圈

ffmpeg中的pts,dts,duration时间记录都是基于timebase换算,我们主要分析下pts的时间怎么换算,其它的是一样的换算。ffmpeg的时间换算对许多新接触同学算是一个大坑,很多刚接触ffmpeg的同学都不容易搞清楚它的时间计算方法。

我们先看下ffmpeg时间是怎么算的:

一帧图像(音频)的时间戳(时间戳一般以第一帧为0开始)

时间戳 = pts * (AVRational.num/AVRational.den)

为什么要这么算(挖坑)我们看下ffmpeg的说明:

“当有理数用浮点数做转换时是有损的,ffmpeg要求高精度的计算的时间戳,所以用分数来做换算”。

我们在看下换算用到的结构体,一看到他是用分数就容易理解了

typedef struct AVRational{

int num; ///timebase,vs->timebase); //如果手动换算 if(vc->timebase.den > 0 && vs->timebase.den > 0) pkt.pts = pkt.pts * (vc->timebase.num/vc->timebase.den)/(vs->timebase.num/vs->timebase.den)

更多的资料也可以关注我51cto上的视频课程

夏老师的课堂 http://edu.51cto.com/lecturer/12016059.html

C++编程FFMpegSDK美颜直播推流实战-基于qt5,opencv视频课程

http://edu.51cto.com/course/10840.html

本文出自 “夏曹俊” 博客,请务必保留此出处http://xiacaojun.blog.51cto.com/12016059/1958680

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

/阅读下一篇/ 返回网易首页 下载网易新闻客户端


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3