You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ISO BMFF格式中mvhd与mdhd box的timescale差异及相关疑问

ISO BMFF中mvhd与mdhd的timescale区别及相关问题解答

一、mvhd与mdhd的timescale核心区别

根据ISO BMFF官方定义:

mvhd(Movie Header Box)的timescale:
用于指定整个影片的时间基准,即每秒包含的时间单位数量。例如,以1/60秒为时间单位时,timescale值为60。

mdhd(Media Header Box)的timescale:
用于指定单个媒体轨道(视频/音频)的时间基准,即该轨道每秒包含的时间单位数量。例如,以1/60秒为时间单位时,timescale值为60。

两者的核心差异:

  • mvhd是全局时间基准,作用于整个影片的所有轨道,统一协调不同轨道的时间同步;
  • mdhd是轨道级时间基准,每个媒体轨道可独立设置,适配自身媒体类型的时间精度需求。

二、mvhd为1000、帧率24时,视频mdhd设为24000是否正确?

你的思路存在误区:视频mdhd的timescale与mvhd没有直接的乘法关联。

  • 视频轨道的mdhd timescale通常由编码格式或时间精度需求决定:比如H.264/H.265编码常用90000作为timescale(对应SMPTE标准时间基准),也可以根据帧率设置为24(1/24秒为单位)、24000等,只要能准确表达帧的时间戳即可;
  • 音频轨道的mdhd timescale一般与采样率一致(如48000),这是合理的,因为音频的时间单位和采样点直接对应。

所以将视频mdhd设为24000本身是合法的,但并非必须遵循「帧率×mvhd timescale」的规则,具体取值取决于编码和播放场景的需求。

三、为何mvhd timescale会出现30、90000等不同取值?

mvhd的timescale选择取决于影片的应用场景:

  • 取值为30:常见于对时间精度要求不高的场景,比如早期流媒体、简单短视频,将时间单位设为1/30秒,方便和30fps的帧率对齐,简化时间戳计算;
  • 取值为90000:这是SMPTE标准定义的高精度时间基准,广泛用于专业视频编码(H.264/H.265)和流媒体分片(如HLS/DASH)。90000的高数值能提供更精细的时间粒度,适配不同帧率的内容(24fps、30fps、60fps等),避免时间戳转换时的精度损失,确保多轨道同步的准确性。

你提到的两个案例:

  • 某文件mdhd timescale为30:说明该轨道以1/30秒为时间单位,适合低精度的视频场景;
  • 某视频分片mdhd timescale为90000:是流媒体场景下的标准选择,满足高精度时间同步需求。

内容的提问来源于stack exchange,提问作者Kundera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:51:22