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

mp4box-h264-ftyp-moov-mvhd-thkd-avcC-sps-pps 详解相关推荐

  1. sps和pps一篇好的解释 H264码流中SPS PPS详解<转>

    https://blog.csdn.net/luzubodfgs/article/details/86775940 H264码流中NALU sps pps IDR帧的理解 https://blog.c ...

  2. h264 sps pps详解

    1.学习路线 step1.初步了解h264,了解h264数据帧分类和识别 step2.h264语法相关算法解析,这里对理解h264的视频帧很重要.通俗的说h264数据定义是由一组Bit组成,但是某个字 ...

  3. H264码流中SPS、PPS详解

    1 SPS和PPS从何处而来? 2 SPS和PPS中的每个参数起什么作用? 3 如何解析SDP中包含的H.264的SPS和PPS串? 1 客户端抓包 在做客户端视频解码时,一般都会使用Wireshar ...

  4. 给h264帧增加start code和sps/pps

    从音视频文件中读取数据,抽取其中的h264视频数据,并保存在文件中,如果想要此文件被播放器正常解码播放,还需要添加在每个帧之前添加start code,在每个关键帧前添加sps/pps. 播放器需要知 ...

  5. MPEG4 笔记(FTYP,MOOV,MVHD)

    ===========================ATOM介 绍============================ FTYP: 4Byte:size = 0x1C               ...

  6. MPEG4 笔记2(FTYP,MOOV,MVHD)

    http://hi.baidu.com/gongjun0371/blog/item/2bfef51200c659095aaf539c.html

  7. h264、sps、pps详解

    1.学习路线 step1.初步了解h264,了解h264数据帧分类和识别 step2.h264语法相关算法解析,这里对理解h264的视频帧很重要.通俗的说h264数据定义是由一组Bit组成,但是某个字 ...

  8. h264 sei信息 解码_关于H264编码数据中SPS,PPS,SEI,IDR等内容的问题

    群内的朋友们好! 我使用的平台是ipnc rdk 3.8 , 我在h264编码的有关NALU参数设置如下: staticParams->nalUnitControlParams.naluCont ...

  9. 软编码Flv 到Mp4 容器(五) fmp4 ftyp box 和moovmvhd box详解

    https://github.com/332065255/flv2fmp4 代码库 软编码Flv 到Mp4 容器(一) 软编码Flv 到Mp4 容器(二) flv tag拆解 软编码Flv 到Mp4 ...

  10. H264参数语法文档: SPS、PPS、IDR

    From: http://blog.csdn.net/heanyu/article/details/6205390 H.264码流第一个 NALU 是 SPS(序列参数集Sequence Parame ...

最新文章

  1. android 调用java类_Android中在WebView里实现Javascript调用Java类的方法
  2. python dlib学习(五):比对人脸
  3. 《大数据》第1期“论坛”——数据技术时代的未来
  4. 网狐app端获取服务器信息,获取服务器信息 网狐客户端
  5. android滑动基础篇 TouchView
  6. 计算机应用唐家琪,基于机器学习的蛋白质相互作用预测研究
  7. 苹果手机里的照片删了怎么恢复
  8. 历史文化名城盛开数字化之花
  9. 访问网站php直接下载,访问php文件自动下载及502问题-Go语言中文社区
  10. 微型计算机原理与接口技术——8086指令系统之数据传送指令
  11. 【第4期-智能驾驶汽车系列术语概念解析】第5节:龙格现象
  12. 怎么去掉index.php,怎么去掉后面的bbs/index.php
  13. 解决管理问题的基本思维方式
  14. 基于 51 单片机室内灯光控制系统
  15. Manifest基本
  16. 5个超实用的小众软件,让你的电脑体验感提升200%
  17. 联发科智能音箱系统单芯片解决方案---MT8516芯片资料介绍
  18. 2023年中德(CSC-DAAD)博士后奖学金项目开始申报
  19. 化工原理物性参数_2011化工原理练习题-总
  20. 在南方旅游 VS 在北方旅游

热门文章

  1. JDO示例 - JPOX
  2. SkeyeARS全景AR增强监视系统助力林业部门打造森林防火视频监控网
  3. openwrt ath10k 相关汇总
  4. 定义Student类
  5. 初中数学分几个模块_谁整理的?超全初中数学四大板块思维导图汇总,初中生请签收!...
  6. 分布式专题(一)什么是分布式
  7. RDO单机安装Openstack以及lvm卷存储与Vxlan网络配置
  8. c++代替goto语句的方法
  9. 高通MDM平台-分区表
  10. Java 使用正则表达式匹配淘口令