接上一篇文章:

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

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

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

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

https://glumes.com/player_book/

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

以下就是专栏的内容:

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

还是回到这张图:

重点看这里:

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

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

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

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

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

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

MP4 文件组成

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

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

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

MP4 中的 Box

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

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

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

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

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

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

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

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

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

MP4 中的 FullBox

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

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

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

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

MP4 中更多的 Box

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

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

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

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

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

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

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

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

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

推荐阅读:

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

OpenGL ES 学习资源分享

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

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

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

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

觉得不错,点个在看呗~

重学音视频?认识 MP4 视频(下)相关推荐

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

    还记得在公众号里面说过准备写一个播放器的教程: 星球专享 | 关于播放器的一次项目实践~~ 现在也已经陆陆续续写起来了,主要内容还是更新在 音视频开发进阶-知识星球 里面,现在加入星球还是优惠价,后面 ...

  2. 将.qsv格式视频转为.mp4视频

    进入到.qsv视频目录下,使用cmd进入命令行窗口 copy/B guizhou.qsv video.mp4 OK,大功告成

  3. 重学ES6 函数的扩展(下)

    尾调用优化 什么是尾调用 尾调用(Tail Call)是函数式变成的重要概念,本身很简单,就是指函数的最后一步,调用另一个函数. function f(x){return g(x) } // 函数最后 ...

  4. 教你一招轻松压缩MP4视频到最小

    有一种工作是经常要接触视频的,视频运营,每天要制作很多视频用来推广,视频完善好之后,就要往各个平台上发布,目前很多的视频平台对视频的要求还是很高的,有一个上传视频大小的限制,超过这个大小的视频无法正常 ...

  5. 《趣学音视频》这段“朋友圈模版视频”的扛鼎之作是如何诞生的

    大家好,这里是<趣学音视频>频道,我是 ucsheep 欢迎大家点赞.评论.关注.分享 长大,一个曾经憧憬,现在却感怀的事情 以上是一个"朋友圈视频模版"的扛鼎之作,整 ...

  6. avi文件怎么转成mp4视频,3种方法快速学

    avi文件怎么转成mp4视频?前面小编给大家讲了mov格式和webm格式,以及如何将mov和webm格式转换成mp4格式.今天小编给大家说一说另外一种视频格式,就是avi,AVI英文全称为Audio ...

  7. 如何将抖音快手短视频好看视频等任何直播平台视频转为MP4

    如何将抖音快手短视频好看视频等任何直播平台视频转为MP4 总是有些需求来自不停地技术革新之中,这不有个客户就问我怎样将好看视频的视频下载下来,大家都知道抖音.快手.好看等直播平台的短视频都是不能直接下 ...

  8. iPhone下mp4视频无法播放和部分手机只有声音没有画面

    概述 mp4视频在部分手机上加载失败.无法播放或有声音没画面的原因是:视频编码或声道数有问题,解决方案:视频转码. 遇到的问题 mp4视频在 iPhone XR (IOS 14.1) 上无法播放,一直 ...

  9. 下载m3u8视频及在Linux下将ts合并为mp4格式

    背景 在爬取视频时偶尔会遇见m3u8格式的视频链接,视频下载后为多个ts文件,下面分享如何下载m3u8格式视频以及在Linux下将ts文件合成mp4 文件. m3u8格式链接解析 url = xxxx ...

最新文章

  1. [Quiz]竞赛题目 Word Trace
  2. vscode pylint 错误_VScode中报Unable to import #x27;xxx#x27; pylint的解决方案
  3. 【FI 收付款条件】Payment Terms 收付款条件
  4. 大众EA211djs和css的区别,宣传上却说捷达VS5用的发动机是EA211,但这款车的参数配置栏发动机型号写的却是DJS,谁能为我解惑吗?(只有斯柯达的柯米克的发动机型号写得才是EA211)...
  5. 运行 YunYang1994/tensorflow-yolov3 所遇到的一些问题记录
  6. Walle 瓦力 web部署系统
  7. 主类网络号怎么算_一文了解网络文化经营许可证的审批范围
  8. pc控制iphone的软件_iPhone照片视频传输及HEIC照片转档
  9. Centos VIM 配置
  10. linux 可以ping 通 windows ,windows ping 不了 linux
  11. AlarmManager.setRepeating将不再准确
  12. 巴菲特对优质公司买卖
  13. 麒麟985和麒麟990有什么区别(手机常见问题)
  14. 虚拟信用卡最大的发行商有哪些?
  15. 2021年全球及中国集成电路销售及趋势分析
  16. 堆内存(7)——内存释放入口函数_lib_free
  17. Http和Https详解,以及get与post的区别
  18. 超有用的电脑配置知识!!以后买电脑就不会被忽悠啦!终身受用!
  19. 数据结构 - 图的遍历
  20. 新版H5盲盒商城系统源码(前端uniapp后端thinkphp)+详细安装教程+数据库

热门文章

  1. 用Python分析了近几年胡润排行榜,我酸了...
  2. Oracle LiveLabs实验:DB Security - Native Network Encryption (NNE)
  3. 电脑蓝屏并提示错误代码0x000000ed怎么办?
  4. Pencil有必要拥有吗?推荐好用的第三方电容笔
  5. kubernetes部署-Heapster(十)
  6. C# VS2013生成的exe文件修改图标
  7. 用Java程序生成文本的捷径
  8. 【bzoj3506】【CQOI2014】排序机械臂
  9. 字符串日期转时间戳的解决办法且时间戳[10,13]位区别
  10. MacOS小助手 for Mac(macOS常用命令行脚本工具)