MP4解析,包含moof

MP4解析块架构设计

    

1介绍

关联

a.     MP4 ISO 标准:c061988_ISO_IEC_14496-12_2012.pdf

b.    MP4中avc和hevcISO标准:W13478_1_pt15-3rd_FDIS_clean_HEVC.pdf

 

1.4部分分析工具

MP4Info

2.解析

2.1 ISO 标准Box列表

 

大家看着挺多的,其实真正用到的没有那么多。从上图可以看出,Box下可以包含0或多个SubBox,所以在解析的时候一定要注意。

下面开始介绍各个需要的Box功能,let’sGoGoGo!!!

2.2 部分Box介绍

从此开始介绍Box的功能,但只介绍对我们有意义的Box。

2.2.1 Box的基本知识

让我们来看上面2个介绍,这是Box的2个基本类型,分为Box和FullBox,其中FullBox是Box的扩展,请看下边例子:

其中size是从00 00 00 20开始到 33 67 70 38的,即是包含4字节的size和type的。

如果size = 1,即这个size是扩展的,要继续读8字节的largesize。

如果size = 0,即一直到文件末尾(目前为止的片源还没有遇见过)。

如果type = ‘uuid’,是用户扩展type,如果解析标准的,可以直接越过。

FullBox在Box上扩展4字节,包含version(1字节)和flags(3字节),会在其他Box上使用到。

其他的Box都是这2个基本类型上做的扩展,即这2个都是在Box的前端出现。

这里约定,后续的Box不写任何关于解析结构的介绍,请自己查阅c061988_ISO_IEC_14496-12_2012.pdfthx~

该解析是本人自己理解得出,如果有出现错误,请大家修改之,并拍砖, V_V

2.2.2 Box的类型介绍

下边介绍的是必须要解析的Box,并且一定一定要区分大小写

2.2.2.1 ftyp

ftyp用于初步校验该文件支持的格式,如上边的3gp8,isom等等。

但是这个格式太多了,如果要全部校验,可以说死翘翘,不太可能实现,所以我建议把ftyp略过,不去解析。

 

2.2.2.2 moov

moov,moof,mdat是3大主要Box,其中moov和mdat都可以在片源的开头和末尾如果出现moofmoov一定在moof前面,mdat也一定在moof前面。这里只介绍moov,后续会介绍moof和mdat。

moov是MP4/3GP文件最大的媒体信息Box,它不NB,是里面的信息NB。moov很简单的,主要是为了提醒大家,我里面是媒体信息了,大家注意了,就这个功能。

 

2.2.2.3 trak

trak作为moov手下第一大将,就不得不提一下了。trak是单独的媒体信息,可能是Audio/Video,或者是其他的(谁知道呢)。一个moov可以有多个trak,我就曾经遇见过一个128个trak的片源,真是恐怖啊,每个trak都仅包含一个图片的数据信息。

trak也是和moov一样,里面的信息NB,所以遇见trak大家可以直接解析里面的信息,后续还有很多这样的。

 

2.2.2.4 tkhd

tkhd是 trak header box,这个box只使用track_id,track_id 是唯一标示,并且不为0,我们

在后面找trak是就只用这个。

 

2.2.2.5 mdia

同trak。

 

2.2.2.6 mdhd

mdhd,media header,包含这个media的全部头信息,timescale和duration是需要的,timescale在后续会用到,duration是这个media的整体播放时间,很多时候都是准的,但也有不准的时候。

Bem的duration是根据解析moov时获取的最后时间去给出duration,因此是最准的。

 

2.2.2.7 hdlr

hdlr是哪个的缩写呢?是handler,你猜到没有。它的重要部分是handler_type,告诉我们这个trak是什么类型的。’vide’(Videotrack)和’soun’(Audiotrack),这2个是主要的。

 

2.2.2.8 minf

同mdia。

 

2.2.2.9 stbl

从stbl开始,我们要接触每个sample的构成了,从这往下的都是重要部分啦~

 

2.2.2.10 stsd

stsd,the sample description table,介绍关于Audio/Video的头信息数据,如H264的sps/pps,H265的sps/pps/vps,AAC的帧头数据,等等。

stsd 我们只识别 entry_count = 1,其他情况都不考虑。

根据stsd和文档W13478_1_pt15-3rd_FDIS_clean_HEVC.pdf,会解析出各种有用信息。

下面的是esds的结构:

 

利用sample description atom存储的信息可以正确的解码media sample。不同的媒体类型存储不同的sample description,例如,视频媒体,sample description就是图像的结构。第四章解释了不同媒体类型对应的sample description信息。

 

sample description atom的类型是'stsd',包含了一个sample description表。根据不同的编码方案和存储数据的文件数目,每个media可以有一个到多个sample description。sample-to-chunk atom通过这个索引表,找到合适medai中每个sampledescription。

字段

长度(字节)

描述

尺寸

4

这个atom的字节数

类型

4

stsd

版本

1

这个atom的版本

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值