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按照时间顺序排列。

其中一帧音频可以分解成多个音频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 trak box,vedio trak 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。

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

3.4.1Media header box(mdhd)
media header box(mdhd)定义了整个movie 的特性,例如time scale 和duratio,
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解释如何定位媒体信息
③stbl box包含了关于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有了任何改变,这张表都要重新建立,因为位置信息已经改变了。

合集下载

mp4可高考知识点

mp4可高考知识点

mp4可高考知识点随着科技的不断进步,人们的生活受益于各种新的技术产品。

其中,MP4作为一种多媒体设备,成为人们生活中不可或缺的一部分。

在高考中,了解MP4的相关知识点不仅仅是对科技的了解,还有可能涉及到题目考点的答题。

一、什么是MP4?MP4是Moving Picture Experts Group(MPEG)提出的一种多媒体格式标准,该格式可同时存储音频、视频和字幕等多种媒体数据。

MP4的文件扩展名为.mp4,可通过电脑、手机等设备播放。

二、MP4的特点1. 多格式支持:MP4可以支持多种音频、视频和字幕格式,如AAC、MP3、H.264等,使得用户可以在MP4设备上播放各种不同格式的媒体文件。

2. 多设备兼容:MP4文件可以在多种设备上进行播放,包括电脑、手机、平板等。

这意味着用户可以随时随地享受媒体内容。

3. 小巧便携:MP4设备通常非常小巧轻便,方便携带。

用户可以将喜欢的音乐、视频等媒体文件放入MP4设备,随时欣赏。

4. 高效压缩:由于MP4格式采用了一些高效的压缩算法,使得文件大小大大减小,不仅方便存储,还能减少网络传输的带宽占用。

三、MP4在高考中的应用1. 高考题目解析:在某些高考题目中,可能会涉及到MP4相关的知识点,要求考生对MP4的特点、使用场景等进行分析。

了解MP4的相关知识,可以更好地理解和回答这类问题。

2. 影视作品分析:高考语文、英语等科目中,可能会涉及到对影视作品的分析和评论。

而MP4作为一种主流的媒体播放格式,了解MP4的特点可以帮助学生更好地理解和解读影视作品。

3. 媒体素材创作:在艺术类科目的高考考试中,学生可能需要进行媒体素材的创作,如音乐、视频等。

而MP4作为一种常见的媒体文件格式,学生可以使用MP4设备进行素材的录制、剪辑和处理。

四、MP4在学习中的应用1. 学习资料存储:学生可以将课堂录音、讲座视频等学习资料转换为MP4格式并存储在MP4设备上,方便随时复习和借阅。

mp4格式详解

mp4格式详解

2.从播放角度,目前网络上可以获取的MPEG-4影音文件,如果你要播放的话,需要先安装其相应的解码器。
==============================================
看完这篇文章,我们可以知道如下知识:
1.我们平常见到的影像格式如微软的ASF、WMV,还有AVI(不是早期的AVI,这种你用微软的WMP6.0以前可以直接播放,不需要重新下载解码器)??主要采用divX、Xvid编解码,而文件名还是用AVI。这些实际都属于MPEG-ቤተ መጻሕፍቲ ባይዱ的范畴。
2.视频:基于H.261和JPEG。
3.音频:基于MUSICAM技术。
MPEG-2:应用在 DVD 的制作(压缩)方面,同时在一些 HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当的应用面。
目标:
--------------------------------------------------------
Main 720 x 480 10 M 15 studio TV
High 1440 1440 x 1152 47 M 60 consumer HDTV
High 1920 x 1080 63 M 80 film production
---------------------------------------------------------
1998年微软开发了第一个在PC上使用的MPEG-4编码器,它包括MS MPEG4V1、MS MPEG4V2、MS MPEG4V3的系列编码内码,其中V1和V2用来制作AVI文件,一直到现在它都是作为Windows的默认组件,不过V1和V2的编码质量不是很好,一直到MS MPEG4V3才开始有好转,画质有了显著的进步,但是不知微软出何居心,却将这个MS MPEGV3的视频编码内核封闭,仅仅使其应用于Windows Media流媒体技术上,也就是我们熟悉的ASF流媒体文件中,ASF文件虽然有一些优势,但是由于过分的封闭不能被编辑,末得到广泛的应用,这便惹怒了那些个不怕天不怕地的视频黑客和致力于钻研视频编码的高手,后来,这些小组不仅破解了微软的视频编码,而且经过他们的修改,一种新的视频编码诞生了:那就是广为流传的MPEG编码器-DivX3.11。

什么是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格式的九年级知识点

mp4格式的九年级知识点随着科技的发展,我们生活中使用的多媒体设备越来越多,其中MP4是我们经常使用的一种格式。

它在手机、平板电脑、电视等设备上播放视频和音乐非常方便。

今天,我们就来了解一下MP4格式的九年级知识点。

一、MP4格式的基本概念MP4,全称为Moving Picture Experts Group-4,是一种数字多媒体容器格式,由MPEG(Moving Picture Experts Group)标准化组织开发。

MP4格式可以存储视频、音频、字幕等多种媒体信息,并且可以适应不同的网络传输速度。

二、MP4格式的特点1. 高度压缩:MP4格式可以将视频文件进行高度压缩,减小文件大小,方便存储和传输。

2. 跨平台兼容:MP4格式能够在多种设备上播放,包括手机、电脑、平板电视等,具有良好的跨平台兼容性。

3. 多媒体容器:MP4格式不仅可以存储视频文件,还可以存储音频、字幕等多种媒体信息,提供了更多的应用场景。

4. 高质量音视频:MP4格式支持高清视频和高音质音频的存储和播放,提供更好的视听效果。

三、MP4格式的编码方式1. 视频编码方式:MP4格式支持多种视频编码方式,常见的有H.264(或称为AVC)、H.265(或称为HEVC)等。

H.264是一种常用的视频编码标准,具有较高的压缩比和良好的视觉质量,被广泛应用在MP4格式的视频存储和传输中。

2. 音频编码方式:MP4格式支持多种音频编码方式,常见的有AAC、MP3等。

AAC是一种广泛用于音频压缩的编码标准,具有较高的音频质量和较小的文件大小,被广泛应用在MP4格式的音频存储和传输中。

四、MP4格式的应用领域1. 视频网站:MP4格式是视频网站常用的视频存储格式,具有较小的文件大小和较好的视觉质量,方便用户在线观看和下载。

2. 移动设备:MP4格式在手机、平板电脑等移动设备上广泛应用,用户可以随时随地享受高质量的视频和音乐。

3. 影视制作:MP4格式在影视制作过程中常用于存储和传输视频素材,方便后期剪辑和处理。

mp4文件格式解析

mp4文件格式解析

mp4文件格式解析目前MP4的概念被炒得很火,也很乱。

最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准。

随后MP4概念被转移到视频上,对应的是MPEG-4标准。

而现在我们流行的叫法,多半是指能播放MPEG-4标准编码格式视频的播放器。

但是这篇文章介绍的内容跟上面这些都无关,我们要讨论的是MP4文件封装格式,对应的标准为ISO/IEC 14496-12,即信息技术视听对象编码的第12部分:ISO 基本媒体文件格式(Information technology Coding of audio-visual objects Part 12: ISO base media file format)。

ISO/IEC组织指定的标准一般用数字表示,ISO/IEC 14496即MPEG-4标准。

MP4视频文件封装格式是基于QuickTime容器格式定义的,因此参考QuickTime的格式定义对理解MP4文件格式很有帮助。

MP4文件格式是一个十分开放的容器,几乎可以用来描述所有的媒体结构,MP4文件中的媒体描述与媒体数据是分开的,并且媒体数据的组织也很自由,不一定要按照时间顺序排列,甚至媒体数据可以直接引用其他文件。

同时,MP4也支持流媒体。

MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的代表。

现在我们就来看看MP4文件格式到底是什么样的。

1、概述MP4文件中的所有数据都装在box(QuickTime中为atom)中,也就是说MP4文件由若干个box组成,每个box有类型和长度,可以将box理解为一个数据对象块。

box中可以包含另一个box,这种box称为container box。

一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息;之后会有且只有一个“moov”类型的box(Movie Box),它是一种container box,子box包含了媒体的metadata信息;MP4文件的媒体数据包含在“mdat”类型的box(Midia Data Box)中,该类型的box也是container box,可以有多个,也可以没有(当媒体数据全部引用其他文件时),媒体数据的结构由metadata进行描述。

mp4文件格式分析【优质】

mp4文件格式分析【优质】

十六进制码流分析:ftyp Box00 00 00 1C: size ,28,表示此BOX有28个字节,表示长度的四个字节也计算在内。

以下同66 74 79 70:type,表示BOX TYPE,此处为ftyp6D 70 34 32: 可能是兼容的格式信息,/////mp4200 00 00 00:可能是插入的空字节,/////也可能是version ,flags6D 70 34 32: 可能是兼容的格式信息,mp42/////major-brand6D 70 34 31: 可能是兼容的格式信息,mp41///// minor-version69 73 6F 6D: isom, ftyp中的最后一个标识,compatible-brands[]; // to end of the boxThe brand ‘mp41’ is defined as identifying version 1 of this specification (ISO/IEC 14496-1:2001), and the brand ‘mp42’ identifies this version of the specification; at least one of these brands shall appear in the compatible-brands list in the file-type box, in all files conforming to this specification.moov Box00 03 B0 59: size of moov.241753个字节6D 6F 6F 76: moovmvhd Box00 00 00 6C: size,mvhd Box的大小为108个字节6D 76 68 64: mvhd00 00 00 00:version,flagsBE EE 87 C5: creation-time创建文件的时间,是距离1904年1月1日0点的秒数BE EE 87 C5: modifiation-time修改文件的时间,00 01 5F 90: timescale时标,时间刻度的单位,为1/90 000秒01 A8 61 B8: duration持续时间00 01 00 00:rate播放描述的等级01 00: volume播放时的音量00 00: 保留的16bits的000 00 00 00:保留的32bits的000 00 00 00:保留的32bits的000 01 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 01 00 00 00 00 00 00 00 00 00 00 00 00 00 0040 00 00 00 : matrix给视频提供的转换矩阵00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00:6个32bits的pre-defined 的000 01 00 CA: next-track-ID下一个轨迹IDiods Box00 00 00 21:size of iods,33个字节69 6F 64 73: iods, Initial Object Descriptor00 00 00 00:version,flags10 13 00 4F: 可能是OD, Object DescriptorFF FF 0F FE:FF 0E 04 00:00 00 01 0E:04 00 00 00:02udta Box00 00 06 8F: size of udta ,167975 64 74 61:udta,uuid Box00 00 04 A9: size of uuid,119375 75 69 64:uuidF7 8C AA 0C 36 BE 4C E9 88 D2 03 C2 56 DA BE B2 : 由于boxtype = uuid而定义的16个字节的usertype EES-3-0-410VEAEAudioEncoder-2-1-11V bitRate=2000000bpsV keyFrame Period In Ms=10000V number of Pass=2V progressive Interlaced=0V rateControlMode=cbrV smoothVsSharp=0V sourceNature=naturalV useBFrame =false.此处表明本码流没有使用B帧V videoEncoderType=mpeg4V advVideo EncoderType=mpeg4V allow BitRateUnderflow=falseV change Rgb Y uv Conversion=falseV setCustomBitmapSize=falseV useCustomPixedAspectRatio=falseV useExpertFeaturesASP=falseV useMotionFiltering=falseV useVideoPacket=falseV vbvSizeInMs=1000V burnLogo=falseV changeframerate=falseV useColorAdjustment=falseV useCropFilter=falseV useScaleFilter=falseV useSpatialFilter=falseV useTimecodes=falseA audioEncoderType=aacA bitRate=64000bpsA useAutomatic Bandwidth=trueA useMS=trueA balanceLeftRight=0A volumeInDB=0starttime=0stoptime=9223372036854775807,MTUSize=1448exportType=mp4hinted=trueprogressiveDownload=trueallowDebugInformationInStream=trueavoidQuickTime6Warnings=falseforceETV15compatibility=falseforcePlayerCompatibility=falsemultiThreadedOptimization=0openA VIWith=DirectShowpreviewOnOff=1previewlayout=0showEncodingStatistics=true.......................hnti Box00 00 01 DE:size of hnti,47868 6E 74 69:hntirtp Box00 00 01 D6:size of rtp,47072 74 70 20:rtp73 64 70 20:sdpa=mpeg4-iod:”data:application/mpeg4-iod;base64 ................................trak Box00 00 01 A4: size of trak,42074 72 61 6B: traktkhd Box00 00 00 5C: size of tkhd,9274 6B 68 64: tkhd, track head box00 00 00 01:00,version; 00 00 01,track enable flagsBE EE 87 C5: creation-time创建文件的时间BE EE 87 C5: modifiation-time修改文件的时间,两个时间应该相同00 00 00 01:track-ID00 00 00 00:保留的32bits的001 A8 5E 16: duration持续的时间00 00 00 00 00 00 00 00:保留的2个32bits的000 00:layer 000 00:pre-defined 000 00:volume,as non audio,if audio ,0x010000 00:reserved 000 01 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 01 00 00 00 00 00 0000 00 00 00 00 00 00 00 40 00 00 00 :matrix00 00 00 00:width,if track_is_visual 0x01400000 else 000 00 00 00:height,if track_is_visual 0x00F00000 else 0mdia Box00 00 01 28:size of mdia,2966D 64 69 61: mdiamdhd Box00 00 00 20:size of mdhd ,326D 64 68 64: mdhd00 00 00 00:versionBE EE 87 C5: creation-timeBE EE 87 C5: modification-time00 00 03 E8: timescale00 04 B7 17: duration0 :pad10101 01110 00100: 3个5bits的language00 00 :pre-defined 0hdlr Box00 00 00 21:size of hdlr,3368 64 6C 72: hdlr00 00 00 00:version00 00 00 00:pre-defined 06F 64 73 6D:odsm,handler-type. ObjectDescriptorStream 00 00 00 00 00 00 00 00 00 00 00 00 : 3个reserved 00 :string nameminf Box00 00 00 DF: size of minf,2236D 69 6E 66: minfnmhd Box00 00 00 0C: size of nmhd,126E 6D 68 64: nmhd00 00 00 00:versiondinf Box00 00 00 24:size of dinf,3664 69 6E 66: dinfdref Box00 00 00 1C: size of dref,2864 72 65 66:dref00 00 00 00:version00 00 00 01:entry-counturl Box00 00 00 0C: size of url ,1275 72 6C 20: url00 00 00 01:locationstbl Box00 00 00 A7: size of stbl,16773 74 62 6C: stblstsd Box00 00 00 43:size of stsd,6773 74 73 64:stsd00 00 00 00:version,flags00 00 00 01:entry-countmp4s Box00 00 00 33:size of mp4s, 516D 70 34 73: mp4s00 00 00 00:version00 00 00 01:ESesds Box00 00 00 23:size of esds,3565 73 64 73:esds00 00 00 00:version03 15 00 00:00 04 0D 01:05 00 00 C8:00 00 00 00:00 00 00 00:06 01 02:stts Box00 00 00 18:size of stts,2473 74 74 73:stts00 00 00 00:version00 00 00 01:entry-count00 00 00 01:sample-count00 04 B7 17: sample-deltastsc Box00 00 00 1C: size of stsc ,2873 74 73 63:stsc00 00 00 00:version00 00 00 01:entry-count00 00 00 01:first-chunk00 00 00 01:samples-per-chunk00 00 00 01:sample-description-indexstsz Box00 00 00 14:size of stsz,2073 74 73 7A: stsz00 00 00 00:version00 00 00 12:sample-size00 00 00 01:sample-countstco Box00 00 00 14:size of stco,2073 74 63 6F: stco00 00 00 00:version00 00 00 01:entry-count00 03 B0 7D: chunk-offsettref Box00 00 00 18:size of tref,2474 72 65 66:trefmpod Box00 00 00 10:size of mpod,166D 70 6F 64: mpod00 00 00 C9:00 00 00 65:trak Box00 00 01 91: size of trak,40174 72 61 6B: traktkhd Box00 00 00 5C: size of tkhd,9274 6B 68 64: tkhd00 00 00 01:00,version; 00 00 01,track enable flagsBE EE 87 C5: creation-time创建文件的时间BE EE 87 C5: modifiation-time修改文件的时间,两个时间应该相同00 00 00 02:track-ID00 00 00 00:保留的32bits的001 A8 5E 16: duration持续的时间00 00 00 00 00 00 00 00:保留的2个32bits的000 00:layer 000 00:pre-defined 000 00:volume,as non audio,if audio ,0x010000 00:reserved 000 01 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 01 00 00 00 00 00 0000 00 00 00 00 00 00 00 40 00 00 00 :matrix00 00 00 00:width,if track_is_visual 0x01400000 else 000 00 00 00:height,if track_is_visual 0x00F00000 else 0mdia Box00 00 01 2D:size of mdia,3016D 64 69 61:mdiamdhd Box00 00 00 20:326D 64 68 64:mdhd00 00 00 00 :version,flagsBE EE 87 C5: creation-time创建文件的时间BE EE 87C5: modifiation-time修改文件的时间,两个时间应该相同00 00 03 E8: timescale时标00 04 B7 17: duration持续的时间55 C4:pad, 3个5bits的language00 00: pre-defined 0hdlr Box00 00 00 21:size of hdlr ,3368 64 6C 72: hdlr00 00 00 00:version00 00 00 00:pre-defined 073 64 73 6D: sdsm,handler-type, SceneDescriptionStream00 00 00 00 00 00 00 00 00 00 00 00 : 3个reserved00 :string nameminf Box00 00 00 E4: size of minf,2286D 69 6E 66: minfnmhd Box00 00 00 0C: size of nmhd,126E 6D 68 64: nmhd00 00 00 00:versiondinf Box00 00 00 24:size of dinf,3664 69 6E 66: dinfdref Box00 00 00 1C: size of dref,2864 72 65 66:dref00 00 00 00:version00 00 00 01:entry-counturl Box00 00 00 0C: size of url ,1275 72 6C 20: url00 00 00 01:locationstbl Box00 00 00 AC: size of stbl,17273 74 62 6C: stblstsd Box00 00 00 48:size of stsd,7273 74 73 64:stsd00 00 00 00:version,flags00 00 00 01:entry-countmp4s Box00 00 00 38:size of mp4s, 566D 70 34 73: mp4s00 00 00 00:version00 00 00 01:ESesds Box00 00 00 28:size of esds,4065 73 64 73:esds00 00 00 00:version03 1A 00 00:00 04 12 02:0D 00 00 20:00 00 00 00:00 00 00 00:05 03 00 00:40 06 01 02:stts Box00 00 00 18:size of stts,2473 74 74 73:stts00 00 00 00:version00 00 00 01:entry-count00 00 00 01:sample-count00 04 B7 17: sample-deltastsc Box00 00 00 1C: size of stsc ,2873 74 73 63:stsc00 00 00 00:version00 00 00 01:entry-count00 00 00 01:first-chunk00 00 00 01:samples-per-chunk00 00 00 01:sample-description-index stsz Box00 00 00 14:size of stsz,2073 74 73 7A: stsz00 00 00 00:version00 00 00 18:sample-size00 00 00 01:sample-countstco Box00 00 00 14:size of stco,2073 74 63 6F: stco00 00 00 00:version00 00 00 01:entry-count00 03 B0 8F: chunk-offsettrak Box00 01 71 55:size of trak,74 72 61 6B:traktkhd Box00 00 00 5C: size of tkhd,9274 6B 68 64: tkhd, track head box00 00 00 01:00,version; 00 00 01,track enable flagsBE EE 87 C5: creation-time创建文件的时间BE EE 87 C5: modifiation-time修改文件的时间,两个时间应该相同00 00 00 C9: track-ID00 00 00 00:保留的32bits的001 A8 61 B8: duration持续的时间00 00 00 00 00 00 00 00:保留的2个32bits的000 00:layer 000 00:pre-defined 000 00:volume,as non audio,if audio ,0x010000 00:reserved 000 01 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 01 00 00 00 00 00 0000 00 00 00 00 00 00 00 40 00 00 00 :matrix02 D0 00 00:width,if track_is_visual 0x01400000 else 001 E0 00 00:height,if track_is_visual 0x00F00000 else 0mdia Box00 01 70 CD: size of mdia6D 64 69 61: mdiamdhd Box00 00 00 20:size of mdhd ,326D 64 68 64: mdhd00 00 00 00:versionBE EE 87 C5: creation-timeBE EE 87 C5: modification-time00 01 5F 90: timescale01 A8 61 B8: duration0 :pad10101 01110 00100: 3个5bits的language00 00 :pre-defined 0hdlr Box00 00 00 21:size of hdlr,3368 64 6C 72: hdlr00 00 00 00:version00 00 00 00:pre-defined 076 69 64 65:vide,handler-type,表示此trak为视频00 00 00 00 00 00 00 00 00 00 00 00 : 3个reserved00 :string nameminf Box00 01 70 84:size of minf,943406D 69 6E 66: minfvmhd Box00 00 00 14:size of nmhd76 6D 68 64: nmhd00 00 00 01:version,flags00 00 00 00:00 00 00 00:dinf Box00 00 00 24:size of dinf,3664 69 6E 66: dinfdref Box00 00 00 1C: size of dref,2864 72 65 66:dref00 00 00 00:version00 00 00 01:entry-counturl Box00 00 00 0C: size of url ,1275 72 6C 20: url00 00 00 01:locationstbl Box00 01 70 44:size of stbl73 74 62 6C: stblstsd Box00 00 00 AC: size of stsd,7273 74 73 64:stsd00 00 00 00:version,flags00 00 00 01:entry-countmp4v Box00 00 00 9C: size of mp4v6D 70 34 76: mp4v00 00 00 00:version00 00 00 01:ES00 00 00 00 00 00 :00 00 00 00 00 00 00 00 00 00 02 D0 01 E0 00 48 00 00 00 48 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 FF FF esds Box00 00 00 46:size of esds65 73 64 73:esds00 00 00 00:version03 38 00 00:00 04 30 20:11 03 D0 90:00 1E 84 80:00 1E 84 80:05 21 00 00:01 B0 00 00:00 01 B5 0E:A0 20 20 2F:00 00 01 00:00 00 01 20:00 C7 88 BA:98 51 68 43:C1 46 3F 06:01 02 :stts Box00 00 E7 90: size of stts73 74 74 73:stts00 00 00 00:version00 00 1C F0: entry-count00 00 00 01:sample-count00 00 0B BB: sample-delta00 00 00 0100 00 11 9700 00 00 0100 00 0B BB00 00 00 0100 00 11 9A...........stsc Box00 00 0E 8C: size of stsc ,73 74 73 63:stsc00 00 00 00:version00 00 01 35:entry-count00 00 00 01:first-chunk00 00 00 15:samples-per-chunk00 00 00 01:sample-description-index00 00 00 0200 00 00 1800 00 00 0100 00 00 0300 00 00 1800 00 00 0100 00 00 0400 00 00 1800 00 00 01.............stsz Box00 00 73 D8 size of stsz,2073 74 73 7A: stsz00 00 00 00:version00 00 00 00:sample-size00 00 1C F1: sample-count00 00 86 24(从此开始,为当前chunk中每帧视频数据的字节大小,此大小与offset相对应,用offset找到偏移的绝对地址(指向mdat box中)后,从000001B6的第一个字节开始,加上对应的视频字节数,就是本帧的大小。

mp4格式原理

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

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

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

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

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

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

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

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

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

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

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

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

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

关于MP4文件格式解析(利用各个box分析数据)

关于MP4文件格式解析(利用各个box分析数据)MP4文件的格式是一层一层嵌套的。

1、最上一层是Movie atom。

Movie atom 定义了一部电影的数据信息。

它的类型是'moov',是一个容器atom,至少必须包含三种atom 中的一种—movie header atom('mvhd'), compressed movie atom('cmov')和reference movie atom ('rmra')。

没有压缩的movieheader atom 必须至少包含movie header atom 和reference movie atom中的一种。

也可以包含其他的atom,例如一个clipping atom ('clip'),一个或几个track atoms ('trak'),一个color table atom ('ctab'),和一个user data atom('udta')。

其中movie header atom 定义了整部电影的time scale,duration 信息以及display characteristics。

track atom 定义了电影中一个track 的信息。

Track 就是电影中可以独立操作的媒体单位,例如一个声道就是一个track。

Compressed movie atoms 和reference movie atoms 不太使用,不在本文讨论范围内。

本文主要讨论uncompressedmovie atoms。

1-1、Movie Header Atoms - MVHD。

是Movie atom的子层Movie headeratom 定义了整个movie 的特性,例如time scale 和duration,它的atom 类型是'mvhd'。

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文件格式入门

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)。
相关文档
最新文档