没有合适的资源?快使用搜索试试~ 我知道了~
MP4文件格式解析(3GP也可参考)
需积分: 13 47 下载量 6 浏览量
2011-05-04
08:58:08
上传
评论 2
收藏 580KB DOC 举报
温馨提示
试读
19页
实例分析MP4文件格式,具体介绍了其中比较重要的几个box,学习3GP文件也可以参考,基本一样,看后再结合标准文档,可以加快对标准的理解
资源推荐
资源详情
资源评论
mp4 文件格式解析(一)
(2010-09-01 17:55:04)
转载原文
标签:
http://
blog.sina.c
om.cn/s/
blog_4646
0bb30100
ke59.html
分类: 多媒体文件标准解析
原文地址:mp4
文件格式解析(一) 作者:可下人间
目前 MP4 的概念被炒得很火,也很乱。最开始 MP4 指的是音频(MP3 的升级版),即
MPEG-2 AAC 标准。随后 MP4 概念被转移到视频上,对应的是 MPEG-4 标准。而现在我们
流行的叫法,多半是指能播放 MPEG-4 标准编码格式视频的播放器。但是这篇文章介绍的
内容跟上面这些都无关,我们要讨论的是 MP4 文件封装格式,对应的标准为 ISO/IEC
14496-12,即信息技术 视听对象编码的第 12 部分:ISO 基本媒体文件格式(Information
technology Coding of audio-visual objects Part 12: ISO base media file format)。 ISO/IEC 组
织指定的标准一般用数字表示,ISO/IEC 14496 即 MPEG-4 标准。
MP4 视频文件封装格式是基于 QuickTime 容器格式定义的,因此参考 QuickTime 的格式
定义对理解 MP4 文件格式很有帮助。MP4 文件格式是一个十分开放的容器,几乎可以用来
描述所有的媒体结构,MP4 文件中的媒体描述与媒体数据是分开的,并且媒体数据的组织
也很自由,不一定要按照时间顺序排列,甚至媒体数据可以直接引用其他文件。同时,
MP4 也支持流媒体。MP4 目前被广泛用于封装 h.264 视频和 AAC 音频,是高清视频的代表。
现在我们就来看看 MP4 文件格式到底是什么样的。
1、概述
MP4 文件中的所有数据都装在 box(QuickTime 中为 atom)中,也就是说 MP4 文
件由若干个 box 组成,每个 box 有类型和长度,可以将 box 理解为一个数据对象块。box
中可以包含另一个 box,这种 box 称为 container box。一个 MP4 文件首先会有且只有
一个“ftyp”类型的 box,作为 MP4 格式的标志并包含关于文件的一些信息;之后会有且
只有一个“moov”类型的 box(Movie Box),它是一种 container box,子 box 包含了
媒体的 metadata 信息;MP4 文件的媒体数据包含在“mdat”类型的 box(Midia Data
Box)中,该类型的 box 也是 container box,可以有多个,也可以没有(当媒体数据全
部引用其他文件时),媒体数据的结构由 metadata 进行描述。
下面是一些概念:
track 表示一些 sample 的集合,对于媒体数据来说,track 表示一个视频或音频序
列。
hint track 这个特殊的 track 并不包含媒体数据,而是包含了一些将其他数据 track
打包成流媒体的指示信息。
sample 对于非 hint track 来说,video sample 即为一帧视频,或一组连续视频帧,
audio sample 即为一段连续的压缩音频,它们统称 sample。对于 hint track,sample
定义一个或多个流媒体包的格式。
sample table 指明 sampe 时序和物理布局的表。
chunk 一个 track 的几个 sample 组成的单元。
在本文中,我们不讨论涉及 hint 的内容,只关注包含媒体数据的本地 MP4 文件。下图
为一个典型的 MP4 文件的结构树。
2、Box
首先需要说明的是,box 中的字节序为网络字节序,也就是大端字节序(Big-
Endian),简单的说,就是一个 32 位的 4 字节整数存储方式为高位字节在内存的低端。
Box 由 header 和 body 组成,其中 header 统一指明 box 的大小和类型,body 根据类
型有不同的意义和格式。
标准的 box 开头的 4 个字节(32 位)为 box size,该大小包括 box header 和 box
body 整个 box 的大小,这样我们就可以在文件中定位各个 box。如果 size 为 1,则表示
这个 box 的大小为 large size,真正的 size 值要在 largesize 域上得到。(实际上只有
“mdat”类型的 box 才有可能用到 large size。)如果 size 为 0,表示该 box 为文件的最
后一个 box,文件结尾即为该 box 结尾。(同样只存在于“mdat”类型的 box 中。)
size 后面紧跟的 32 位为 box type,一般是 4 个字符,如“ftyp”、“moov”等,这些
box type 都是已经预定义好的,分别表示固定的意义。如果是“uuid”,表示该 box 为用
户扩展类型。如果 box type 是未定义的,应该将其忽略。
3、File Type Box(ftyp)
该 box 有且只有 1 个,并且只能被包含在文件层,而不能被其他 box 包含。该 box 应该
被放在文件的最开始,指示该 MP4 文件应用的相关信息。
“ftyp” body 依次包括 1 个 32 位的 major brand(4 个字符),1 个 32 位的 minor
version(整数)和 1 个以 32 位(4 个字符)为单位元素的数组 compatible brands。
这些都是用来指示文件应用级别的信息。该 box 的字节实例如下:
4、Movie Box(moov)
该 box 包含了文件媒体的 metadata 信息,“moov”是一个 container box,具体内容
信息由子 box 诠释。同 File Type Box 一样,该 box 有且只有一个,且只被包含在文件
层。一般情况下,“moov”会紧随“ftyp”出现。
一般情况下(限于篇幅,本文只讲解常见的 MP4 文件结构),“moov”中会包含 1 个
“mvhd”和若干个“trak”。其中“mvhd”为 header box,一般作为“moov”的第一个子
box 出现(对于其他 container box 来说,header box 都应作为首个子 box 出现)。
“trak”包含了一个 track 的相关信息,是一个 container box。下图为部分“moov”的字
节实例,其中红色部分为 box header,绿色为“mvhd”,黄色为一部分“trak”。
4.1 Movie Header Box(mvhd)
“mvhd”结构如下表。
剩余18页未读,继续阅读
资源评论
summerjourney
- 粉丝: 4
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2022年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- Golang:通过Gin框架+Redis+责任链,实现一个简单的钉钉机器人,进行消息处理 ps:多应用版
- 2021年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- CORRUPT.navicat150-premium-cs-x64.exe
- centos7 ssh 升级至 9.6p1
- DriverMax Pro .exe
- PHP端通过modbus协议跟第三方设备进行数据通信
- navicat安装包亲测可用
- 算法部署-使用OpenVINO部署MobileStyleGAN轻量化高保真图像合成算法-项目源码-优质项目实战.zip
- 基于java实现远程采集华为逆变器使用modbus tcp协议进行通讯的设备数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功