以一个长度为10秒的MP4为例,其结构可能如下:

type: ftyp,        size:       24
type: mdat,     size:  8884701
type: mdat,     size:   136125
type: moov,     size:     4656

1. ftyp

一个ftyp对文件的类型进行描述,指明其符合哪些格式。一般就是mp4格式了。符合本文档的媒体类型有很多种,box条目的种类也不同,所以需要brand与compatible_brands的来说明此文件内的box的种类。文档中定义了isom, avc1, iso2, mp71, iso3这些brand应有的格式,当解码器在读出其brand后,就知道该文件的格式了。

aligned(8) class FileTypeBox extends Box(‘ftyp’) {unsigned int(32) major_brand;unsigned int(32) minor_version;unsigned int(32) compatible_brands[]; // to end of the box
}

2. mdat

上例中有2个mdat,一个是视频内容、另一个音频内容。对于h264, aac编码的媒体来说,其视频mdat中内容是nal,对于音频来说,其内容为aac的一帧。mdat中的帧依次存放,每个帧的位置、时间、长度都由moov中的信息指定。可以看出,mdat是很好组建的,这种Box只含有数据。

aligned(8) class MediaDataBox extends Box(‘mdat’) {bit(8) data[];
}

3. moov

moov存放影片的所有信息,一个moov含有多个trak。通常对于一个片子来说,就是一个视频trak,一个音频trak。MP4文件的重点也在于此。

(1) trak / tkhd

对于视频trak,存宽、高信息;对于音频trak,存音量信息。并不是太重要,真正初始化解码器要靠 stsd中的信息。

(2) trak / mdia / hdlr

标明该trak是视频还是音频

(3) trak / mdia / minf / stbl

所有重要的表都在这里。其中,

- stsd: 编码器CODEC信息

- stsz: 用于sample的划分,通常一个sample可以对应于frame。

- stsc: 多个sample组成一个trunk,不过实际操作中可以让一个sample直接构成一个trunk

- stco: trunk在文件中的位置,用于定位。

- stts / ctts: 指定每个sample的PTS, DTS

(4) trak / edts / elst

把视频分为多段segment, 每个的起始时间和时长

MP4文件结构(2)相关推荐

  1. atitit.mp4 视频文件多媒体格式结构详解

    atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个"box"组成的,2 4. 典型简化mp43 5. Fragm ...

  2. mp4格式解析、分割

    2019独角兽企业重金招聘Python工程师标准>>> MP4文件格式的解析,以及MP4文件的分割算法 mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime.以前研究的时 ...

  3. MP4文件格式的解析,以及MP4文件的分割算法

    mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime.以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的"媒 ...

  4. MP4大文件虚拟HLS分片技术,避免服务器大量文件碎片

    MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片 本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议 ...

  5. mp4文件格式解析(一)

    原文地址:mp4文件格式解析(一)作者:可下人间 目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPE ...

  6. Android直播开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)

    Android直播开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer) (码字不易,转载请声明出处:http://blog.csdn.net/andrexp ...

  7. ffmpeg开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)

    ffmpeg开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer) (原文链接:http://blog.csdn.net/andrexpert/article ...

  8. mp4文件格式之fragment mp4

    目前网络上对mp4文件格式的总结已经相当多了,我就不在这里抄别人总结的东西了,想入门的话百度一下会有许多这方面的文章.这里介绍一下其他文章中很少涉及的一种mp4文件结构,即fragment mp4,也 ...

  9. 【音视频知识】MP4文件格式解析-详解

    目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPEG-4标准.而现在我们流行的叫法,多半是指能播放M ...

最新文章

  1. 灰度重心法原理与实现
  2. WCF(学习笔记)【参见WCF教程】
  3. vivado下创建基本时序周期约束
  4. uml 时序图_程序猿都应学习的语言:看 25 张图学 UML
  5. EXPRESS项目PM2启动NODE_ENV传参数不生效问题解决方法
  6. Sampled Softmax,你真的会用了吗?
  7. 快速排序中pivot的选取策略
  8. python手写lfw数据集转pair.txt形式
  9. 深度解析脑机接口技术的现状与未来!
  10. R语言与Python对比
  11. 亚马逊多账号注册怎么操作?多账号注册有哪些解决方案?
  12. 【媒体】黑灰产横行,金融行业如何“数智化”反欺诈?
  13. e4e反演框架:Designing an Encoder for StyleGAN Image Manipulation
  14. 继勒索病毒“永恒之蓝”445端口被封之后,在公网实现smb文件共享
  15. (IT男女如何逆袭)2014夏季国际色彩流行趋势赏析和服饰搭配技巧
  16. 全球台式计算机出货量,Gartner:2020年全球PC电脑出货量达到2.75亿台 同比增长4.8%...
  17. SLAM导航机器人零基础实战系列:(四)差分底盘设计——2.stm32主控软件设计
  18. zo 是什么 普及版 日后用到再看
  19. 汇金增持:救市还是抄底? FT中文网特约撰稿人 陈宁远
  20. R语言修改下载安装包install.package的默认存储位置

热门文章

  1. 浅谈Springcloud中的几个主流熔断器
  2. linux指令(一、目录与档案)
  3. while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directo
  4. 「GoTeam 招聘时间」星汉未来 Golang研发高级工程师
  5. 函数:无参无返回值函数的使用
  6. vue技术分享ppt_胡中南:Web端GIS技术新进展 | GTC专题论坛报告(视频+PPT+速记)
  7. 洛谷 P1195 口袋的天空 (题解+代码)
  8. 正式学习java五天
  9. 阅读笔记 - Horizon Zero Dawn 广袤世界中的玩家漫游
  10. 蓝桥杯 — 星系炸弹( 在X星系的广袤空间中漂浮着许多X星人造“炸弹”)