MP文件格式入门

上传人:206****923 文档编号:46579529 上传时间:2018-06-27 格式:PDF 页数:44 大小:2.21MB
返回 下载 相关 举报
MP文件格式入门_第1页
第1页 / 共44页
MP文件格式入门_第2页
第2页 / 共44页
MP文件格式入门_第3页
第3页 / 共44页
MP文件格式入门_第4页
第4页 / 共44页
MP文件格式入门_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《MP文件格式入门》由会员分享,可在线阅读,更多相关《MP文件格式入门(44页珍藏版)》请在金锄头文库上搜索。

1、Overview and IntroductionCore ConceptsMP4 文件格式中,所有的内容存在一个称为 movie 的容器中。 一个 movie 可以由多个 tracks 组成。 每个 track 就是一个随时间变化的媒体序列,例如,视频帧序列。 track 里的每个时间单位是一个 sample,它可以是一帧视频,或者音频。 sample 按照时间顺序排列。 注意,一帧音频可以分解成多个音频 sample,所以音频一般用 sample作为单位,而不用帧。MP4 文件格式的定义里面,用 sample 这个单词表示一个时间帧或者数据单元。 每个track 会有一个或者多个 samp

2、le descriptions。track 里面的每个 sample 通过引用关联到一个 sample description。这个sample descriptions 定义了怎样解码这个 sample,例如使用的压缩算法。与其他的多媒体文件格式不同的是,MP4 文件格式经常使用几个不同的概念,理解其不同是理解这个文件格式的关键。这个文件的物理格式没有限定媒体本身的格式。例如,许多文件格式将媒体数据分成帧,头部或者其他数据紧紧跟随每一帧视频,!TODO(例如 MPEG2)。而 MP4 文件格式不是如此。文件的物理格式和媒体数据的排列都不受媒体的时间顺序的限制。视频帧不需要在文件按时间顺序排列

3、。这就意味着如果文件中真的存在这样的一些帧,那么就有一些文件结构来描述媒体的排列和对应的时间信息。MP4 文件中所有的数据都封装在一些 box 中(以前叫 atom)。所有的 metadata(媒体描述元数据),包括定义媒体的排列和时间信息的数据都包含在这样的一些结构 box 中。MP4文件格式定义了这些这些 box 的格式。 Metadata 对媒体数据(例如,视频帧)引用说明。 媒体数据可以包含在同一个的一个或多个 box 里,也可以在其他文件中,metadata 允许使用 URLs 来引用其他的文件,而媒体数据在这些引用文件中的排列关系全部在第一个主文件中的 metadata 描述。其他

4、的文件不一定是 MP4 文件格式,例如,可能就没有一个 box。有很多种类的 track,其中有三个最重要,video track 包含了视频 sample;audio track包含了 audio sample;hint track 稍有不同,它描述了一个流媒体服务器如何把文件中的媒体数据组成符合流媒体协议的数据包。如果文件只是本地播放,可以忽略 hint track,他们只与流媒体有关系。Physical structure of the mediaBox 定义了如何在 sample table 中找到媒体数据的排列。这包括 data reference(数据引用), the sample

5、 size table, the sample to chunk table, and the chunk offset table. 这些表就可以找到track 中每个 sample 在文件中的位置和大小。data reference 允许在第二个媒体文件中找到媒体的位置。 这样,一部电影就可以由一个媒体数据库中的多个不同文件组成,而且不用把它们全部拷贝到另一个新文件中。例如,对视频编辑就很有帮助。为了节约空间,这些表都很紧凑。另外,interleave 不是 sample by sample,而是把单个 track的几个 samples 组合到一起,然后另外几个 sample又进行新的组合

6、,等等。 一个 track 的连续几个 sample 组成的单元就被称为 chunk。每个 chunk 在文件中有一个偏移量,这个偏移量是从文件开头算起的,在这个 chunk 内,sample 是连续存储的。这样,如果一个 chunk 包含两个 sample,第二个 sample的位置就是 chunk 的偏移量加上第一个 sample 的大小。chunk offset table 说明了每个 chunk 的偏移量,sample to chunk table 说明了 sample 序号和 chunk 序号的映射关系。注意 chunk 之间可能会有死区,没有任何媒体数据引用到这部分区域,但是 ch

7、unk 内部不会有这样的死区。这样,如果在节目编辑的时候,不需要一些媒体数据,就可以简单的留在那里,而不用引用,这样就不用删除它们了。类似的,如果媒体存放在第二个文件中,但是格式不同于MP4 文件格式,这个陌生文件的头部或者其他文件格式都可以简单忽略掉。Temporal structure of the media文件中的时间可以理解为一些结构。 电影以及每个 track 都有一个 timescale。 它定义了一个时间轴来说明每秒钟有多少个 ticks。合理的选择这个数目,就可以实现准确的计时。一般来说,对于audio track,就是 audio 的 sampling rate。对于vid

8、eo track,情况稍微复杂,需要合理选择。例如,如果一个 media TimeScale 是 30000,media sample durations 是 1001,就准确的定义了NTSC video 的时间格式(虽然不准确,但一般就是 29.97),and provide 19.9 hours of time in 32 bits.Track 的时间结构受一个 edit list 影响,有两个用途:全部电影中的一个 track的一部分时间片断变化(有可能是重用);空白时间的插入,也就是空的 edits。特别注意的是如果一个 track 不是从节目开头部分开始,edit list 的第一个

9、 edit 就一定是空的 edit。每个 track 的全部 duration定义在文件头部,这就是对 track 的总结,每个 sample有一个规定的duration。一个 sample的准确描述时间,也就是他的时间戳(time-stamp)就是以前的 sample 的duration 之和。Interleave文件的时间和物理结构可以是对齐的,这表明媒体数据在容器中的物理顺序就是时间顺序。另外如果多个 track 的媒体数据包含在同一个文件中,这个媒体数据可以是 interleaved。一般来说,为了方便读取一个 track 的媒体数据,同时保证每个表紧凑,以一个合适的时间间隔(例如 1

10、秒)做一次 interleave,而不是 sample by sample。这样就可以减少 chunk 的数据,减小 chunk offset table 的大小。mp4 文件例子Darwin Streaming Server 里面有一些很好的工具,可以帮助分析 mp4文件格式。但是如果可以自己逐字节的parse 文件,可以更好的了解 mp4文件格式。 这里我就逐字节的分析文件结构。文件例子是DSS 里面包含的sample_100kbit.mp4Movie Atom - MOOVMovie atom 定义了一部电影的数据信息。它的类型是moov,是一个容器 atom,至少必须包含三种 atom

11、中的一种movie header atom(mvhd), compressed movie atom(cmov)和reference movie atom (rmra) 。没有压缩的 movie header 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

12、 定义了整部电影的 time scale,duration信息以及 display characteristics。track atom定义了电影中一个 track 的信息。Track 就是电影中可以独立操作的媒体单位,例如一个声道就是一个 track。Compressed movie atoms 和 reference movie atoms 不太使用,不在本文讨论范围内。本文主要讨论 uncompressed movie atoms。字段长度(字节)描述尺寸4这个 movie header atom 的字节数类型4moov以下是实际的sample_100kbit.mp4 的部分字节,可以看

13、到结果是主要包含四个子atom,movie header atom(mvhd), 一个audio track atom(trak), 一个 video track atom(trak)。Movie Header Atoms MVHDMovie header atom 定义了整个 movie 的特性,例如 time scale 和 duration,它的 atom 类型是mvhd。字段长度(字节)描述尺寸4这个 movie header atom 的字节数类型4Mvhd版本1这个 movie header atom 的版本标志3扩展的 movie header 标志,这里为 0生成时间4Movi

14、e atom 的起始时间。基准时间是 1904-1-1 0:00 AM修订时间4Movie atom 的修订时间。基准时间是 1904-1-1 0:00 AMTime scale4A time value that indicates the time scale for this moviethat is, the number of time units that pass per second in its time coordinate system. A time coordinate system that measures time in sixtieths of a secon

15、d, for example, has a time scale of 60.Duration4A time value that indicates the duration of the movie in time scale units.Note that this property is derived from the movies tracks. The value of this field corresponds to the duration of the longest track in the movie.播放速度4播放此 movie 的速度。1.0 为正常播放速度播放音

16、量2播放此 movie 的音量。1.0 为最大音量保留10这里为 0矩阵结构36该矩阵定义了此 movie 中两个坐标空间的映射关系预览时间4开始预览此 movie 的时间预览 duration4以 movie 的 time scale 为单位,预览的 durationPoster time4The time value of the time of the movie poster.Selection time4The time value for the start time of the current selection.Selection duration4The duration of the current selection in movie time scale units.当前时间4当前时间下一个 track ID4下一个待添加 track 的 ID值。0 不是一个有效的 ID值。Track Atoms TRAK一个 Track atom 定义了 movie 中的一个 track。一部 movie

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号