视频封装格式篇--MP4
本篇介绍下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相关推荐
- 音视频入门系列-视频封装格式篇(MP4)
接上文,本篇介绍下MP4的封装格式. 1.MP4(MPEG-4) ◆ MP4是一套用于音频.视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的"动态图像专家组 ...
- 详解视频封装格式之MP4
在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式.在上一篇文章(详解视频封装格式之FLV)中重点剖析了FLV格式.在这篇文章中,我们重点剖析一下MP4这种视频封装格式 ...
- OpenCV视频篇——视频文件格式--视频封装格式--视频编码格式区分
目录 一.前言 二.视频文件格式(文件格式) 三.视频封装格式(视频格式) 1.AVI 2.QuickTime 3.高级流格式文件 4.RealVideo 5.NAVI 6.DivX 7.MPEG 四 ...
- 走进音视频的世界——视频封装格式
音视频的时长怎么获取,音视频的封面怎么获取,音视频的格式怎么获取呢?这些信息都以特定格式存储在文件开头或者结尾,称为多媒体信息或者多媒体元数据.通用的封装格式由:文件标识头+多媒体信息+音视频(字幕) ...
- 音视频封装格式转换器(支持avi格式转换),基于FFmpeg4.1实现(音视频学习笔记二)
之前参照雷霄骅博士的最简单的基于FFMPEG的封装格式转换器(无编解码)的博客和FFmpeg官网的example,实现一个简单的封装格式转换器.但是后来我发现我想从mp4格式转换成avi格式的时候会报 ...
- 详解视频封装格式之FLV
在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式,在这篇文章中,我们重点剖析一下FLV这种视频封装格式的具体情况. 一.FLV 的总体结构 FLV 是一种非常常见的音 ...
- AVI音视频封装格式学习(三)——AVI 数据结构解析
这里介绍AVI会使用到的数据结构,为了避免翻译引入歧义,决定该部分还是使用英文原文,如后续有时间再进行翻译. AVIMAINHEADER structure The AVIMAINHEADER str ...
- FFmpeg之视频封装格式、流媒体协议、视频编解码协议和传输流格式、时间戳和时间基、视频像素数据
通用视频分析工具:Mediainfo.Elecard StreamEye(视频编码分析工具); 视频封装格式: ********************MP4****************** MP ...
- 音视频封装格式、编码格式
音视频封装格式.编码格式 概述 常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid ...
- AVI音视频封装格式学习(二)——AVI RIFF文件参考
AVI RIFF文件参考 AVI RIFF File Reference 微软AVI文件格式是与捕获,编辑和播放音视频流的应用程序一起使用的RIFF文件规范.通常,AVI文件包含多个不同类型的数据流. ...
最新文章
- python汉字编码错误_python解决汉字编码问题:Unicode Decode Error
- Windows 7等多系统的备份与恢复
- NVIDIA Jetson NX开发板在U盘挂载的时候出现:error mounting unknown filesystem type ‘exfat‘错误
- c语言调用dll实例 结构体传参,C# 调用Dll 传递字符串指针参(转)
- 用数据说话,Go 所有字符串拼接方式里哪种才是最稳定高效的?
- CentOS7 安装 Mysql 服务
- Asp.net使用JQuery实现评论的无刷新分页及分段延迟加载效果
- 图书管理系统【JavaWeb:部署开发环境、解决分类、图书、前台页面模块】
- modbus发送接收_自己编写MODBUS协议代码所踩过的坑
- 2017云栖大会门票转让_2018云栖大会门票价格及购买流程!附赠购买代金券
- linux脚本基础详解
- ssm-学子商城-项目第十一天
- visio设置网络拓扑图
- 26个最好免费下载电子书(Ebooks)的网站
- 数论 - 质数(素数)基础【 素数的判断 + 试除法分解质因数 + 求1-n之间的素数的三种筛法 】
- 很激励人的一首歌《逍遥叹》(ZT)
- 使用阿里的【字体图标】期望的效果
- kindle paperwhite 完美越狱,KPV / Koreader 安装
- 大数据的python基础_大数据量化之路之python基础
- ubuntu16.04录制4K屏软件使用备注