转载请标明出处:https://blog.csdn.net/u013752202/article/details/80557296
文中使用到的工具说明:https://blog.csdn.net/u013752202/article/details/80556729
moov box(movie box):包含若干子box,这些子box共同描述了媒体播放必需的元数据。
下面是一个MP4文件的box列表,红色的即moov box的内容:
ftyp ; length: 32
free ; length: 8
mdat ; length: 37524012
moov ; length: 12076 

 |__mvhd ; length: 108             (movie header)
  |__trak ; length: 11862           (track)
  |  |__tkhd ; length: 92             (track header)
  |  |__edts ; length: 36              (edit list )
  |  |__mdia ; length: 11726       (media )
  |    |__mdhd ; length: 32         (media header)
  |    |__hdlr ; length: 45            (handler)
  |    |__minf ; length: 11641     (media information)
  |      |__vmhd ; length: 20       (video media header)
  |      |__dinf ; length: 36          (data information)
  |        |__dref ; length: 28       (data reference)
  |      |__stbl ; length: 11577    (sample table)采样表box
  |        |__stsd ; length: 137     (sample descriptions)采样描述box
  |        |__stts ; length: 7224    (time to stamp)采样时戳因映射表box
  |        |__stss ; length: 140     (sync sample table)关键帧列表box
  |        |__stsc ; length: 280     (sample to chunk)sample和chunk映射表box
  |        |__stsz ; length: 3624   (sample size)每个sample的大小(有可能为stsz2)box
  |        |__stco ; length: 164    (chunk offset)每个chunk相对于文件头的偏移(大于2G的文件为stco64)box
|__udta ; length: 98
|  |__meta ; length: 90
end of file!

mvhd(movie header)
包含了媒体的创建与修改时间时间刻度、默认音量、色域、时长等信息
mvhd结构:
U32[0] size : 4(Byte)
U32[1] name : 4
U32[2] version : 1
flag : 3

U32[3] creation time : 4

U32[4] modification time: 4
U32[5] timescale : 4
U32[6] duration : 4

U32[7] rate[16.16]: 4
U32[8] volume[8.8] : 2
... : Reserve
其中creation time和modification time是从UTC时间的1904年1月1日0点至今的秒数。
rate:播放速度倍率
volume : 默认音量
[8.8]:即前8位为整数,后8为为小数
例如:

creation time=0x7c25b112(s)
modification time=0x7c25b131(s)
timescale=0x15f90=90000
duration=0x17cdc0=1560000
(媒体总体时长:1560000/90000=17.33s)
speed rate=0x0001.0x0000=1.0
volume=0x01.0x00=1.0
tkhd(track header)
包含了track的信息
U32[0]  size : 4
U32[1]  name : 4
U32[2]  version : 1
flags : 3
U32[3]  creation time : 4
U32[4]  modification time : 4
U32[5]  track id(唯一id,非0) : 4
U32[6]  reserve : 4
U32[7]  duration : 4
U32[8-9]  reserve : 8
U32[10]  layer(视频层,默认为0) : 2
alternate group(track分组信息,默认为0,表示与其他track没有群组关系) : 2
U32[11] volume[8.8] : 2
reserve : 2
U32[12-20]  matrix(视频变换矩阵) : 36 
U32[21] width [16.16] : 4
U32[22] height [16.16] : 4

[16.16]:即前16位为整数,后16为为小数
flags :
按位或操作结果值,预定义如下:
0x000001 track_enabled,否则该track不被播放;
0x000002 track_in_movie,表示该track在播放中被引用;
0x000004 track_in_preview,表示该track在预览时被引用。
一般该值为7,如果一个媒体所有track均未设置track_in_movie和track_in_preview,将被理解为所有track均设置了这两项;对于hint track,该值为0

例如:
其他解析同mvhd
width=0x780.0x0=1920.0
height=0x438.0x0=1080.0

edts(edit list )非必需

时间戳起始位置偏移,即从从该时间戳开始播放

mdhd (media header)

包含了media的信息

U32[0] size : 4
U32[1] name : 4
U32[2] version : 1
flags : 3
U32[3] creation time : 4
U32[4] modification time : 4
U32[5] time scale : 4 
U32[6] duration : 4
U32[7] language : 2
pre-defined : 2
hdlr(handler)

媒体播放过程的信息

U32[0] size : 4
U32[1] name : 4
U32[2] version : 1
flags : 3
U32[3] pre-defined : 4 
U32[4] handler type : 4
U32[5-7] reserve : 12
U8 name : handler name可为空字符串
例如:

handler type="vide"
"vide": video track
"soun": audio track
"hint": hint track

vmhd(video media header)

U32[0] size : 4
U32[1] name : 4
U32[2] version : 1
flags : 3
U32[3] graphics mode : 4
U32[4] opcolor : 2x3
graphics mode(视频合成模式,0:拷贝原始图像,其他值则与opcolor合成)
opcolor:{rgb}

dref(data reference)

"dref"下会包含若干个“url”或“urn”,这些box组成一个表,用来定位track数据。track可以被分成若干段,每一段都可以根据“url”或“urn”指向的地址来获取数据,sample描述中会用这些片段的序号将这些片段组成一个完整的track。一般情况下,当数据被完全包含在文件中时,“url”或“urn”中的定位字符串是空的。
U32[0] size : 4
U32[1] name : 4
U32[2] version : 1
flags : 3
U32[3] entry count(url或urn的个数) : 4
usr/urn : ---

转载请标明出处:https://blog.csdn.net/u013752202/article/details/80557296

MP4 moov box解析相关推荐

  1. MP4 ftyp box解析

    转载请标明出处:https://blog.csdn.net/u013752202/article/details/80557182 文中使用到的工具说明:https://blog.csdn.net/u ...

  2. 在线短视频秒播优化之视频文件格式之MP4文件Moov box的位置

    之前我们介绍了在线短视频秒播优化的方方面面,从服务器,cdn部署接入,数据连接/获取,客户端缓存,出帧策略,到视频文件I帧位置等. 今天从视频文件格式的另外一个角度介绍,MP4文件的box排列顺序是如 ...

  3. java MP4解析 第二步 解析moov box

    moov box(movie box):包含若干子box,这些子box共同描述了媒体播放必需的元数据. 参考资料:https://blog.csdn.net/u013752202/article/de ...

  4. 手机端mp4文件头前置检测,检测mp4视频文件头(moov box)是否在前面

    分享一个软件,用来检测mp4的文件头(moov box)在前面还是后面. 当mp4文件头在后面时视频不支持流媒体播放,比如在线播放,边下载边播,边解压边播,边传输边播都不支持.此软件用来在安卓手机端检 ...

  5. mp4文件缺少moov box无法播放情况的修复【非完美】

    一.mp4文件缺少moov box可能出现的场景有:使用录屏工具录到一半crash或断电,手机摄像机录到一般突然没电等. 二.修复的前提条件:需要有一个同样工具录制的参考视频,需要相同的mp4头部参数 ...

  6. MP4文件格式的解析,以及MP4文件的分割算法

    mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime.以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的"媒 ...

  7. MP4文件格式简要解析

    准备 安装mediaInfo.QTAtomViewer.exe.MP4info.exe等软件 视频一些参数 封装格式:我也不太清楚 编码格式:我也不太清楚 分辨率:图像的长和宽. 帧率:一秒播放的图片 ...

  8. MP4文件格式简要解析---代码解析

    准备 安装mediaInfo.QTAtomViewer.exe.MP4info.exe等软件 视频一些参数 封装格式:我也不太清楚 编码格式:我也不太清楚 分辨率:图像的长和宽. 帧率:一秒播放的图片 ...

  9. MP4文件格式简要解析——图文代码并茂

    http://blog.csdn.net/chenshengfa/article/details/50512616 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 准备 安装m ...

最新文章

  1. A single input file is required for a non-link phase when an outputfile is specified
  2. WPF - 本质:数据和行为
  3. UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定
  4. 全球及中国卸妆条行业发展规模与营销前景分析报告2022版
  5. tomcat的class加载的优先顺序
  6. 禁用win10触摸屏手势_Win10平板边缘滑动手势大全及开启/关闭方法
  7. [转载] 杜拉拉升职记——43 偷听者
  8. iview table数据直接导出_使用iview的exportcsv怎样导出嵌套数据
  9. c++ 判断数学表达式有效性_2009年高考数学上海卷难度如何?独特的题型设计,让你耳目一新...
  10. python函数中的变量,使全局Python函数中的所有变量
  11. 分类损失函数多元分类_二元分类为什么不能用MSE做为损失函数?
  12. LINUX更改图标后生效
  13. Typescript入门教程(B站黑马程序员)
  14. 内连接和外连接的区别
  15. 【定时自动清理磁盘空间】
  16. ODM和OEM的区别
  17. 程序员月薪8000,丢人吗?
  18. ROS学习笔记7:gazebo搭建机器人学习
  19. 计算机web二级考试内容,2015年全国计算机二级Web考试内容
  20. html分列代码,科学网—EXCEL 分列 (TextToColumns) 的C#代码 - 丁祥欢的博文

热门文章

  1. aspose替换书签并用金格插件打开
  2. 2023秋招--游族--游戏客户端--HR面面经
  3. 【Python】网络爬虫(静态网站)实例
  4. python 网站模板_Python之web模板应用
  5. 计算机类期刊投稿转载
  6. 《白话大数据与机器学习》读书笔记3
  7. nginx+keepalived构建主主负载均衡代理服务器
  8. Javascript编写的EditPlus注册码生成器
  9. 嵌入式Linux下的Qt环境搭建
  10. “一”的客观形态与主观感受之间的关联性研究