metadata都在moov box中,比较复杂的是分别存储在不同的box中的。

media info

media info在moov的子box mvhd中,在本文中会以moov/mvhd的形式表示。像moov这样包含子box的box被称为container box。

mvhd的格式定义如下
MP4之获取metadata_第1张图片
其中需要注意的是duration和timescale。这里的duration是所有track的duration中的最大值。这里解释一下timescale,这个整数值表示1秒钟包含多少个time unit,相当于该文件定义的一个时间单位。

track info

媒体流的metadata在moov/trak box中,每一个trak box代表一个音视频流。流的信息在moov/trak/tkhd box

需要关注的是duration和width、height。视频流的width和height就是视频的宽、高,音频流两者都是0。
track的duration和tiemscale在moov/trak/mdia/mdhd中
MP4之获取metadata_第2张图片

这里的duration的单位是timescale
流的类型在moov/trak/mdia/hdlr中
MP4之获取metadata_第3张图片

从handler_type中可以知道流的类型,"vide"为视频流,"soun"为音频流