本篇介绍下MP4的封装格式。

1.MP4(MPEG-4)

MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播。

MP4由许多box组成,每个box包含不同的信息,这些box以树形结构的方式组成,box 当中可以包含 box。 如下所示,ftyp、free、mdat、moov等就是box,moov的子节点也是box。

2.box

mp4文件由若干个box组成。下面是box结构的一个示意图:

◆ box 由 header 和 body 组成, body包含多个box。

◆ box 由 header 和 body 组成,header 指明 box 的 size 和 type。size 是包含 box header 的整个 box 的大小。

◆ box type,通常是4个ASCII码的字符如“ftyp”、“moov”等,这些 box type都是已经预定义好的,表示固定的含义。如果是“uuid”,表示该box为用户自定义扩展类型,如果 box type 是未定义的,应该将其忽略。

◆ 如果 header 中的 size 为1,则表示 box 长度需要更多的bits位来描述,在后面会有一个 8bit 位的 largesize 用来描述 box 的长度。如果 size 为0,表示该 box 为文件的最后一个box,文件结尾(同样只存在于“mdat”类型的box中)。

◆ box 分为两种,Box 和 Fullbox。FullBox 是 Box 的扩展,Header 中增加了version 和 flags字段。

◆ box 定义如下:

aligned(8) class Box (unsigned int(32) boxtype,    optional unsigned int(8)[16] extended_type) {    unsigned int(32) size;    unsigned int(32) type = boxtype;    if (size==1) {        unsigned int(64) largesize;    } else if (size==0) {    // box extends to end of file    }    if (boxtype==‘uuid’) {        unsigned int(8)[16] usertype = extended_type;    }}

◆ FullBox 定义如下:

aligned(8) class FullBox(unsigned int(32) boxtype, unsigned int(8) v, bit(24) f)extends Box(boxtype) {    unsigned int(8) version = v;    bit(24) flags = f;}

3.ISO/ICE 14496-12

        下图包含ftyp、pdin、moov等box,moov box又包含mvhd、trak等box,trak box包含tkhd、tref等box。以此类推。。。

4.MP4分析工具:

◆ mp4box.js:https://gpac.github.io/mp4box.js

◆ bento4:http://www.bento4.com

◆ mp4info:https://www.greenxf.com/soft/179781.html

◆qtauomviewer:https://api.256file.com/download/378144_qtatomviewer.exe

视频封装格式篇--MP4相关推荐

  1. 音视频入门系列-视频封装格式篇(MP4)

    接上文,本篇介绍下MP4的封装格式. 1.MP4(MPEG-4) ◆ MP4是一套用于音频.视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的"动态图像专家组 ...

  2. 详解视频封装格式之MP4

    在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式.在上一篇文章(详解视频封装格式之FLV)中重点剖析了FLV格式.在这篇文章中,我们重点剖析一下MP4这种视频封装格式 ...

  3. OpenCV视频篇——视频文件格式--视频封装格式--视频编码格式区分

    目录 一.前言 二.视频文件格式(文件格式) 三.视频封装格式(视频格式) 1.AVI 2.QuickTime 3.高级流格式文件 4.RealVideo 5.NAVI 6.DivX 7.MPEG 四 ...

  4. 走进音视频的世界——视频封装格式

    音视频的时长怎么获取,音视频的封面怎么获取,音视频的格式怎么获取呢?这些信息都以特定格式存储在文件开头或者结尾,称为多媒体信息或者多媒体元数据.通用的封装格式由:文件标识头+多媒体信息+音视频(字幕) ...

  5. 音视频封装格式转换器(支持avi格式转换),基于FFmpeg4.1实现(音视频学习笔记二)

    之前参照雷霄骅博士的最简单的基于FFMPEG的封装格式转换器(无编解码)的博客和FFmpeg官网的example,实现一个简单的封装格式转换器.但是后来我发现我想从mp4格式转换成avi格式的时候会报 ...

  6. 详解视频封装格式之FLV

    在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式,在这篇文章中,我们重点剖析一下FLV这种视频封装格式的具体情况. 一.FLV 的总体结构 FLV 是一种非常常见的音 ...

  7. AVI音视频封装格式学习(三)——AVI 数据结构解析

    这里介绍AVI会使用到的数据结构,为了避免翻译引入歧义,决定该部分还是使用英文原文,如后续有时间再进行翻译. AVIMAINHEADER structure The AVIMAINHEADER str ...

  8. FFmpeg之视频封装格式、流媒体协议、视频编解码协议和传输流格式、时间戳和时间基、视频像素数据

    通用视频分析工具:Mediainfo.Elecard StreamEye(视频编码分析工具); 视频封装格式: ********************MP4****************** MP ...

  9. 音视频封装格式、编码格式

    音视频封装格式.编码格式 概述 常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid ...

  10. AVI音视频封装格式学习(二)——AVI RIFF文件参考

    AVI RIFF文件参考 AVI RIFF File Reference 微软AVI文件格式是与捕获,编辑和播放音视频流的应用程序一起使用的RIFF文件规范.通常,AVI文件包含多个不同类型的数据流. ...

最新文章

  1. python汉字编码错误_python解决汉字编码问题:Unicode Decode Error
  2. Windows 7等多系统的备份与恢复
  3. NVIDIA Jetson NX开发板在U盘挂载的时候出现:error mounting unknown filesystem type ‘exfat‘错误
  4. c语言调用dll实例 结构体传参,C# 调用Dll 传递字符串指针参(转)
  5. 用数据说话,Go 所有字符串拼接方式里哪种才是最稳定高效的?
  6. CentOS7 安装 Mysql 服务
  7. Asp.net使用JQuery实现评论的无刷新分页及分段延迟加载效果
  8. 图书管理系统【JavaWeb:部署开发环境、解决分类、图书、前台页面模块】
  9. modbus发送接收_自己编写MODBUS协议代码所踩过的坑
  10. 2017云栖大会门票转让_2018云栖大会门票价格及购买流程!附赠购买代金券
  11. linux脚本基础详解
  12. ssm-学子商城-项目第十一天
  13. visio设置网络拓扑图
  14. 26个最好免费下载电子书(Ebooks)的网站
  15. 数论 - 质数(素数)基础【 素数的判断 + 试除法分解质因数 + 求1-n之间的素数的三种筛法 】
  16. 很激励人的一首歌《逍遥叹》(ZT)
  17. 使用阿里的【字体图标】期望的效果
  18. kindle paperwhite 完美越狱,KPV / Koreader 安装
  19. 大数据的python基础_大数据量化之路之python基础
  20. ubuntu16.04录制4K屏软件使用备注

热门文章

  1. 飞鱼星路由器如何限制外网访问服务器网站,飞鱼星路由器怎么访问指定网站
  2. 微软商店打不开,错误代码0x80131500
  3. Java | 如何优化垃圾回收机制?
  4. python使用阿里云企业邮箱发送邮件
  5. 如何恢复被删短信_手机短信删除了怎么恢复?超级简单的两种方法
  6. MSDOS(MBR)和GPT磁盘分区表
  7. 配置Windows自带无线wifi热点
  8. Little Gyro and Sort(第二届中国计量大学ACM程序设计竞赛个人赛)
  9. oeasy教您玩转vim - 88 - # 自动命令autocmd
  10. 视频: 视频码率、分辨率、帧率、视频大小等