
视频文件头解析,针对MP4格式。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
视频文件头解析——MP4 文件格式是一种广泛应用的多种多媒体文件格式,它具备存储音频、视频、图像等多种媒体数据的能力。MP4 文件格式的核心概念包括 movie、track、sample、sample description、box、metadata 等。首先,MP4 文件格式中所有的数据都包含在一个被称为 movie 的容器之中。这个 movie 可以由多个 track 组成,每个 track 均代表一个随时间变化的媒体序列,例如,一系列的视频帧。track 内部的每一个时间单位都被定义为一个 sample,它可以是单帧视频或音频数据。这些 sample 按照时间顺序依次排列。每个 track 会关联一个或多个 sample description,用于描述如何解码该 sample,例如所使用的压缩算法。在 MP4 文件格式的定义中,“sample” 这个词语通常被用来指代一个时间帧或数据单元。与其它多媒体文件格式相比,MP4 文件格式经常会采用多种不同的概念进行组织和管理,因此深入理解这些概念对于掌握该文件格式至关重要。MP4 文件格式的物理结构并没有对媒体本身进行限制;例如,许多文件格式会将媒体数据分割成帧、头部或其他数据紧随每一帧之后,但 MP4 文件格式并非如此。文件的物理结构以及媒体数据的排列顺序并不受媒体的时间顺序约束。视频帧并不需要按照文件中的时间顺序排列存在于文件中,这意味着如果文件中存在不按时间顺序排列的帧,则会存在特定的文件结构来描述这些媒体数据的排列及其对应的时信息。MP4 文件中的所有数据都封装在称为 box 的结构中(以前称为 atom)。所有的 metadata(媒体描述元数据),包括定义媒体排列和时间信息的具体数据都包含在这些结构 box 中并遵循特定的结构化规范。MP4 文件格式定义了这些 box 的具体格式。Metadata 对媒体数据(如视频帧)进行引用说明,从而实现数据的关联和管理。媒体数据可以被包含在一个或多个 box 中,也可以存储在其他文件中;metadata 允许使用 URLs 来引用外部的文件,而这些引用文件的排列关系则完全由第一个主文件的 metadata 描述。在 MP4 文件中存在多种类型的 track,其中 video track 负责存储视频 sample;audiotrack 则负责存储音频 sample;hint track 则具有特殊的功能:它描述了流媒体服务器如何将文件中的媒体数据组织成符合流媒体协议的数据包。对于仅用于本地播放的文件而言,可以忽略 hint track 的存在;它们仅与流媒体服务器相关联。 Media file 的物理结构 Box 定义了如何在 sample table 中定位和检索 media 数据的信息及其排列方式, 包括 data reference (数据引用), the sample size table, the sample to chunk table, and the chunk offset table 。 这些表能够准确地确定 track 中每个 sample 在文件中的位置以及大小信息. data reference 允许通过引用访问第二个 media 文件中的 media 数据位置. 因此, 一部电影可以由数据库中的多个不同文件组成, 而无需将它们全部复制到新的文件中, 这对于视频编辑等场景具有显著的优势. 为了节省存储空间, 这些表通常设计得非常紧凑. 此外, interleaving 操作不是逐个样本进行处理, 而是将单个 track 中的若干个样本组合成一个更大的单元 (chunk),然后将其他若干个样本再次组合成新的单元等等. 一个 track 中的连续几个样本组成的单元被称为 chunk. 每个 chunk 在文件中都有一个偏移量 (offset),这个偏移量是从文件开头计算得出的; 在这个 chunk 内, sample 是连续存储的. 因此, 如果一个 chunk 包含两个 sample, 第二个sample 的位置就是chunk 的偏移量加上第一个sample 的大小. chunk offset table 说明了每个 chunk 的偏移量; sample to chunk table 说明了sample序号和chunk序号之间的映射关系. Media file 中的时间结构可以理解为一系列的 timescale ,电影以及每个track 都拥有自己的 timescale ,它定义了一个时间轴来表示每秒钟有多少个 ticks (计数单位)。合理的选择 ticks 的数量能够实现精确的时间测量; 通常来说, 对于 audio track , ticks 的数量等于 audio sampling rate ; 对于 video track , ticks 的数量等于 video fps (帧率)。
全部评论 (0)


