MP4文件格式解析-----个人总结

合集下载

主流MP4视频格式讲解与下载

主流MP4视频格式讲解与下载

主流MP4视频格式讲解与下载□RAIN 发表于2007-3-7 20:24:00推荐3GP 格式视频分辨率为:176 x 144. 3GP是一种3G流媒体视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是手机中常见的一种视频格式。

某些厂商直接将手机芯片应用到MP3当中,也将3GP格式引入了MP3行业,虽然目前采用手机芯片的MP3还很少,但这仍是一股不可忽视的力量,笔者相信它有着不容小觑的发展潜力。

MP4 格式视频分辨率为:320 x 240;如果您的手机可以播放3GP格式,就可以播放MP4格式,但是必须要您的手机支持:320 x 240的分辨率才可以播放本站的MP4格式视频,否则请下载3GP格式视频A VI 格式视频分辨率为:220 x 176;A VI,音频视频交错(Audio Video Interleaved)的英文缩写。

A VI这个由微软公司发表的视频格式在视频领域已经存在好几个年头了。

A VI格式调用方便、图像质量好,但缺点就是文件体积过于庞大。

分为:手机A VI格式和MP4专用A VI 格式;请下载符合你的手机或者MP4的A VI格式视频。

ASF 格式视频分辨率为:320 x 240;ASF (Advanced Streaming format高级流格式)。

ASF 是MICROSOFT 为了和现在的Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式。

ASF使用了MPEG4 的压缩算法,压缩率和图像的质量都很不错。

因为ASF 是以一个可以在网上即时观赏的视频“流”格式存在的,所以它的图像质量比VCD 差一点点并不出奇,但比同是视频“流”格式的RAM 格式要好。

如果要在电脑上播放ASF格式请下载安装播放器:/about/Mp4_Player.html*.RA/RM/RAM*.RM,Real Networks公司所制定的音频/视频压缩规范Real Media中的一种,Real Player 能做的就是利用Internet资源对这些符合Real Media技术规范的音频/视频进行实况转播。

什么是MP4的视频播放格式

什么是MP4的视频播放格式

什么是MP4的视频播放格式视频播放格式是指MP4播放器可以支持播放的视频文件格式。

MP4播放器和MP3播放器相比,最大的区别就是可以播放视频文件,也就是我们通常说的电影文件。

视频文件的格式有很多,MP4播放器支持MPEG4、AVI、DivX和XviD等格式视频文件中的一种或几种。

部分MP4会随机带有视频格式转换软件,可以将很多种视频格式转换成MP4播放器直接可以直接播放的格式。

MPEG4是以微软的MPEG4 v3标准为原型发展而来的。

它的视频部分采用MPEG4格式压缩,具有可与DVD媲美的高清晰画质;音频部分则以MP3格式进行高质量压缩;最后,由视频部分和音频部分组合成效果足以让我们耳目一新的AVI文件。

最让人赞叹的是,MPEG4的压缩比十分惊人:一张标准容量的CD-ROM光盘,就可以存放约80分钟逼近DVD(MPEG2)质量的高清晰度电影节目。

这就意味着,即使没有DVD驱动器,只通过普通光驱我们也一样可以欣赏精彩的高清晰度电影。

但是目前的MPEG4并不完美,虽然在普通画面方面它已可与DVD相比,但是,MPEG4毕竟是属于一种高压缩比的有损压缩算法,在表现影片中爆炸、快速运动等画面时,它的缺点就开始暴露出来了——轻微的马赛克和色彩斑驳等VCD里常见的问题在这里也开始上演,其图像质量还无法完全和DVD采用的MPEG-2技术相比。

但愿日后随着MPEG4的制作和播放软件进一步完善压缩和解压缩算法来逐步改进。

AVI格式如果你是一名游戏玩家,应该会注意到很多游戏的片首动画都是AVI格式的吧。

比如很多人喜欢玩的《仙剑奇侠传》,片首那段极富中国传统色彩(青山、绿水、白鹭)的动画就是采用的AVI格式。

AVI有一个专业的名字,叫做音频视频交错(Audio Video Interleaved)格式。

它的背景不可小看,它是由Microsoft公司开发的一种数字音频与视频文件格式,原先仅仅用于微软的视窗视频操作环境(VFW ,Microsoft Video for Windows),现在已被大多数操作系统直接支持。

MP4文件格式解析-----个人总结讲解

MP4文件格式解析-----个人总结讲解

目录1.引言 (1)2.MP4中一些概念详解 (1)3.MP4文件结构分析 (1)3.1box结构 (1)3.2MP4总体结构 (2)3.3Movie box(moov) (3)3.3.1Movie Header box(mvhd) (3)3.3.2Trak box (4)3.4Media box (6)3.4.1Media header box(mdhd) (6)3.4.2Hdlr box (7)3.4.3Minf box (7)3.5Sample Table Box(stbl) (8)3.5.1Sample Description Box(stsd) (8)3.5.2Time To Sample Box(stts) (8)3.5.3Sample Size Box(stsz) (8)3.5.4Sample To Chunk Box(stsc) (8)3.5.5Sync Sample Box(stss) (9)3.5.6Chunk Offset Box(stco) (9)MP4文件格式解析总结1.引言MP4是一种常见的多媒体容器格式,对应MPEG-4标准,这种容器格式非常全面开放,被认为可以在其中嵌入任何形式的数据,各种编码的视频、音频等都可以。

在MP4文件中,媒体的描述信息与媒体数据是分开的,并且媒体数据的组织也很自由,不一定要按照时间顺序排列。

同时,MP4也支持流媒体,MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的代表。

MP4格式的官方文件后缀名是“.mp4”,还有其他的以mp4为基础进行的扩展或者是缩水版本的格式。

2.MP4中一些概念详解MP4文件格式中,所有的内容存在一个称为movie的容器中。

一个movie可以由多个tracks组成。

每个track就是一个随时间变化的媒体序列,track里的每个时间单位是一个sample,它可以是一帧视频,或者一段连续的压缩音频。

sample按照时间顺序排列。

mp4

mp4

谢谢观看
MPEG-4标准构成
MPEG-4码流主要包括基本码流和系统流,基本码流包括音视频和场景描述的编码流表示,每个基本码流只包 含一种数据类型,并通过各自的解码器解码。系统流则指定了根据编码视听信息和相关场景描述信息产生交互方 式的方法,并描述其交互通信系统。
系统
图1MPEG-4系统把音视频对象及其组合复用成一个场景,提供与场景互相作用的工具,使用户具有交互能力。 MPEG-4的数据在3个层中进行传输,这3层分别是压缩层、同步层和传输层。其中,压缩层是执行媒体解码的系统 组件,接收从同步层传来的压缩数据,并完成解码操作。同步层负责各个压缩媒体的同步和缓冲,一方面接收来 自传输层的同步层数据包(SL),从流中提取同步数据,为以后的同步解码和基本流解码的合成做准备;另一方面, 实现压缩的数据流和同步信息封装层的同步数据包,并将它们传输到传输层。传输层完成各种传输协议的描述, 使用DMIF应用接口,通过接口定义数据流的传输接口,并定义信道建立和断开的信号。MPEG-4的系统终端模型如 图1所示。
mp4
文件格式
目录
01 分部
03 MPEG-4标准构成
02 MPEG-4的特点 04 应用
MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属 的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版 在1999年12月通过。MPEG-4格式的主要用途在于上流、光盘、语音发送(视频),以及电视广播。
MPEG-4包含了MPEG-1及MPEG-2的绝大部份功能及其他格式的长处,并加入及扩充对虚拟现实模型语言 (VRML, VirtualReality Modeling Language)的支持,面向对象的合成档案(包括音效,视讯及VRML对 象),以及数字版权管理(DRM)及其他互动功能。而MPEG-4比MPEG-2更先进的其中一个特点,就是不再使用宏 区块做影像分析,而是以影像上个体为变化记录,因此尽管影像变化速度很快、码率不足时,也不会出现由一系列的子标准组成,被称为部 (part)(有时也译为卷),包括以下的部分: 第一部分(ISO/IEC -1):系统:描述视讯和音频数据流的控制、同步以及混合方式(即混流 Multiplexing,简写为MUX)。 第二部分(ISO/IEC -2):视讯:定义了一个对各种视觉讯息(包括自然视讯、静止纹理、计算机合成图形 等等)的编译码器。(例如XviD编码就属于MPEG-4 Part2) 第三部分(ISO/IEC -3):音讯:定义了一个对各种音频讯号进行编码的编译码器的集合。包括高阶音频编 码(AdvancedAudio Coding,缩写为AAC)的若干变形和其他一些音频/语音编码工具。 第四部分(ISO/IEC -4):一致性:定义了对本标准其他的部分进行一致性测试的程序。 第五部分(ISO/IEC -5):参考软件:提供了用于演示功能和说明本标准其他部分功能的软件。 第六部分(ISO/IEC -6):多媒体传输整合框架(DMIF for Delivery Multimedia IntegrationFramework) 第七部分(ISO/IEC -7):优化的参考软件:提供了对实作进行优化的例子(这里的实作指的是第五部分)。 第八部分(ISO/IEC -8):在IP络上传输:定义了在IP络上传输MPEG-4内容的方式。

mp4格式原理

mp4格式原理

MP4是一种常见的视频文件格式,其工作原理是通过压缩和编码技术实现视频数据的存储和传输。

具体来说,MP4文件采用了一种名为MPEG-4(Moving Picture Experts Group-4)的压缩技术,它通过对视频数据进行压缩,使得视频文件能够更小、更易于存储和传输。

在MP4文件中,视频数据被编码为一系列的帧,每一帧都代表了视频中的一个瞬间。

这些帧被压缩后存储在文件中,以便于后续的播放和传输。

同时,MP4文件还包含了音频数据,这些音频数据与视频数据同步播放,使得视频更加生动有趣。

为了实现视频数据的压缩,MPEG-4采用了多种技术,包括空间预测、运动补偿、量化、编码等。

其中,空间预测和运动补偿是MPEG-4中最核心的技术。

空间预测是指通过对当前帧与其相邻帧进行比较,预测当前帧中哪些像素值会发生变化,从而减少需要编码的数据量。

而运动补偿则是通过预测当前帧与上一帧之间的运动矢量,来减少需要编码的数据量。

除了这些技术之外,MPEG-4还采用了分块编码的方式,将每一帧图像分割为多个小块,对每个小块进行独立的编码。

这种分块编码的方式使得MPEG-4能够更好地处理复杂的图像变化和运动。

总的来说,MP4格式的工作原理是通过采用多种压缩和编码技术,实现对视频数据的有效存储和传输。

这些技术使得MP4文件能够更小、更易于存储和传输,同时也保证了视频的播放质量和流畅度。

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

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

MP4⽂件格式的解析,以及MP4⽂件的分割算法MP4⽂件格式的解析,以及MP4⽂件的分割算法 mp4应该算是⼀种⽐较复杂的媒体格式了,起源于QuickTime。

以前研究的时候就花了⼀番的功夫,尤其是如何把它完美的融⼊到视频点播应⽤中,更是费尽了⼼思,主要问题是处理mp4⽂件庞⼤的“媒体头”。

当然,流媒体点播也可以采⽤flv格式来做,flv也可以封装H.264视频数据的,不过Adobe却不推荐这么做,⼈家说毕竟mp4才是H.264最佳的存储格式嘛。

这⼏天整理并重构了⼀下mp4⽂件的解析程序,融合了分解与合并的程序,以前是c语⾔写的,应⽤在linux上运⾏的服务器程序上,现在改成c++,⽅便我在其他项⽬中使⽤它,⾄于⽤不⽤移植⼀份c#的,暂时⽤不到,等有必要了再说吧。

这篇⽂章先简单介绍⼀下mp4⽂件的⼤体结构,以及它的分割算法,之后再写⽂章介绍如何把mp4完美应⽤在点播项⽬中。

⼀、MP4格式分析 MP4(MPEG-4 Part 14)是⼀种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准⽂件中定义的,属于MPEG-4的⼀部分,是“ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)”标准中所定义的媒体格式的⼀种实现,后者定义了⼀种通⽤的媒体⽂件结构标准。

MP4是⼀种描述较为全⾯的容器格式,被认为可以在其中嵌⼊任何形式的数据,各种编码的视频、⾳频等都不在话下,不过我们常见的⼤部分的MP4⽂件存放的AVC(H.264)或MPEG-4(Part 2)编码的视频和AAC编码的⾳频。

MP4格式的官⽅⽂件后缀名是“.mp4”,还有其他的以mp4为基础进⾏的扩展或者是缩⽔版本的格式,包括:M4V, 3GP, F4V等。

mp4是由⼀个个“box”组成的,⼤box中存放⼩box,⼀级嵌套⼀级来存放媒体信息。

box的基本结构是: 其中,size指明了整个box所占⽤的⼤⼩,包括header部分。

mp4文件格式详细解析

mp4文件格式详细解析

mp4⽂件格式详细解析⽬录1. 概述2. mp4⽂件基本信息3. 封装格式重要概念4. 重要box介绍5. 其他box介绍6. 实⽤技术7. 开源软件参考[1] ISO/IEC 14496-12:2015[2] wikipedia/MPEG-4[3] wikipedia/ISO base media file format[4] wikipedia/MPEG-4 Part 14[5] Tocy/多媒体⽂件格式之MP4[6] Phil Cluff/What's in the box_![7] /gpac/mp4box.js[8] tao/Android⾳视频系列:视频容器操作篇 -- mp4容器打包实现[9] LiaoJunXiong/使⽤gpac封装mp4[10] Jameson Steiner/Fun with Container Formats – Part 21. 概述mp4或称MPEG-4 Part 14,是⼀种多媒体容器格式,扩展名为.mp4。

历史[6]:2001年,apple的QuickTime格式,.qt和.mov的后缀名。

2001年,MPEG-4 Part1,把基于QuickTime的box布局的容器格式添加到了MPEG-4标准。

2004年,标准⽂档把编码和容器格式的说明分开。

MPEG-4 Part12,定义了容器格式通⽤的box结构,即ISO媒体⽂件格式(ISO base media file format, ISOBMFF)。

MPEG-4 Part14,基于Part12进⾏了细化,定义了⽤于存储MPEG-4内容的容器格式,即.mp4格式。

图1 MP4 File Format.png以下是各标准⽂档的链接:QuickTime:QuickTime/QTFFMPEG-4 Part12:ISO/IEC 14496-12:2015MPEG-4 Part14:ISO/IEC 14496-14:2018,官⽹上这部分是付费的。

MP4文件格式入门

MP4文件格式入门
Movie Header Atoms – MVHD
Movie header atom 定义了整个 movie 的特性,例如 time scale 和 duration,它的 atom 类型是'mvhd'。
字段 尺寸 类型 版本 标志 生成时间 修订时间 Time scale
长度(字节) 4 4 1 3 4 4 4
字段 尺寸 类型
长度(字节) 4 4
描述 这个 movie header atom 的字节数 moov
以下是实际的 sample_100kbit.mp4 的部分字节,可以看到结果是
主要包含四个子 atom,movie header atom(mvhd), 一个 audio track atom(trak), 一个 video track atom(trak)。
mp4 文件例子
Darwin Streaming Server 里面有一些很好的工具,可以帮助分析 mp4 文件格式。
但是如果可以自己逐字节的 parse 文件,可以更好的了解 mp4 文件格式。这里我就逐字节的分析文件结构。 文件例子是 DSS 里面包含的 sample_100kbit.mp4
Movie Atom - MOOV
The time value for the start time of the current selection.
The duration of the current selection in movie time scale units.
当前时间 下一个待添加 track 的 ID 值。0 不是一个有效的 ID 值。
Overview and Introduction
Core Concepts
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
1.引言 (1)
2.MP4中一些概念详解 (1)
3.MP4文件结构分析 (1)
3.1box结构 (1)
3.2MP4总体结构 (2)
3.3Movie box(moov) (3)
3.3.1Movie Header box(mvhd) (3)
3.3.2Trak box (4)
3.4Media box (5)
3.4.1Media header box(mdhd) (6)
3.4.2Hdlr box (6)
3.4.3Minf box (7)
3.5Sample Table Box(stbl) (7)
3.5.1Sample Description Box(stsd) (8)
3.5.2Time To Sample Box(stts) (8)
3.5.3Sample Size Box(stsz) (8)
3.5.4Sample To Chunk Box(stsc) (8)
3.5.5Sync Sample Box(stss) (8)
3.5.6Chunk Offset Box(stco) (8)
MP4文件格式解析总结
1.引言
MP4是一种常见的多媒体容器格式,对应MPEG-4标准,这种容器格式非常全面开放,被认为可以在其中嵌入任何形式的数据,各种编码的视频、音频等都可以。

在MP4文件中,媒体的描述信息与媒体数据是分开的,并且媒体数据的组织也很自由,不一定要按照时间顺序排列。

同时,MP4也支持流媒体,MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的代表。

MP4格式的官方文件后缀名是“.mp4”,还有其他的以mp4为基础进行的扩展或者是缩水版本的格式。

2.MP4中一些概念详解
MP4文件格式中,所有的内容存在一个称为movie的容器中。

一个movie 可以由多个tracks组成。

每个track就是一个随时间变化的媒体序列,track里的每个时间单位是一个sample,它可以是一帧视频,或者一段连续的压缩音频。

sample按照时间顺序排列。

其中一帧音频可以分解成多个音频sample,所以音频一般用sample作为单位,而不用帧。

MP4文件格式的定义里面,用sample表示一个时间帧或者数据单元。

几个连续的sample就构成了一个chunk。

3.MP4文件结构分析
3.1box结构
MP4由一个一个box组成,每个box由一个boxheader和boxdata组成,boxheader又分为3部分:
①4字节的size:表示这个box的大小
②4字节的type:表示这个box的类型
③8字节的largesize
如果整个box的大小超出了4字节能表示的最大值,那么size=1,同时,box 的大小就储存在largesize中。

3.2MP4总体结构
Mp4必须包含ftyp box、moov box、mdat box。

File type box(ftyp)用来储存文件类型的相关信息,Movie box(moov)用来储存媒体的信息,是一个container box, Media data box(mdat)用来储存媒体的具体数据
3.3Movie box(moov)
一个movie box包含一个mvhd box和若干个trak box,比如audio trakbox,vediotrak box。

3.3.1Movie Header box(mvhd)
3.3.2Trak box
Trak box必须包含一个tkhd box和一个media box,此外还有很多可选的box:
①Track Header box(tkhd):定义了一个track的特性,例如时间,空间和音量信息。

②media box:该box是一个包含一些track媒体数据信息box的container box。

3.4Media box
Media box主要包含media header box(mdhd)、hdlr box、minf box。

3.4.1Media header box(mdhd)
media header box(mdhd)定义了整个movie 的特性,例如time scale 和
3.4.2Hdlr box
Hdlr box解释了媒体的播放过程信息。

同时也指明了本trak类型,如:vedio、
3.4.3Minf box
存储了解释该track的媒体数据的handler-specific的信息。

media handler用这些信息将媒体时间映射到媒体数据,并进行处理。

minf包含一个header box,一个Data Information Box(dinf)和一个Sample Table Box(stbl):
①Header box定义颜色和图形模式信息
②dinf box解释如何定位媒体信息
③stblbox包含了关于track中sample所有时间和位置的信息,以及sample的编解码等信息。

利用这个表,可以解释sample的时序、类型、大小以及在各自存储容器中的位置。

3.5Sample Table Box(stbl)
Sample Table Box(stbl)包含:sample description box(stsd)、time to sample box (stts)、sample size box(stsz)、sample to chunk box(stsc)、chunk offset box(stco)、composition time to sample box(ctts)、sync sample box(stss)。

3.5.1Sample Description Box(stsd)
box header和version字段后会有一个entry count字段,根据entry的个数,每个entry会有type信息,如“vide”、“sund”等,根据type不同sample description 会提供不同的信息,例如对于video track,会有“VisualSampleEntry”类型信息,对于audio track会有“AudioSampleEntry”类型信息。

视频的编码类型、宽高、长度,音频的声道、采样等信息都会出现在这个box 中。

3.5.2Time To Sample Box(stts)
stts存储了sample的duration,描述了sample时序的映射方法,我们通过它可以找到任何时间的sample。

stts可以包含一个压缩的表来映射时间和sample序号,用其他的表来提供每个sample的长度和指针。

表中每个条目提供了在同一个时间偏移量里面连续的sample序号,以及samples的偏移量。

递增这些偏移量,就可以建立一个完整的time to sample表。

3.5.3Sample Size Box(stsz)
stsz定义了每个sample的大小,包含了媒体中全部sample的数目和一张给出每个sample大小的表。

这个box相对来说体积是比较大的。

3.5.4Sample To Chunk Box(stsc)
用chunk组织sample可以方便优化数据获取,一个thunk包含一个或多个sample。

stsc中用一个表描述了sample与chunk的映射关系,查看这张表就可以找到包含指定sample的thunk,从而找到这个sample。

3.5.5Sync Sample Box(stss)
stss确定media中的关键帧。

对于压缩媒体数据,关键帧是一系列压缩序列的开始帧,其解压缩时不依赖以前的帧,而后续帧的解压缩将依赖于这个关键帧。

stss 可以非常紧凑的标记媒体内的随机存取点,它包含一个sample序号表,表内的每一项严格按照sample的序号排列,说明了媒体中的哪一个sample是关键帧。

如果此表不存在,说明每一个sample都是一个关键帧,是一个随机存取点。

3.5.6Chunk Offset Box(stco)
stco定义了每个thunk在媒体流中的位置。

位置有两种可能,32位的和64位的,后者对非常大的电影很有用。

在一个表中只会有一种可能,这个位置是在整个文
件中的,而不是在任何box中的,这样做就可以直接在文件中找到媒体数据,而不用解释box。

需要注意的是一旦前面的box有了任何改变,这张表都要重新建立,因为位置信息已经改变了。

相关文档
最新文档