在互联网音视频开发中,mp4无疑是跨平台最好的,要学会查看mp4信息,方法很多,用FFmpeg可以直观的看到,这里讲的是如何看十六进制文件信息,也就是mp4文件的写入,先看几个mp4的基本概念
mp4的几个基本概念
1.mp4文件由许多Box与FullBox组成
2.每个Box由Data和Header组成
3.Data为Box实际数据,Header包含了整个Box的整个长度的大小size和类型type
4.当一个Box的Data为一系列的子Box时,这个Box又可以称为Container Box
转载:mp4文件Box层次结构图
下面直接进入正题,请看图
,先来看一张图
右边区域是mp4文件用的sublime打开,可以以十六进制的形式看到mp4文件,当然可能看不太明白,装一下HexViewer插件,会将ascii码翻译一下,大致能看到一些信息
补充信息:1个ascii码=8位=1byte,比如6d=1101101=‘m’,6f=1101111=‘o’
绿色部分是ftyp(文件类型)分别是8bytes的size,8bytes的type和type Data
再往下一行,前4bytes是一级容器的大小,0000 0597=5*256+9*16+7=1431bytes,后面6d6f 6f76=‘moov’。
图中1位置:0000 006c 6d76 6864,0000006c=108bytes,是到下一个二级容器trak的距离(图中标数1到2所占字节数,可以数一下确认);6d76 6864=容器名mvhd。
再看图中2位置:0000 01dd=477bytes,刚好等于到下一个二级容器track的距离(图中标数2-3); 7472 616d=track容器名
请结合Box层次结构图,通过计算,就能解析出mp4文件信息