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

【音视频】MP4文件格式

1.MP4文件Box节点树

下图展示了 MP4 文件的整体骨架,即MP4文件Box节点树,其中每个盒子(Box)都是树上的一个节点。moov 无疑是这棵树的“大脑”和核心目录,它并不直接存储音视频数据,而是包含了如何找到和解读这些数据的所有元信息(Metadata)。
MP4文件Box节点树
Box有两种,一种是叶子Box,一种是容器Box。按照Box结构定义规范去解析就行。

2.核心节点详解与缩写还原

在 MP4 的节点树中,有些盒子名称是缩写。了解它们的全称能更好地理解其职能。

节点缩写节点全称核心职能与解读
ftypFile Type Box(文件类型盒子)它是文件的“身份证”,位于整个节点树的根目录下的第一个子节点。它声明了文件的兼容性标准,播放器首先读取它来判断是否能支持播放该文件。
moovMovie Box(影片盒子)它是整个文件的“总索引”或“大脑”,是一个容器节点。它包含了影片的全局信息以及所有轨道(Track)的元数据,但不包含实际的媒体数据
mvhdMovie Header Box(影片头盒子)作为 moov 节点的第一个子节点,它存储了全局信息,如整个影片的创建时间、时间刻度(timescale)、时长等。
trakTrack Box(轨道盒子)每个 trak 节点代表一条独立的媒体轨道(如视频轨、音频轨)。它是一个容器节点,内部有更细致的结构来描述这条轨道的所有信息。
tkhdTrack Header Box(轨道头盒子)位于 trak 节点内,描述单个轨道的头信息,如轨道的唯一ID、时长、视频宽度高度、音量等。
mdiaMedia Box(媒体盒子)位于 trak 节点内,是一个容器节点,包含了该轨道媒体信息的详细定义。
mdhdMedia Header Box(媒体头盒子)位于 mdia 节点内,包含该轨道媒体的头信息,如轨道的语言、时间刻度、时长等。
hdlrHandler Reference Box(处理器参考盒子)位于 mdia 节点内,声明了该轨道媒体的类型,例如是视频轨(vide)、音频轨(soun)还是提示轨(hint)。
minfMedia Information Box(媒体信息盒子)位于 mdia 节点内,是一个容器节点,包含了如何解释媒体数据的信息。
stblSample Table Box(样本表盒子)位于 minf 节点内,是最重要的索引节点。它像一个详细的“目录”,将时间戳映射到具体的媒体数据在文件中的存储位置。视频能否快速随机拖动(seek),关键就在于解析这个盒子。
stsdSample Description Box(样本描述盒子)位于 stbl 节点内,描述了媒体的编码格式(如 H.264, AAC)和解码所需的配置参数(如视频的宽高、编码等级)。
sttsTime-to-Sample Box(时间戳-样本映射盒子)位于 stbl 节点内,建立了样本序号与时间戳(解码顺序)的映射关系
stssSync Sample Box(同步样本盒子)位于 stbl 节点内,记录了所有关键帧(I帧)的列表。这是实现视频拖动功能的关键索引。
stscSample-to-Chunk Box(样本-块映射盒子)位于 stbl 节点内,定义了样本是如何分块(Chunk)存储的
stco/co64Chunk Offset Box(块偏移盒子)位于 stbl 节点内,记录了每个数据块(Chunk)在文件中的起始字节位置stco 用于32位偏移,co64 用于64位偏移(大文件)。
mdatMedia Data Box(媒体数据盒子)它是节点树中最庞大的“数据仓库”,直接位于根节点下。它存储了实际的、经过编码压缩的音视频帧数据(Sample)。它本身只是一个数据容器,需要依赖 moov 中的索引才能被正确解读。

3.用工具查看MP4视频文件

TODO:

4.MP4文件内的节点和数据是怎么写进去的

先生成独立的Box节点文件,然后最后遍历节点树,也就是把二维的树编码成一维的文件流,生成文件流就是把各个Box文件拼接进最终的MP4文件中,完成。

http://www.dtcms.com/a/577858.html

相关文章:

  • 旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
  • py day32 元组与os
  • 非接触式高效检测:基于XTOM蓝光3D扫描技术的3C电子零部件全尺寸快速测量方案
  • wordpress熊账号网站建立好如何做seo
  • 外贸网站怎样做推广南通网站定制哪家好
  • JSON转CSV批量转换工具:高效处理结构化数据
  • ubuntu 部署 gitlab docker服务
  • 使用VMware安装centos的详细流程(保姆级教程)
  • Xshell免密钥登录CentOS7教程
  • Linux基础开发工具----yum、vim和gcc/g++
  • FileRise 让文件管理变简单,搭配cpolar实现远程自由访问
  • 企业官网模板站上海网站推广服务
  • 3.5.6 高速缓冲存储器【2010统考真题】
  • 好用的网站系统wordpress+任务发布插件
  • 2025年应用统计与数学国际会议(ICASM 2025)
  • python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf
  • [Avoid-MPC] 基于双KD树模型预测控制的无地图避障飞行
  • 结构电池复合材料:定义、组成、优势与应用
  • 大学生旅游网站策划书巴中微信开发 做网站
  • 慈溪企业网站seo上海网页制作与网站设
  • 【AI学习-comfyUI学习-Controlnet线稿工作流-各个部分学习-第三步】
  • EPLAN电气设计:快捷键版本差异解析
  • Mac 下配置Charles踩坑之旅
  • 网站建设公司整站源码so域名的网站
  • Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证
  • 剧白白 v3.3.0 多影视源观影软件,看电影,电视剧,看综艺
  • 批处理的应用与价值
  • 海南网站制作多少钱网站建设公司哪个好呀
  • 福州网站建设公司哪家好宁波网站建设信息网
  • Gateway整合knife4报错404 (Not Found)