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

news/2024/11/20 6:14:50/

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

 


http://www.ppmy.cn/news/287160.html

相关文章

常用视频格式转换nv12,i420,i444,p010

文章目录 视频存储格式NV12转I420NV12转I444P010转I420 视频存储格式 P010格式与NV12格式一样,区别就是两个字节存一个像素值。 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y …

百度领航团零基础Python-Day1

百度领航团零基础Python-Day1 文章目录 简介安装执行python代码语法基础第一个 Python 程序基本数据类型Python数据类型转换算术运算符条件语句循环语句for 循环 作业 课程链接:https://aistudio.baidu.com/aistudio/course/introduce/7073 简介 python是一种解释性…

树莓派中的 IM 私有云支持多少并发?

美信拓扑技术分享系列 0x01。关注「美信拓扑」微信公众号,第一时间阅读本系列后续文章,了解美信拓扑IM的协议、架构和源码。 4000人同时在线,这是美信拓扑 IM 私有云的数据。是的,只需要一个400块的树莓派4B。注意,这不…

砸冰箱维权是“公益秀”

先引用一篇老罗的《秋菊男的故事》,这篇文章最早刊登在《独唱团》上。 十四年前......这是一个真实的故事。十四年前,我在东北老家延吉市的一个外语培训机构学过一段时间的许国璋英语。这是一个韩国人开的私立学校,名字 很土,叫三…

钱大妈,一家卖猪肉的广告公司

文 | 易不二 来源 | 螳螂财经(ID:TanglangFin) “中国的一个小区一般有3000户就是1万人,一万人在欧美是一个大型的小镇。在欧美,一个小镇就会有一家大卖场很多的商业配套。所以你们可以试想中国未来的小区会迸发出什么样的红利&…

一篇文章入门python基础

python python入门 人生苦短&#xff0c;我用python python的特点&#xff1a;简洁性、易读性、可扩展性 my_number3200 guess_numberinput("这台冰箱多少钱&#xff1f;") guess_numberint(guess_number) while guess_number!my_number:if guess_number<my_nu…

一个女人究竟该花多少钱?

奥斯卡王尔德说&#xff1a;“量入为出的人是最缺乏想象力的。”这话放在朱迪思莱文&#xff08;Judith Levine&#xff09;身上可不太公平。 最近&#xff0c;美国作家朱迪思莱文的新著《不买东西》&#xff08;Not Buying It&#xff09;在英国出版&#xff0c;有趣的是&…

飞桨/百度领航团/零基础Python 课节1: Python环境搭建及入门

课节1: Python环境搭配搭建入门教程 TIOBE 指数&#xff1a;最受关注的语言排行榜 python的特点 简洁性 实现同样的功能&#xff0c;python代码的行数往往是java的1/5。 易读性 代码像纯英语一样易于理解。 可扩展性 开源&#xff0c;任何人都可以做出自己的贡献。 课…