新用户注册入口 老用户登录入口

[转载]重学音视频?认识 MP4 视频(下)

文章作者:转载 更新时间:2024-01-21 17:43:21 阅读数量:436
文章标签:MP4文件格式Box对象Data部分Size字段Type字段FullBox
本文摘要:本文详细介绍了MP4视频格式,指出其文件结构基于MPEG-4标准第12部分,即由一系列名为Box的对象组成,每个Box内含Header和Data。其中,Header包含关键的Size和Type字段,用于标识Box大小和类型。进一步阐述了FullBox作为Box子类,增添了version和flags字段。文章列举了MP4中多种重要Box类型,并强调学习应以官方文档为根本,后续将深入解析各类Box及查看工具的使用方法,同时推广了作者的知识星球,该平台专注于音视频领域专业问答和技术交流。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/zhying719/article/details/124464016。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

接上一篇文章:

重学音视频?认识 MP4 视频(上)

文章的提到的资料都放在知识星球了,后续的内容更新还是以星球为主,也会放出一些干货在公众号的,现在加入星球还是优惠价,后面干货越多,涨价的可能性就越大了。

一个关于音视频领域专业问答的小圈子!!

为了方便大家的检索,我把专栏内容放在网页上了,地址如下:

https://glumes.com/player_book/

如图所示,就能访问专栏啦。

e327cd64a92d4b3e5879c860b6614376.png

以下就是专栏的内容:

在前文介绍了 MP4 标准的缘由,现在要详细了解一下它的格式。

还是回到这张图:

5349961dd882d92a740b284f905e6aff.png

重点看这里:

第十四部分(ISO/IEC 14496-14):MPEG-4(即MP4)文件格式:定义基于第十二部分的用于存储MPEG-4内容的视频文档格式。

也就是说 MP4 文件格式是定义在 MPEG-4 第 12 部分基础之上的,而第 12 部分的内容描述如下:

第十二部分(ISO/IEC 14496-12):基于ISO的媒体文件格式:定义一个存储媒体内容的文件格式。

所以,要学习 MP4 文件格式,要先了解 第 12 部分的内容,关于 MPEG-4 第 12 部分的文档,我也同步放在知识星球里面了,有需要的可以去下载。

16637a8130bf91bbf1bda54e6ddee632.png

网上关于 MP4 文件格式的文章内容,基本都可以在第 12 部分中找到,可以说它才是学习知识的源头,当做教科书来学肯定没问题。

有官方文档的情况下,会尽量根据文档来学习,而不是盲目的参考网络博客,那样得到的知识体系太零散了。

MP4 文件组成

摘录一段官方文档的内容:

c954424ea835e039f1653c3769c16fbf.png

关于 MP4 文件格式,参照文档说明:文件是由一系列叫做 Box 的对象组成的,所有的数据都存储在 Box 中。

官方文档中把这些由对象结构组成的文件叫做 Object-structured File ,算是一个比较广义的概念,但我们就当做 MP4 格式好了,狭义地理解一下,并且这种文件格式必须要包含 File Type 类型的 Box 。

MP4 中的 Box

MP4 中的 Box 有很多类型,每个类型中的 Box 代表的含义还不相同,但他们的基础结构还是相同的,继续往下看文档:

f4900d9c3734b38cd93fa8322e951bc8.png

每个 Box 是由 Header 和 Data 两部分组成的,Header 中包含了很多标识信息,而 Data 可以是纯数据也可以是其他的子 Box

参照文档内容,Header 中包含了 Box 的大小 Size 和类型 Type

关于 Size 的说明,参考文档:

0ed145065d4288c0a850eb8c38f40414.png

size 字段包含了 Box 和子 Box 的大小,如果 size 为 1 ,说明实际的大小在 largesize 字段中,如果 size 为 0 ,说明这是文件最后一个 Box 了。

关于 Type 的说明,参考文档:

93cf68f6cadff188cbc4626ebc9016e3.png

type 字段表示该 Box 的类型,标准的 Box 类型都是用四个字母来表示的,如果是用户自定义的类型,就用 uuid 来表示。

另外,要强调一下 Box 的字节序是网络字节序,也就是大端序,关于 Box 结构的伪代码文档中也给出了:

9850fcf7e7982df5be95e135f9124135.png

根据伪代码再看 Box 的结构定义就一目了然了。

MP4 中的 FullBox

Box 可以说是所有 Box 类型的基类,接下来要了解它的第一个子类 FullBox 。

80e4b3d118dd9f086776038629f69f72.png

FullBox 在 Box 的基础上多了 version 和 flags 字段。

其中 version 字段表示 Box 的版本,flags 字段是标志位。

如果 Box 遇到了无法识别的 version 或者 type 字段,就应该跳过或者忽略。

MP4 中更多的 Box

MP4 中还有很多类型的 Box ,其实有些 Box 相当重要,甚至面试中还会经常问到,下面从文档中给大家摘录一下所有的 Box 类型。

2dad9777bc98519a65f529ea319139ed.png 0aad6a44a213c895221cad438579fecb.png

这些内容在文档中都有,自行下载了,网络的一些资料可能还没有文档全面呢。

后面我们也会继续讲解这些 Box 类型的,以及使用工具来查看 Box 信息,这节就先到这里啦!!!

众所周知,开通了知识星球,邀请了一些在头条、快手等知名IT企业从事过音视频研发的朋友们做专业咨询,涉及的范围比较广,包括 Android/iOS 开发、Camera 开发、视频编辑、在线直播、WebRTC、播放器、OpenGL、C++ 等等,基本上涵盖了音视频工程领域的绝大部分内容。

关于音视频入门如何学习,学习了 FFmpeg 之后又该怎么办,跳槽选择哪个方向比较好,程序员职业软技能等等之类的问题,更是会以行业一线开发人员的角度帮你认真分析,出谋划策。

力求做到有问必答。在知识范围内,认真地对待每一个提问,不一定所有的问题都能答案,但每一个答案都是详细思考过的。

更多开发资料、博客源码、文档教程都会在星球内给出,白菜价即可加入,iOS 用户可以加我微信 ezglumes 拉你进去!!!

bb4b7f3c158c8286eaab5713f01082d8.png

1053f89b3311fc3a6387b26699dcaf58.png

一个音视频领域专业问答的小圈子!

加我微信 ezglumes 拉你入技术交流群

推荐阅读:

音视频开发工作经验分享 || 视频版

OpenGL ES 学习资源分享

开通专辑 | 细数那些年写过的技术文章专辑

Android NDK 免费视频在线学习!!!

你想要的音视频开发资料库来了

推荐几个堪称教科书级别的 Android 音视频入门项目

觉得不错,点个在看呗~

6c4fd9558daa71aafc1fee04932f6da7.gif

本篇文章为转载内容。原文链接:https://blog.csdn.net/zhying719/article/details/124464016。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
MPEG-4 第十二部分(ISO/IEC 14496-12)这是国际标准化组织(ISO)和国际电工委员会(IEC)联合制定的一份官方文档标准,详细描述了一种基于ISO的通用媒体文件格式,它定义了存储音频、视频和其他多媒体内容的标准方法。在文章中提到,MP4文件格式是构建于MPEG-4第12部分的基础之上。
Box在MP4文件格式中,“Box”是一个核心概念,它是文件结构的基本组成单元。每个“Box”都包含一个Header和Data两部分,Header包含了该Box的大小Size和类型Type等关键信息,而Data部分则可以是实际的数据内容或者其他的子Box。通过一系列不同类型的Box,MP4文件能够组织和封装各种音视频数据以及相关的元数据。
FullBox作为MP4文件中Box的一个子类,FullBox在基础的Box结构上额外添加了version和flags两个字段。其中,version字段用来表示当前Box所遵循的版本信息;而flags字段是一组标志位,用于标识特定的属性或状态。当解析器遇到未知的version或type时,可以根据这些附加信息来决定如何处理该Box的内容。FullBox的引入为MP4文件提供了更灵活的扩展性和兼容性。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在深入理解了MP4文件格式的内在结构和组成原理后,我们不难发现音视频技术领域日新月异的发展步伐。近日,随着AV1编码标准的广泛应用以及VVC(H.266)标准的正式发布,视频压缩效率和质量得到了前所未有的提升,这对MP4等容器格式提出了新的挑战与机遇。
例如,Mozilla与多家科技巨头共同推出的开放源代码AV1编码格式,其卓越的压缩性能和对互联网传输的高度适应性,使得MP4容器在封装AV1内容时需要对其原有结构进行优化调整以满足高效存储和流式传输的需求。同时,国际电信联盟ITU最新批准的VVC标准,在保证画质的前提下,相较于HEVC实现了50%的码率节省,这也意味着MP4作为主流容器格式必须紧跟时代步伐,实现对新编码标准的兼容和支持。
此外,随着5G、AR/VR技术的快速发展,对音视频内容的实时性和交互性需求不断提升,如何在MP4等传统容器中融入更多元化的元数据信息,支持更丰富的媒体功能,成为当前研究的重要课题。例如,360度全景视频、空间音频等新型媒体格式的普及,要求MP4容器在设计上不断创新和完善,为用户提供更为沉浸式的视听体验。
综上所述,在学习和掌握MP4文件格式的基础上,进一步关注和了解行业内的前沿技术和标准动态,对于音视频工程师和技术爱好者来说至关重要。通过持续跟进并探索如AV1、VVC编码技术与MP4容器格式的深度结合,以及新型媒体格式在MP4中的应用实践,将有助于推动音视频技术的不断发展与进步。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
nc host port - 连接到远程主机的指定端口发送或接收数据。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
HessianRPC在高负载下服务降级与熔断器模式保障用户体验 05-01 jQuery和TweenMax简单实用的水平手风琴特效 01-20 jquery选择国家下拉列表框插件 01-21 Sqoop在Hadoop集群中的数据传输机制及数据库迁移、收集与备份恢复应用实践 12-23 简约渔具批发牧渔企业类网站前端模板下载 11-09 基于bootstrap功能齐全的jQuery进度条插件 10-20 简约大气男性护肤产品HTML5网站模板 09-22 宽屏大气机械设备制造公司网站模板 08-13 演讲会门票销售网站模板下载 07-30 本次刷新还10个文章未展示,点击 更多查看。
经典响应式投资理财企业前端模板 06-26 基于Redis的键值对存储实现用户阅读状态跟踪与管理 06-24 Netty框架中CannotFindServerSelection异常:服务器地址配置错误与通道类型匹配详解 06-18 简洁设计公司响应式网站模板下载 05-06 绿色苗木草坪种植绿化类企业前端CMS模板下载 04-30 怎么在cmd开启mysql服务 04-15 保洁公司家庭保洁服务网站模板 03-26 SpringCloud微服务中分布式锁的死锁问题与状态一致性维护:避免循环依赖、公平锁及超时重试机制在Redisson中的实践运用 03-19 HBase性能测试与RegionServer配置、架构及数据模型调优实践:关注响应时间、并发处理能力与BlockCache优化 03-14 jquery控制radio触发事件 02-15 简约HTML5软件营销业务公司网站模板 02-09
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"