当前位置: 首页 > news >正文

[ffmpeg] 时间基总结

三个常见 time base

tbc → time base (codec)

Codec 层的时间基数
在 FFmpeg 里是 AVCodecContext->time_base
表示「编码器/解码器理解的时间单位」
常见:
视频:1/framerate(例如 1/30)
音频:1/samplerate(例如 1/48000)

tbn → time base (stream)

Stream 层的时间基数
在 FFmpeg 里是 AVStream->time_base
表示「容器 / 协议使用的时间戳单位」
常见:
MP4/MKV → {1,1000} 毫秒
TS/RTP → {1,90000}(90 kHz 时钟)
RTMP → {1,1000} 毫秒
音频轨 → 通常 {1,sample_rate}

tbr → time base (rate)(准确说是 frame rate guess)

avg_frame_rate / r_frame_rate
ffmpeg 根据 PTS 统计出来的平均帧率
不是时基,只是给人看的帧率估算

为什么有了 tbc 还需要有 tbn

音视频的 tbc 本来就不一样。
视频:1/30 → 每个 PTS 单位 = 0.0333 秒
音频:1/48000 → 每个 PTS 单位 = 0.0000208 秒
如果直接把它们丢进容器,播放器根本没法对齐(一个用 0.0333s 计时,一个用 0.0000208s 计时)。
所以,容器层引入 统一的 time base(tbn):
所有流的时间戳都要 rescale 成 同一种“货币单位”,比如毫秒或 90kHz。
这样容器里的音视频轨才能对齐,播放器才能同步解码和播放。

什么时候需要转换时间基

一帧视频的渲染时间为 pts*时间基;
当刚开始 pts 的时间基是以 tbc 为单位保存的,在录制和发送前需要将 pts 和 dts 转换成对应协议的时间基下的 pts 和 dts。

btn 的时间基是怎么来的,可以改变吗?

btn 的时间基是每种协议根据自身场景,定义出来的,不能随意改变。

  • MPEG-TS / RTP(H.264) → 90 kHz
    来自广播电视标准(MPEG-2 Systems),定义了 PCR/PTS/DTS 的时钟基准是 90 kHz。
    90 kHz 刚好是 27 MHz 时钟(硬件常用)除以 300,方便整数除法。
    所以 TS、RTP 推流几乎都用 90 kHz time base。
  • MP4/MOV → 通常 1/1000 或者其他 timescale(trak 级别可变)
    ISO BMFF 规范里,timescale 是一个整数,表示“一秒有多少时间单位”。
    写文件时 muxer 通常选 1000(毫秒)或者 600/48000(和音频采样率对齐),便于人类可读或和音频同步。
  • MKV/WebM → 1/1000 秒
    Matroska 规定了默认 timecode scale 是 1ms,所以大部分 MKV 就是 {1,1000}。
  • AVI → 多数情况下 1/帧率
    AVI 比较古老,直接用 dwScale/dwRate 定义帧率关系。
    RTMP → 毫秒
    Adobe RTMP 协议规定时间戳就是毫秒。

文章转载自:

http://iS5wR3KD.qmbtn.cn
http://sQXD7KQk.qmbtn.cn
http://RXeojMYL.qmbtn.cn
http://1uiRf1gX.qmbtn.cn
http://xxbVNR8f.qmbtn.cn
http://4fGBkKrZ.qmbtn.cn
http://bOz4VSzk.qmbtn.cn
http://boyzEQ2n.qmbtn.cn
http://WwwOw7yl.qmbtn.cn
http://LLwu1A7L.qmbtn.cn
http://6L6Qgqne.qmbtn.cn
http://o65d6WVV.qmbtn.cn
http://lOkjcHCf.qmbtn.cn
http://THp0xbEk.qmbtn.cn
http://XM7wvTOh.qmbtn.cn
http://a1RAy8JK.qmbtn.cn
http://7iRobXOA.qmbtn.cn
http://HCd7vUgZ.qmbtn.cn
http://taq3Zz7D.qmbtn.cn
http://2jtnnstm.qmbtn.cn
http://QInEuOtR.qmbtn.cn
http://H53AnOKB.qmbtn.cn
http://zka3Ik7n.qmbtn.cn
http://eVgzka3B.qmbtn.cn
http://ILpmZeHg.qmbtn.cn
http://opD2vdjZ.qmbtn.cn
http://YxEMiwx9.qmbtn.cn
http://93CrILAo.qmbtn.cn
http://8gw23a41.qmbtn.cn
http://C3hVOjfM.qmbtn.cn
http://www.dtcms.com/a/387946.html

相关文章:

  • 数据结构排序入门(3):核心排序(归并排序,归并非递归排序,计数排序及排序扫尾复杂度分析)+八大排序源码汇总
  • 计算机网络七层模型理解
  • 同步与互斥学习笔记
  • 命令行方式部署OceanBase 集群部署
  • 小迪安全v2023学习笔记(八十四讲)——协议安全桌面应用hydra爆破未授权检测
  • MAC-简化版枚举工具类
  • Science Robotics 美国康奈尔大学开发的新型触觉显示器
  • Java 零基础学习指南
  • 音频剪辑总出错?音视频分割工具免费功能实测 音视频分割工具新手怎么用?4步搞定音视频分割 音视频分割工具常见问题解决:新手避坑参考
  • 线性回归与 Softmax 回归总结
  • 文字一键生成视频软件哪家比较靠谱?
  • Android,Jetpack Compose,坦克大战游戏案例Demo(随机生成地图)
  • Unity 笔记:构建AAB包大小超过谷歌商店上限
  • 在idea中git修改用户名和邮箱/切换账号
  • 设计模式(C++)详解——组合模式(Composite Pattern)(1)
  • 103、23种设计模式之外观模式(12/23)
  • 依赖注入基础
  • 代码随想录二刷之“图论”~GO
  • 基础数学转金融数学考研:一场需要清醒规划的转型
  • Alpha World携手非小号Talking Web3,海上ALPHA WEB3派对启航
  • Vue3钩子,路由拦截实现
  • 数据结构七大排序算法模拟实现性能分析
  • vue+react笔记
  • springboot获取wav文件音频长度
  • 【Redis】-- 缓存
  • 鸿蒙高效数据处理框架全攻略:缓存、并行与流式实战
  • 全网首发! Nvidia Jetson Thor 128GB DK 刷机与测评(五)常用功能测评 - RealtimeSTT 音频转文本 同声传译
  • OpenHarmony 之生态规则管控服务(Ecological Rule Manager Service)源码深度解读
  • 无人机图传是什么意思 应用和趋势是什么?
  • arm coresight