FFmpeg时间基相关函数大杂烩
目录一、核心时间基概念速记二、时间基转换「主函数表」最重要三、AVRational 工具函数表四、FFmpeg 内置时间基常量五、不同场景「怎么选函数」对照表1️. Packet PTS → 毫秒最常用2️. Frame PTS → 秒double3️. 音频 frame → 下一帧 pts防抖动4️. Seek 时间戳必须 round5️. 音视频同步master clock audio clock六、av_rescale_q_rnd 的 rounding 参数详解七、Stream / Codec / Frame 时间基到底用哪个八、完整“黄金模板”九、时间基“血泪坑”速查表十、一句话总结觉得有用就请您帮忙点赞转发收藏吧您的鼓励是我创作的动力多谢看官。由于能力水平有限文中的错误或不严谨的地方在所难免还请批评指正。FFmpeg 在处理视频和音频时经常需要与时间基time base相关联的操作。时间基是视频和音频处理中的一个核心概念它定义了帧之间的时间间隔。FFmpeg 提供了一系列的函数和工具来帮助开发者处理与时间基相关的问题。一、核心时间基概念速记名字类型含义AVRational{int num, den}时间单位1 / den秒time_baseAVRational一单位 pts 等于多少秒​pts / dtsint64_t时间戳单位是 time_baseAV_TIME_BASE1000000ffmpeg 内部时间微秒公式一句话真实时间(s) pts × num / den二、时间基转换「主函数表」最重要函数原型 / 参数用途常见场景av_rescale_q()​(a, src_tb, dst_tb)pts 从 A 时间基 → B 时间基✅99% 用这个​av_rescale_q_rnd()​(a, src, dst, enum AVRounding)同上 四舍五入 / ceil音频 / 精确对齐av_rescale()(a, b, c)a*b/c防止溢出自己算 ratioav_rescale_rnd()(a, b, c, rnd)带 round 的整数 rescale底层封装av_mul_q()(AVRational a, AVRational b)rational 乘法推导 time_baseav_div_q()(a, b)rational 除法fps ↔ durationav_add_q()/av_sub_q()(a,b)rational 加减偏移时间记住一句话FFmpeg 里永远用av_rescale_q()做 pts 转换三、AVRational 工具函数表函数作用示例av_make_q(num, den)构造 AVRationalAVRational tb av_make_q(1, 1000);av_d2q(d, max)double → AVRationaltb av_d2q(1.0/44100, 100000);av_q2d(tb)tb → double 秒sec pkt-pts * av_q2d(tb);av_inv_q(tb)倒数fps → 每帧秒数av_reduce()约分 rational内部用四、FFmpeg 内置时间基常量常量 / API含义AV_TIME_BASE1000000微秒AV_TIME_BASE_Q(AVRational){1, AV_TIME_BASE}av_get_time_base_q()返回AV_TIME_BASE_Q音视频同步常用目标dst_tb AV_TIME_BASE_Q; // 微秒 dst_tb av_make_q(1,1000); // 毫秒五、不同场景「怎么选函数」对照表1️. Packet PTS → 毫秒最常用int64_t ms av_rescale_q(pkt-pts, stream-time_base, av_make_q(1, 1000));用av_rescale_q2️. Frame PTS → 秒doubledouble sec pkt-pts * av_q2d(stream-time_base);用av_q2d只读不写3️. 音频 frame → 下一帧 pts防抖动AVRational tb codec_ctx-pkt_timebase; int64_t next_pts av_rescale_q( frame-nb_samples, av_make_q(1, frame-sample_rate), tb );推导音频时钟4️. Seek 时间戳必须 roundint64_t seek_ts av_rescale_q_rnd( target_ms, av_make_q(1, 1000), stream-time_base, AV_ROUND_DOWN // 或 AV_ROUND_NEAR_INF ); avformat_seek_file(fmt_ctx, audio_idx, INT64_MIN, seek_ts, INT64_MAX, 0);seek 必须用_rnd5️. 音视频同步master clock audio clockdouble vid_clk vid_pkt-pts * av_q2d(vid_tb); double aud_clk aud_pkt-pts * av_q2d(aud_tb); double diff aud_clk - vid_clk;六、av_rescale_q_rnd 的 rounding 参数详解宏行为用途AV_ROUND_ZERO向 0 取整不推荐AV_ROUND_INF远离 0很少用AV_ROUND_DOWN向下✅ seek避免越界AV_ROUND_UP向上buffer sizeAV_ROUND_NEAR_INF四舍五入✅ 显示时间 / 音频对齐AV_ROUND_PASS_MINMAX保留 INT64_MIN/MAX内部用推荐记忆seek → AV_ROUND_DOWN ui ms → AV_ROUND_NEAR_INF七、Stream / Codec / Frame 时间基到底用哪个这是新手地狱直接给结论表对象pts 所在 timebase怎么转AVPacketAVStream::time_baseav_rescale_q(pkt-pts, st-time_base, dst)AVFrame(video)AVCodecContext::pkt_timebase或st-time_base解码后一般继承 streamAVFrame(audio)解码后建议转成1/sample_rate自己算avformat_seek_file()AVStream::time_base​别用 AV_TIME_BASE经典错误avformat_seek_file(fmt_ctx, idx, ..., ms, ..., 0); // ❌ ms 直接塞八、完整“黄金模板”static int64_t pts_ms(AVPacket *pkt, AVStream *st) { return av_rescale_q_rnd( pkt-pts, st-time_base, av_make_q(1, 1000), AV_ROUND_NEAR_INF ); } static int64_t pts_us(AVFrame *frm, AVStream *st) { return av_rescale_q(frm-pts, st-time_base, AV_TIME_BASE_Q); }九、时间基“血泪坑”速查表坑结果pkt pts 当秒用快进 1000 倍seek 用微秒直接塞seek 到天边audio frame 用 video timebase声音飞走rescale 不 rnd帧跳pkt/dts 混用B 帧倒放十、一句话总结FFmpeg 时间基只有三条铁律​1️.pts 永远是int64_t单位是AVRational2️.转换只用av_rescale_q()/av_rescale_q_rnd()3️.seek / 显示 / 同步各选一个主时钟统一 rescale 再比

相关新闻

WeChatMsg终极指南:3大核心功能实现微信聊天数据永久保存与智能分析

WeChatMsg终极指南:3大核心功能实现微信聊天数据永久保存与智能分析

WeChatMsg终极指南:3大核心功能实现微信聊天数据永久保存与智能分析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tren…

2026/8/10 22:27:09 阅读更多 →
NestJS 入门(3):Guard 如何挡住未登录请求?

NestJS 入门(3):Guard 如何挡住未登录请求?

上一篇:NestJS 入门(2):依赖注入到底解决了什么问题? 讲完了「对象怎么接到一起」。 接下来更贴近业务的问题是: 有些接口谁都能调,有些接口必须先登录。Nest 把这道门放在哪里? 答案…

2026/8/10 22:27:09 阅读更多 →
5个技巧掌握RVC语音转换:10分钟打造专属AI音色

5个技巧掌握RVC语音转换:10分钟打造专属AI音色

5个技巧掌握RVC语音转换&#xff1a;10分钟打造专属AI音色 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-Web…

2026/8/10 22:27:09 阅读更多 →

最新新闻

Linux主机安全应急响应:Shell自动化检查框架的设计与实践

Linux主机安全应急响应:Shell自动化检查框架的设计与实践

1. 项目概述如果你是一名运维工程师或者安全工程师&#xff0c;当半夜被电话叫醒&#xff0c;被告知某台核心Linux服务器可能被入侵时&#xff0c;你的第一反应是什么&#xff1f;是手忙脚乱地敲一堆零散的ps aux、netstat -antp、find / -perm -4000命令&#xff0c;还是能有一…

2026/8/10 23:07:41 阅读更多 →
从spi p9a案例看技术方案工程化:从Demo到生产落地的完整路径

从spi p9a案例看技术方案工程化:从Demo到生产落地的完整路径

你有没有遇到过这样的场景&#xff1a;一个项目&#xff0c;一个工具&#xff0c;或者一个框架&#xff0c;在初次接触时感觉无比顺畅&#xff0c;文档清晰&#xff0c;示例跑通&#xff0c;一切看起来都那么美好。你信心满满地准备将其应用到更复杂的生产环境&#xff0c;结果…

2026/8/10 23:07:41 阅读更多 →
实用技巧解析:高效管理Android应用的进阶方案

实用技巧解析:高效管理Android应用的进阶方案

实用技巧解析&#xff1a;高效管理Android应用的进阶方案 【免费下载链接】aya Android ADB desktop app 项目地址: https://gitcode.com/gh_mirrors/aya/aya AYA应用管理器是一款基于ADB的桌面应用&#xff0c;专为Android开发者设计&#xff0c;提供强大的应用管理功能…

2026/8/10 23:07:41 阅读更多 →
飞算JavaAI 智能引导:五步实现从需求到工程级源码的自动化生成

飞算JavaAI 智能引导:五步实现从需求到工程级源码的自动化生成

飞算JavaAI 智能引导&#xff1a;五步实现从需求到工程级源码的自动化生成 还在为从需求文档到可运行代码之间的巨大鸿沟发愁&#xff1f;飞算JavaAI的智能引导功能&#xff0c;只需五个步骤&#xff0c;就能将自然语言描述的业务需求转化为完整的Java工程级源代码。 一、什么是…

2026/8/10 23:07:41 阅读更多 →
DeepSeek + 本地知识库:30 分钟给团队搭一个能回答内部问题的问答机器人

DeepSeek + 本地知识库:30 分钟给团队搭一个能回答内部问题的问答机器人

最近有几个同事老在群里问"报销流程是啥"“请假怎么走”&#xff0c;明明文档里都写了&#xff0c;就是没人翻。我想着干脆用 DeepSeek 搭一个能"读我们资料"的问答机器人&#xff0c;贴到群里&#xff0c;谁想问就直接问。折腾了一下午跑通了&#xff0c;…

2026/8/10 23:07:41 阅读更多 →
解锁500+AI模型:开源AI生成平台的完全自托管方案

解锁500+AI模型:开源AI生成平台的完全自托管方案

解锁500AI模型&#xff1a;开源AI生成平台的完全自托管方案 【免费下载链接】Open-Generative-AI Unrestricted Open-source alternative to AI video platforms — Free AI image & video generation studio with 500 models (Flux, Midjourney, Kling, Sora, Veo). No co…

2026/8/10 23:06:40 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析&#xff1a;useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍&#xff1a;KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器&#xff1a;游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑&#xff1a;baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码&#xff08;维护中 rm repo&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身&#xff0c;而应重视模型外的系统搭建&#xff0c;即Harness。提出AgentModelHarness的实用公式&#xff0c;详细介绍Harness的四个层次&#xff1a;持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →