ffmpeg 时基转换

news/2025/2/26 22:16:45/文章来源:https://www.cnblogs.com/betterwgo/p/18564747

1:av_q2d(AVRational a)函数

     av_q2d(AVRational);该函数负责把AVRational结构转换成double,通过这个函数可以计算出某一帧在视频中的时间位置
     timestamp(秒) = pts * av_q2d(st->time_base);
     计算视频长度的方法:
     time(秒) = st->duration * av_q2d(st->time_base);
 

2:av_rescale_q(int64_t a, AVRational bq, AVRational cq)函数

     这个函数的作用是计算a*bq / cq来把时间戳从一个时间基调整到另外一个时间基。在进行时间基转换的时候,应该首先这个函数,因为它可以避免溢出的情况发生
 

3:ffmpeg内部的时间与标准的时间转换方法:

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

4:ts格式文件中3600间隔是什么意思?

     它是25fps帧率的ts媒体文件,每个视频帧的间隔时间。
     ts文件的封装时基是90kHz为单位,timebase是AVRational{1,90000},简单的理解就是把1秒分成了90000等分,拿25帧率ts文件来分析
     按标准时间来计算每帧的间隔:
     公式为:1 / 25 = 0.04(秒) = 40毫秒
     按ffmpeg中的1秒(即90000)来计算每帧的间隔(单位好像没有明确的定义,暂且使用ffmpeg吧):
     90000 / 25 = 3600(ffmpeg)
     用时间转换公式可能会更清楚一些:
     1(s) = 90000(ffmpeg)
     40(ms) = 3600(ffmpeg)
 

5:不同的时间基

     现实中不同的封装格式,timebase是不一样的。另外,整个转码过程,不同的数据状态对应的时间基也不一致。还是拿mpegts封装格式25fps来
     说(只说视频,音频大致一样,但也略有不同)。非压缩时候的数据(即YUV或者其它),在ffmpeg中对应的结构体为AVFrame,它的时间基为AVRational{1,25}。
     压缩后的数据(对应的结构体为AVPacket)对应的时间基为AVRational{1,90000}

 

摘取自:ffmpeg pts dts

 

 

 

 

 

 

 

 

 


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/839920.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-2025-1学号20241309《计算机基础与程序设计》第九周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第九周作业这个作业的目标|作业正文|2024-2025-1学号20241309《计算机基础与程序设计》第九周学习总结 教材学习内容总结 《计算机科学概论》第十章: (一)…

docker网络互通实验

需求:创建两个自定义容器,分别使用自定义网络,使其互通1. 创建容器 docker run -d --name web1 -p 80:80 httpd 2. 创建网络 docker network create --driver bridge --subnet 192.168.1.0/24 net1 docker network create --driver bridge --subnet 171.16.1.0/24 net2 …

Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行

第一步:下载Tesseract OCR引擎安装包 访问Tesseract的GitHub发布页面(https://github.com/tesseract-ocr/tesseract)或第三方下载站点(https://digi.bib.uni-mannheim.de/tesseract/),下载适合你操作系统的版本(最新版本)。 推荐使用第三方下载:第二步:详细阐述一下第…

海思 uboot 编译

用默认配置烧录:本文来自博客园,作者:封兴旺,转载请注明原文链接:https://www.cnblogs.com/fxw1/p/18564721

java-BLOG-2

1.前言: 第四次题目集: 这次题目集的第一和第二个题目比较简单,很容易可以做出来,只是用到了一个新的知识点——继承,继承(Inheritance)是面向对象编程的核心特性之一。它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码复用和功能扩展。继承是通过e…

用Java实现AI人脸比对

AI人脸比对技术百度智能云注册 https://login.bce.baidu.com/?account=&redirect=https%3A%2F%2Fconsole.bce.baidu.com%2Fiam%2F#/iam/baseinfo 选择人工智能-->人脸识别认证选择-->立即使用选择免费尝鲜(领取之后五分钟就可以在我的应用里查看了,里面勾选所有的…

NR中各种ID

NCGI(NR CELL Global Identifier):全球标识一个 NR 小区的号码PLMN(Public Land Mobile Network):国家码 MCC(Mobile Country Code)+网络码 MNC(Mobile NetWork Code),此号码唯一标识了某一个国家的某一个运营商NCI(NR CELL ID):标识 NR 中的一个 CELL GNBID:唯一标识一个基…

OOPTA4-6习题集总结

(1)前言 这三次作业算是一个渐进和转折的过程,题目渐渐减少,主要还是要写迭代题,对我来说5-6难度还是蛮大的。4是让我学会了不少更新功能的思路和调试的方法。5-6则让我明白了代码结构的重要性。题目内容主要涉及类的设计等等,以及主要的答题判题程序还有电路系统的编写与…

第53篇 调用第三方接口时需要注意的点

前言 在我们的业务开发中,调用第三方接口已经成为常态,比如对接一些ERP系统、WMS系统、一些数据服务系统等,它极大地扩展了我们应用的功能和服务范围。然而,实际对接过程中,我们往往会在这一环节遇到各种意想不到的问题,本文将深入探讨几种常见的第三方接口调用难题及其应…

如何在360评估中控制得分分布?

得分分布控制作用于评估打分时,评价人对一组被评价人的打分高低进行限制,避免老好人都打高分或恶意都给打低分的情况。 得分分布控制包括总分分布控制和各个指标的得分分布控制。注意 得分分布控制仅针对一个评价人同时评价多个被评价人时才会产生效果。 设置了得分分布控制时…

路由选择算法概述及经典算法分析

本文重点介绍Dijkstra算法及Distance-Vector(DV)算法原理。一、路由选择算法概述路由选择算法的目标:找到“从源节点到目的节点的最低开销路径” 路由选择算法的第一种分类centralized routing algorithm集中式路由选择算法集中式路由选择算法需要计算者具有“网络拓扑的全局连…