mp4文件作为视频监控的主流媒体文件,框架结构也不算复杂,主要由一系列的box组成,这里简单解析一下。
查看mp4文件的软件:MP4 Reader.
1.mp4文件的总体结构
2.各组成分析
ftyp :file type box 存储文件类型
mdat :media data box 存储媒体的具体内容
moov:movie box 存储媒体的信息
这三个是一个MP4文件的必要信息,必须包含这些内容。一些文件中也会含有JCOK自定义信息,用来判断mp4文件的完整性。
3.moov box分析
mvhd:movie heafer box 主要描述time scale时间单元数 duration时间长度 rate播放速率 volume播放音量等信息。
trak:track box 一般包含video trak, audia trak
4.track box分析
tkhd:track header box 描述一些track信息,包含 播放标志flag, 大小size,类型type,视频宽高w h等。
media:media box 描述media的起始偏移start offset, 大小size, 类型type
5.media box 分析
mdhd:media header box 描述整个movie的特性,主要时间片间隔time scale,持续时间duration。
hdlr: handler reference box 描述track type,是video or audio。
minf:media infomatiom box 描述media的起始偏移start offset, 大小size, 类型type
6.minf box分析
vmhd:video media header box ,音频就是audio;描述size type flag version等信息。
dinf:data infomation box ,包含start offset size type信息。
stbl:sample table box 采样信息表
6.sample table box分析,重要的媒体信息;特别重要,视频的播放寻址,视频修复等功能都在里面
存储媒体数据的单位是samples。一个sample是一系列按时间顺序排列的数据的一个element。Samples存储在media中的chunk内,可以有不同的durations。Chunk存储一个或者多个samples,是数据存取的基本单位,可以有不同的长度,一个chunk内的每个sample也可以有不同的长度。
stsd:sample desceipition box 存储的信息可以正确的解码media sample
stts:decoding time to sample box 存储了media sample的duration 信息,提供了时间对具体data sample的映射方法,通过这个 box,你可以找到任何时间的sample
stsc:sample to chunk box 当添加samples到media时,用chunks组织这些sample,这样可以方便优化数据获取。一个trunk包 含一个或多个sample,chunk的长度可以不同,chunk内的sample的长度也可以不同。sample-to-chunk atom存储 sample与chunk的映射关系
stsz:sample size box 定义了每个sample的大小,它的类型是'stsz',包含了媒体中全部sample的数目和一张给出每个sample大 小的表。
stco:chunk offset box 定义了每个trunk在媒体流中的位置。
stss:sync sample box 确定media中的关键帧。对于压缩的媒体,关键帧是一系列压缩序列的开始帧,它的解压缩是不依赖于 以 前的帧。后续帧的解压缩依赖于这个关键帧
随笔聊几句,工作好几年啦,想把这些年做过的事情简单用博客描述一下,希望对大家有用。