没有合适的资源?快使用搜索试试~ 我知道了~
音视频封装:MP4各个Box详解和H264打包方法1
5星 · 超过95%的资源 需积分: 0 2 下载量 164 浏览量
2022-08-08
22:52:57
上传
评论
收藏 1.88MB DOCX 举报
温馨提示
试读
70页
问题背景:上一篇文章让大家看了下MP4的主要结构和推荐了一些分析工具,如果你对MP4没有任何了解,还是先看上文,了解MP4的基本结构,其中还有许多工具需要下载和
资源详情
资源评论
资源推荐
问题背景:
上一篇文章让大家看了下 MP4 的主要结构和推荐了一些分析工具,如果你对 MP4 没有任何了
解,还是先看上文,了解 MP4 的基本结构,其中还有许多工具需要下载和使用。这篇文章借
助一个实例分析下核心 Box 的语法结构和字段含义,其次总结下 H264 码流的是如何打包到
MP4 中的,这篇文章也是下篇文章计算一些音视频信息,实现音视频操作和对 MP4 码流处理
的基础。
学习完本篇文章,基本可以清楚了解 MP4 结构,再对着 ISO-14996 标准写一个 MP4 的 muxer
或者 demuxer 都不是难事,也可以分析一些线上 MP4 播放问题。
实例分析:
下面会实际分析一段码流,然后看下各个 Box 语法和字段,为了让大家清楚分析的先后顺序
关系,约定三点:
1. 分析时会从外到里进行分析,先分析第一层的 Box 各个字段,再分析第二层 Box 各个字段,以此类推;
2. Box 由于种类非常多,这里只分析一个标准的 MP4 文件的 Box 含义,有些特殊和不太用的 Box 就一笔带
过了,如果你万一项目用到直接查 ISO 标准文档即可,毕竟这里不是翻译 ISO 文档;
3. Box 里面字段也不是所有的都需要关注,我们只需要关注核心和有用的,对于一些不太用的就可以忽略
不计了,实际解封装我们也是提取我们想要的信息或者打包时对于不关注的字段直接赋默认值即可,还是
希望读者看完这篇文章知道如何分析 MP4 文件,了解这种思路即可;
分析第一层 Ftyp、Moov、Mdat、Free 等 Box:
用 Mp4Info 工具打开 MP4 文件后,不打开内部结构,我们先看到外边的四大 Box,现在依次
分析下各个 Box.
ftyp Box
简介:
ftyp 是 MP4 文件的第一个 Box,包含了视频文件使用的编码格式、标准等,这个 Box 作用基
本就是 MP4 这种封装格式的标识,同时在一份 MP4 文件中只有一个这样的 Box。ftyp box 通
常放在文件的开始,通过对该 box 解析可以让我们的软件(播放器、demux、解析器)知道
应该使用哪种协议对这该文件解析,是后续解读文件基础。
实例分析:
定义:
字段名称
占用字节
含义
说明
Box length
4
表示这个 Box 的长度,
包含 Box 的 header
长度。
Box Header,整个包
含 Box header+Box
Data 的总长度。
Box type
4
固定值:”ftyp”的
ASCII 码,为该 Box
的标识。
Box Header,固定值
Major brand
4
主商标
MP4 这种格式基于
QuickTime,然后成为
Box Header:
Box Length:
十六进制:0x00 00 00 18
十进制:24
表示该 Box 长度为 24 字节
Box type:
十六进制:0x66 74 79 70
这就是”ftyp”的 ASCII 值,标识了该 Box 的类型
Box Data:
major brand:
十六进制:0x69 73 6F 6D
即 isom,说明本文件是符合这个规范的。
minor version:
十六进制:0x00 00 00 01
十进制:1
isom 的版本号,一般默认值是 1
compatible brand:
十六进制:0x69 73 6F 6D 61 76 63 31
ASCII 值为 iosmavc1 表示本文件可以兼容 iso\avc1 等协议和标准
Moov Box
简介:
Moov Box 这个 Box 也是 MP4 文件中必须有但是只存在一个的 Box,这个 Box 里面一般存的是
媒体文件的元数据,这个 Box 本身是很简单的,是一种 Container Box,里面的数据是子
Box,自己更像是一个分界标识。
所谓的媒体元数据主要包含类似 SPS PPS 的编解码参数信息,还有音视频的时间戳等信息。
对于 MP4 还有一个重要的采样表 stbl 信息,这里面定义了采样 Sample、Chunk、Track 的映
射关系,是 MP4 能够进行随机拖动和播放的关键,也是需要好好理解的部分,对于实现一些
音视频特殊操作很有帮助。
实例分析:
Box Header:
Box Length:
十六进制:0x00 01 A6 85
十进制:108165
表示该 Box 长度为 108165 字节
Box type:
十六进制:0x6D 6F 6F 76
这就是”moov”的 ASCII 值,标识了该 Box 的类型
Box Data:
十六进制:0x00 00 00 6C......
由于这个 Box 是 Container Box,里面还有好几层子 Box,所以暂时不分析,等把第一层分
析完再详细讲解这个 Box 内部。
Mdat Box
剩余69页未读,继续阅读
ShepherdYoung
- 粉丝: 31
- 资源: 337
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1