当前位置: 首页 > news >正文

MP4音视频格式

1.MP4

MP4是一种用于封装音视频/字幕/图片/章节信息等数据的多媒体容器格式,是MPEG-4系列的成员之一

2.文件结构

MP4由一层层的嵌套Box(atom)组成

[ size (4 bytes) ][ type (4 bytes)][ payload (嵌套box或者数据) ]

在这里插入图片描述

3.常见Box

类型名称描述
加粗样式ftypFile Type
moovMovie Box视频元数据(时长、轨道、帧率等)
mdatMedia Data Box真正的视频/音频数据
mvhdMovie Header在 moov 中,记录全局时长、时间基等
trakTrack Box每个音视频轨道的容器(如 video、audio)
tkhdTrack Header描述轨道的基本信息(id、宽高等)
mdiaMedia Box媒体信息容器
minfMedia Information媒体详细信息,如音频格式、视频帧率等
stblSample Table每帧的偏移、大小、时间戳信息
moofMovie Fragment流式播放中分片播放时的元数据(fragmented MP4 用)
free / skipPadding Box空的填充区域,无实际内容

4.常见box介绍

1.ftyp box

告知视频播放器/编辑器等MP4的格式和兼容标准

[ size ][ type ][ major_brand ][ minor_version ][ compatible_brands… ]

字段名大小说明
size4 字节总长度(含 header)
type4 字节Box 类型,值为 ftyp
major_brand4 字节主标识,例如 isom, mp41, mp42
minor_version4 字节小版本号
compatible_brandsN 字节一个或多个 4 字节字符串,表示兼容的播放环境

2.moov box

定义一个MP4文件中的数据信息,类型是moov,包含

mvhd标签:Move Header Atom,存放为压缩过的影片信息头容器
cmov标签:Compressed Movie Atom,压缩过的电影信息容器
rmra标签:Reference Movie Atom, 参考电影信息容器

3.track box

track容器定义了媒体文件中的一个track信息,一个媒体文件中可以包含多个track,每个track之间互相独立,具有自己的时间和空间占用信息。主要用于
包含媒体数据的引用和描述
包含modifier track信息
流媒体协议的打包信息

字段长度说明
size4字节描述atom大小
类型4字节tkhd,mdia,clip,matt等

3.tkhd box

字段长度/字节描述
尺寸4这个 Atom 的字节数
类型4tkhd
版本1这个 Atom 的版本
标志3有效的标志分别如下:
• 0x0001:track 生效
• 0x0002:track 被用于 Movie 预览中
• 0x0004:track 被用于 Movie 的 Poster 中
生成时间4Movie Atom 的起始时间(基准时间是 1904-1-1 0:00 AM)
修改时间4Movie Atom 的修订时间(基准时间是 1904-1-1 0:00 AM)
Track ID4唯一标志该 track 的一个非零值
保留4这里为 0
Duration4track 的 Duration,在电影的时间戳中。与 track 的 edts list 进行的时间戳会建立关联,然后进行时间戳计算,得到对应的 track 的播放时间坐标
保留8这里为 0
Layer2视频层,默认为 0,值小的在上层
Alternate group2track 分组信息,默认为 0,表示该 track 未与其他 track 有群组关系
音量2播放此 track 的音量。1.0 为正常音量
保留2这里为 0
矩阵结构36该矩阵定义了此 track 中两个坐标空间的映射关系

4.hdlr box

描述媒体流的播放过程

字段长度 / 字节描述
尺寸4这个 Atom 的字节数
类型4hdlr
版本1这个 Atom 的版本
标志3这里为 0
Handle 的类型4handler 的类型。当前只有两种类型:
mhlr:media handlers
dhlr:data handlers
Handle 的子类型4media handler 或 data handler 的类型。
如果 component type 是 mhlr,那么这个字段定义的是媒体数据类型,如:
vide:video 数据
soun:sound 数据
如果 component type 是 dhlr,那么这个字段定义的是数据引用类型,如:
alis:文件的别名
保留12保留字段,默认为 0
Component name可变这个 component 的名字,也就是生成此 media 的 media handler。该字段的长度可以为 0

相关文章:

  • 中间件漏洞-Tomcat篇
  • 架构思维:如何设计一个支持海量数据存储的高扩展性架构_数据分片、存储、复制与一致性的原理性问题
  • 数据库第二周作业
  • (UI自动化测试web端)第三篇:元素的常用操作方法_元素操作
  • JavaScript 对事件的反应机制
  • js实现判断图片宽度高度不超过容器宽高度,刚好在容器中显示完
  • FreeRTOS学习(十):任务调度器挂起与恢复机制详解
  • mysql中的聚簇索引,什么是聚簇索引和非聚簇索引
  • Android14 Settings应用添加有线网开关条目实现
  • Android设计模式之Builder模式
  • uniapp用户登录及获取用户信息(头像昵称)
  • 阿里云国际站代理商:如何通过Serverless调用GPU资源?
  • Python基础语法元素(学习笔记)
  • 李泽湘和中国硬科技创新十年 | 媒体报道
  • 高并发电商商详网关系统设计:架构、优化与实战
  • SQL Server 锁类型介绍
  • c++ primer 阅读手记 第五章
  • C++中使用CopyFromRecordset将记录集拷贝到excel中时,如果记录集为0个,函数崩溃,是什么原因
  • 基于ngnix配置本地代理到对应服务器
  • 使用Pygame构建贪吃蛇游戏:从零开始的Python游戏开发之旅
  • 国家卫健委:工作相关肌肉骨骼疾病、精神和行为障碍成职业健康新挑战
  • 借助AI应用,自闭症人群开始有可能真正“读懂他人”
  • 四川邻水县县长石国平拟任县(市、区)党委书记
  • 51岁国家移民管理局移民事务服务中心联络部副主任林艺聪逝世
  • 经济日报:上海车展展现独特魅力
  • 预热苏杯,“谁羽争锋”全国新闻界羽毛球团体邀请赛厦门开赛