mp4box-h264-ftyp-moov-mvhd-thkd-avcC-sps-pps 详解

1、mp4文件,是由多个Box或FullBox组成

2、 Box,每个Box由Header和Data组成,FullBox,是Box的扩展,Box结构的基础上在Header中增加8bits version和24bits flags

3、 Header,包含了整个Box的长度size和类型type。当size==0时,代表这是文件中最后一个Box;当size==1时,意味着Box长度需要更多bits来描述,在后面会定义一个64bits的largesize描述Box的长度;当type是uuid时,代表Box中的数据是用户自定义扩展类型。

4、 Data,是Box的实际数据,可以是纯数据也可以是更多的子Boxes,见下图:

推荐一个mp4的图形界面解析工具:mp4info

上图左侧栏 ftyp  moov  trak  tkhd  edts  elst  mdia 等都是一个Box,moov 包含 trak

ftyp 是第一个box,二进制数据见下图

(1) 00 00 00 1c 是ftyp的大小----共28字节

(2) 66 74 79 70 是ftyp的类型ASCII值----ftyp

(3) 6d 70 34 32 在版本号 mp42

(4) 00 00 00 01 小版本号

(5) 6d 70 34 31 / 6d 70 34 32 / 69 73 6f 6d 兼容版本号 mp42 / mp41 / isom

moov  

00 02 a7 cc 大小----174028

6d 6f 6f 76  类型ASCII值----moov

mvhd

00 00 00 6c 大小----108

6d 76 68 64 类型ASCII值----mvhd ,

00 00 00 00 这个是FullBox----8bits version和24bits flags

d9 19 03 20 创建时间    3 642 295 072  从UTC时间的1904年1月1日0点至今的秒数

d9 19 03 20 修改时间

00 00 02 58  Time scale 文件在1秒时间内的刻度 Time scale----600    duration / timescale = 可播放时长(s)

00 02 99 e0  duration 该track的时间长度,用duration和Time scale值可以计算track时长---170464

00 01 00 00  媒体速率,这个值代表原始倍速

01 00 媒体音量,这个值代表满音量

接下来的一系列值都是结构中的预定义值,参见结构定义即可

thkd

00 00 00 5c 大小----92

74 6b 68 64 类型ASCII值----tkhd

00 00 00 01 这个是FullBox----8bits version和24bits flags

d9 19 03 20 创建时间    3 642 295 072  从UTC时间的1904年1月1日0点至今的秒数

d9 19 03 20 修改时间

00 00 00 01  trak id号,不能重复且不能为0

00 00 00 00  保留的

00 02 99 e0 duration时长---170464

00 00 00 00 00 00 00 00 保留的

00 00 视频层,默认为0,值小的在上层  
00 00 track分组信息,默认为0表示该track未与其他track有群组关系  
01 00 媒体音量,这个值代表满音量
00 00 保留的
接下来36个字节为视频变换矩阵  
01 70 00 00 宽  368
02 70 00 00 高  624

avcC--sps pps

在H264中,SPS和PPS存在于NALU header中,而在MP4文件中,SPS和PPS存在于AVCDecoderConfigurationRecord, 首先要定位avcC

00 00 00 2a 大小----42

61 76 63 43 类型ASCII值----avcC

图片转自 https://www.cnblogs.com/ghw-NO1/archive/2012/08/27/2658896.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linda012518

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值