MP4文件结构(2)
以一个长度为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)相关推荐
- atitit.mp4 视频文件多媒体格式结构详解
atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个"box"组成的,2 4. 典型简化mp43 5. Fragm ...
- mp4格式解析、分割
2019独角兽企业重金招聘Python工程师标准>>> MP4文件格式的解析,以及MP4文件的分割算法 mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime.以前研究的时 ...
- MP4文件格式的解析,以及MP4文件的分割算法
mp4应该算是一种比较复杂的媒体格式了,起源于QuickTime.以前研究的时候就花了一番的功夫,尤其是如何把它完美的融入到视频点播应用中,更是费尽了心思,主要问题是处理mp4文件庞大的"媒 ...
- MP4大文件虚拟HLS分片技术,避免服务器大量文件碎片
MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片 本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议 ...
- mp4文件格式解析(一)
原文地址:mp4文件格式解析(一)作者:可下人间 目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPE ...
- Android直播开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)
Android直播开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer) (码字不易,转载请声明出处:http://blog.csdn.net/andrexp ...
- ffmpeg开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)
ffmpeg开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer) (原文链接:http://blog.csdn.net/andrexpert/article ...
- mp4文件格式之fragment mp4
目前网络上对mp4文件格式的总结已经相当多了,我就不在这里抄别人总结的东西了,想入门的话百度一下会有许多这方面的文章.这里介绍一下其他文章中很少涉及的一种mp4文件结构,即fragment mp4,也 ...
- 【音视频知识】MP4文件格式解析-详解
目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPEG-4标准.而现在我们流行的叫法,多半是指能播放M ...
最新文章
- Python超越Java,Rust持续称王!Stack Overflow 2019开发者报告
- python dataframe 计算上下两行的差值_用Python进行数据清洗!
- 生成器generator
- 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )
- p标签里面不能嵌套div
- 牛客 - 捡金币(思维+二维前缀和+构造)
- 如何找到Angular应用的某个directive是属于哪一个Angular module
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析【转】
- python软件设置代码字体的大小_Pycharm4.5设置字体大小以及背景颜色的方法
- 使用oracle sql profile固定执行计划
- webgl存本地文件_20万存款该怎么存?银行员工:这样存,每年利息近万元!
- idea 检测 重复代码_重复代码检测
- 函数极值最值凸性拐点渐近线总结
- dategurd oracle_Oracle Data Guard
- PCB生成BOM表、网络表添加logo并且输出为Gerber文件
- iphone se 一代 不完美越狱 14.6 视频壁纸教程(踩坑笔记)
- 微软巨资收购Skype 网络电话行业受关注
- java算法:兔子生兔子
- 淘宝短视频多模态融合识别
- Redis—列表(List)、集合(Set)、哈希(Hash)、有序集合 Zset