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

FFMPEG 与 mp4

1. FFmpeg 中的 start_timetime_base

  • start_time
    流的起始时间戳(单位:time_base),表示第一帧的呈现时间(Presentation Time)。通常用于同步多个流(如音频和视频)。

  • time_base
    时间基,是一个分数(例如 {1, 1000} 表示毫秒级),用于将时间戳转换为秒:

    时间(秒) = 时间戳 × time_base.num / time_base.den
    
1.1 MP4 文件中的对应概念

MP4 文件使用 ISO Base Media File Format (ISOBMFF) 结构,时间信息主要存储在以下 box 中:

1.2 time_base 的对应
  • mdhd box(Media Header Box)
    每个媒体轨道(Track)的 mdhd box 包含 timescale 字段,表示该轨道的时间刻度:

    • 含义:1 秒被分成多少个时间单位(例如 timescale=90000 表示 1/90000 秒为一个单位)。
    • 对应关系:FFmpeg 的 time_base 通常是 {1, timescale}

    示例
    若 MP4 轨道的 timescale=90000,则 FFmpeg 可能将 time_base 设为 {1, 90000}

1.3 start_time 的对应
  • tfdt box(Track Fragment Decode Time)
    存储每个片段(Fragment)的解码时间,相对于轨道开始时间。

  • ctts box(Composition Time to Sample)
    存储解码时间(DTS)到呈现时间(PTS)的偏移量,影响 start_time 的计算。

  • stts box(Decoding Time to Sample)
    定义样本的解码时间间隔,辅助计算绝对时间。

1.4. 转换关系示例

假设 MP4 文件:

  • 视频轨道 timescale=90000
  • 第一帧的 tfdt 值为 18000(表示 18000/90000 = 0.2 秒)

FFmpeg 读取时:

  • time_base = {1, 90000}
  • time_base = 1 / timescale
  • start_time = 18000(时间戳,单位为 time_base
  • 实际起始时间(秒) = 18000 × (1/90000) = 0.2
  • start_time(起始时间(秒)) = start_time × time_base
http://www.xdnf.cn/news/6185.html

相关文章:

  • elpis-core: 基于 Koa 实现 web 服务引擎架构设计解析
  • LeetCode 热题 100_颜色分类(98_75_中等_C++)(技巧)(计数;双指针)
  • git push 报错:send-pack: unexpected disconnect while reading sideband packet
  • 鸿蒙OSUniApp 开发的下拉刷新与上拉加载列表#三方框架 #Uniapp
  • “堆”和“栈”
  • matlab插值方法(简短)
  • 4G物联网模块实现废气处理全流程数据可视化监控配置
  • Android多媒体——媒体解码流程分析(十四)
  • Cursor 0.5版本发布,新功能介绍
  • 从零实现一个高并发内存池 - 2
  • WebGL知识框架
  • 网络协议分析 实验五 UDP-IPv6-DNS
  • openfeign与dubbo调用下载excel实践
  • Python知识框架
  • Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码
  • 【大模型】OpenManus 项目深度解析:构建通用 AI Agent的开源框架
  • Ubuntu——执行echo $USE什么都不显示
  • Turborepo + Vite + Next.js + Shadcn Monorepo 项目构建
  • 【JVS更新日志】企业文档AI助手上线、低代码、智能BI、智能APS、AI助手5.14更新说明!
  • Python如何解决中文乱码
  • 驾驭数据洪流:大数据治理的全面解析与实战方案
  • git使用的DLL错误
  • 线性规划求解及演示
  • 项目基于udp通信的聊天室
  • CPU的用户态(用户模式)和核心态(内核态)
  • 若依框架页面
  • 填涂颜色(bfs)
  • 如何恢复被勒索软件加密的服务器文件(解密与备份策略)
  • (C语言)超市管理系统(测试2版)(指针)(数据结构)(清屏操作)
  • 内存安全设计方案