翻译:QuickTime文件格式规范-Movie Atoms(1)

译者注:
这里面的内容主要是分析mp4/3gp文件的层级结构,详细的介绍了各种不同的box的结构等,网上有一些参考资源,他们大多都是结合实际的例子来说明,篇幅较大,而且笼统,建议读者分多次结合网上资源来理解这部分内容。

翻译正文:

Movie Atoms

本章简单介绍了QuickTime movie atoms,以及这些atoms的布局和用法的具体细节。本章中讨论的每种atom类型都有包含偏移量信息的附图,以及字段说明。

本章分为以下主要部分:

  • Overview of Movie Atoms介绍的是QuickTime movie atoms,它充当装载描述movie的数据的信息的容器。本部分提供了显示了简单的单轨QuickTime movie组织结构的概念图。还介绍了Color table atoms和user data atoms。
  • Track Atoms介绍了track atoms,其定义了movie的单个轨道。还介绍了user data atoms的track和hint track。
  • Media Atoms介绍了media atoms,其定义了track的movie data,例如media type和media time scale。
  • Sample Atoms介绍了sample table atoms,它指定了media sample所在的位置,它们的时长等信息。这部分还包括了如何使用这些atoms的示例。

📝 :media atoms和sample atoms不包含实际采样数据,如视频帧或音频采样。 它们包含用于定位和解释这些采样的元数据。

  • Compressed Movie Resources讨论了压缩的movie资源,其中使用无损压缩算法来压缩movie atom的内容,包括任何轨道,media或sample atoms。 在解析movie atom之前,必须解压缩这些。
  • Reference Movies讨论了包含reference movie atom(对备用movie的引用列表,以及从备选项列表中选择正确movie的标准)的movie。 包含reference movie atom的movie atoms不一定包含轨道,media或sample atoms。

Overview of Movie Atoms(Movie Atoms概述)

QuickTime movie atoms的atom类型为“moov”。 这些atom作为描述movie数据的信息的容器。 该信息或元数据存储在多种不同类型的atom中。 一般来说,只有元数据存储在movie原子中。 movie的样本数据,例如音频或视频样本,在movie atom中引用,但不包含在其中。

movie atom基本上是其他atoms的容器。 这些atoms一起描述了movie的内容。 在顶层,movie atom通常包含轨道atoms,轨道atom又包含media atoms。 在最底层是叶atoms,其包含非atom数据,通常以表或一组数据元素的形式。 例如,轨道atom包含edit atom,edit atom又包含edit list atom,叶atom包含edit list table的数据。 所有这些atom将在本文档的后面讨论。

图2-1提供了一个简单的单轨QuickTime movie的组织的概念图。图中的每个嵌套框表示属于其父atom的atom。该图不显示任何atom的数据区域。这些区域在这部分的后面介绍。

注意,该图显示了标准movie atom的组织结构。可以使用无损压缩算法来压缩movie元数据。在这种情况下,movie atom只包含一个子atom - compressed movie atom('cmov')。当这个子atom未压缩时,其内容符合下图所示的结构。有关详细信息,请参阅Compressed Movie Resources。

还可以创建reference movie,引用其他movie的movie;在这种情况下,movie atom可以仅包含reference movie atom('rmra')。有关详细信息,请参阅“Reference Movies”。最终,这种链关系必须以标准movie atom(如图2-1中的atom)或压缩的movie atom(可以解压缩以获得相同的结构)结束。

图 2-1 Sample organization of a one-track video movie

📝 注意:在单轨QuickTime movie文件中,其他的atoms可能存在,但不显示在图2-1中。

Movie Atom

您使用movie atoms来指定定义movie的信息,即允许程序解释存储在其他位置的sample数据的信息。movie atom通常包含movie header atom,其定义整个movie的时间尺度和持续时间信息,以及其显示特性。现有movie可能包含movie profile atom,其中总结了movie的主要功能,例如必要的编解码器和最大比特率。此外,movie atom包含movie中每个轨道的track atom。

movie atom的atom类型为“moov”。它包含其他类型atoms,包括三个可能atoms中的至少一个 - movie header atom('mvhd'),compressed movie atom('cmov')或reference movie atom('rmra')。uncompressed movie atom可以包含movie header atom和reference movie atom,但它必须包含这两个中的至少一个。它还可以包含几个其他atoms,如clipping atom('clip'),一个或多个track atoms('trak'),colour table atom('ctab')和user data atom('udta') 。

compressed movie atoms和reference movie atoms被分开讨论。 本节介绍正常的uncompressed movie atoms。

图 2-2 显示了典型的movie atom的布局。

📝 注意:如前所述,叶子atoms显示为白色框,容器atoms显示为灰色框。

图 2-2 The layout of a movie atom

movie atom可能包含以下字段:

  • Size
    此movie atom中的字节数。
  • Type
    这个movie atom的类型; 此字段必须设置为“moov”。
  • Profile atom
    有关详细信息,请参阅Movie Profile Atom。
  • Movie header atom
    有关详细信息,请参阅Movie Header Atoms。
  • Movie clipping atom
    有关详细信息,请参阅Clipping Atoms。
  • Track atoms
    有关轨道atoms及其相关atoms的详细信息,请参阅Track Atoms。
  • User data atom
    有关user data atoms的更多信息,请参阅User Data Atoms。
  • Color table atom
    有关color table atom的讨论,请参阅Color Table Atoms。
  • Compressed movie atom
    有关compressed movie atom的讨论,请参阅Compressed Movie Resources。
    -Reference movie atom
    有关reference movie atoms的讨论,请参阅Reference Movies。

Movie Profile Atom

📝 注意:profile atoms在QuickTime文件格式中已弃用。 以下信息旨在记录包含profile atoms的现有内容,不应用于新开发。

movie profile atom总结了movie的特征和复杂性,例如所需的编解码器和最大比特率,以帮助播放器应用或设备快速确定他们是否具有播放movie的必要资源。

movie的特征通常包括movie的最大视频和音频比特率,音频和视频编解码器类型的列表,movie的视频尺寸以及任何适用的MPEG-4配置文件和级别。 这是也可以通过更详细地检查movie文件的内容而获得的所有信息。 此摘要旨在允许应用程序或设备快速确定他们是否可以播放movie。 它不打算作为movie中其他地方找不到的信息的容器,不应该用作单独的一个。

📝 注意:实际上,不出现在profile atom中的特征并不意味着它不在movie中。 profile atom本身可以不存在,或者可以仅列出movie特征集的子集。 profile atom中列出的特征都是存在的,但列表不一定是完整的。

创建profile atom时,可以省略movie中存在的某些要素,但需要完全指定profile atom中包含的任何要素。例如,包含视频的movie在profile atom中可以具有或可以不具有视频编解码器类型特征,但是如果在profile atom中包括任何视频编解码器类型特征,则必须在profile atom中列出每个所需的视频编解码器。

movie profile atom是profile atom('prfl'),其父结点是movie atom。这与轨道profile atom不同,其父结点是track atom。在两种情况下,profile atom的结构是相同的,但是movie profile atom的内容将movie作为一个整体描述,而轨道profile atom的内容特定于某个轨道。

profile atom包含一个特征列表。在movie profile atom中,这些特征将movie作为一个整体进行了总结。在轨道profile atom中,这些特征描述特定轨道。

特征列表中的每个条目由四个32位字段组成:

  • 第一个字段保留,必须设置为零。
  • 第二个字段是part-ID,它将特征定义为特定brand的或通用的。特定brand的特征特定于特定brand。通用特征可以在使用profile atom的任何文件类型中找到。通用特征part-ID具有四个ASCII空格(0x20202020)。brand-specific的功能具有part-ID,它是该文件类型的Compatible_Brand代码之一,如file type atom('ftyp')中所指定。例如,QuickTime-specific的part-ID是“qt ”。然而,本文档中描述的所有特征都是通用的。
  • 第三个字段是特征码或名称,一个32位无符号整型,通常最好解释为四个ASCII字符。如:最大视频比特率特征具有特征码或名称“mvbr”。允许使用零特征代码值(0x00000000,而不是四个ASCII零字符)作为一个或多个名称/值对中的占位符。读者应忽略零值的特征码。
  • 第四个字段是值,它也是一个32位字段。该值可以是有符号或无符号整数,或定点值,或包含子字段,或由打包数组组成;它仅可以关于特定特征来解释。

有关profile atoms的结构和内容的详细信息,请参阅Profile Atom Guidelines

Movie Header Atoms

您使用movie header atom来指定整个QuickTime movie的特征。 该atom中包含的数据定义了整个QuickTime movie的特征,例如时间尺度和持续时间。 它的atom类型值为'mvhd'。

图 2-3 显示了movie header atom的布局。 movie header atom是叶子atom。

图 2-3 The layout of a movie header atom

您可以通过指定以下数据元素来定义movie header atom。

  • Size
    一个32位整数,指定此movie header atom中的字节数。
  • Type
    标识atom类型的32位整数;必须设置为“mvhd”。
  • Version
    一个字节,该movie header atom的规范版本。
  • Flags
    为未来movie header flags使用的三个字节的空间。
  • Creation time
    一个32位整数,指定创建movie atom时的日期和时间(从1904年1月1日午夜起的秒数)。强烈建议使用协调世界时(UTC)指定此值。
  • Modification time
    一个32位整数,用于指定更改movie atom时的日期和时间(从1904年1月1日午夜起的秒数)。强烈建议使用协调世界时(UTC)指定此值。
  • Time scale
    指示此movie的时间刻度的时间值,即在其时间坐标系中每秒通过的时间单位的数量。例如,以六十分之一秒测量时间的时间坐标系具有60的时间标度。
  • Duration
    以时间刻度单位表示movie持续时间的时间值。请注意,此属性来自movie的track。此字段的值对应于电影中最长track的持续时间。
  • Preferred rate
    指定播放此movie的速率的32位定点数。值1.0表示正常速率。
  • Preferred volume
    一个16位的定点数字,指定播放此电影的声音的音量。值1.0表示满音量。
  • Reserved
    保留供Apple使用的十个字节。设置为0。
  • Matrix structure
    与这部movie相关的矩阵结构。矩阵显示如何将点从一个坐标空间映射到另一个。有关如何在QuickTime中使用显示矩阵的讨论,请参见Matrices
  • Preview time
    movie中预览开始的时间值。
  • Preview duration
    以影片时间缩放单位预览movie的持续时间。
  • Poster time
    movie海报的时间的时间值。
  • Selection time
    当前选择的开始时间的时间值。
  • Selection duration
    影片时间刻度单位中当前选择的持续时间。
  • Current time
    movie中当前时间位置的时间值。
  • Next track ID
    一个32位整数,指示用于添加到此movie的下一曲目(track)的曲目ID号的值。请注意,0不是有效的曲目ID值。

📝 注意:创建和修改日期应使用协调世界时(UTC)设置。 在QuickTime文件格式的先前版本中,未指定这个,并且这些字段通常设置为创建电影的时区的本地时间。

Color Table Atoms

Color table atoms定义了在仅支持256种颜色的设备上显示movie的首选颜色列表。 该列表最多可以包含256种颜色。 这些可选atoms类型值为'ctab'。 color table atom包含Macintosh颜色表数据结构。

图 2-4 显示了color table atom的布局。

图 2-4 The layout of a color table atom

color table atom包含以下数据元素。

  • Size
    32位整数,指定此color table atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“ctab”。
  • Color table seed
    必须设置为0的32位整数。
  • Color table flags
    必须设置为0x8000的16位整数。
  • Color table size
    一个16位整数,指示后面的color array中的颜色数。 这是一个零相对值; 将此字段设置为0表示数组中有一种颜色。
  • Color array
    颜色数组。 每种颜色由四个无符号的16位整数组成。 第一个整数必须设置为0,第二个是红色值,第三个是绿色值,第四个是蓝色值。

User Data Atoms

user data atoms允许您定义和存储与QuickTime对象相关联的数据,例如movie 'moov',track 'trak'或media 'mdia'。这也包括QuickTime寻找的信息,例如版权信息或movie是否应该循环,以及由应用程序提供的任意信息 - QuickTime完全忽略的。

其直接父结点是movie atom的user data atom包含与movie作为整体相关的数据。其父结点是轨道atom的user data atom包含与该特定轨道相关的信息。 QuickTime movie文件可以包含许多user data atoms,但是只允许一个user data atom作为任何给定movie atom或轨道atom的直接子节点。

user data atom的atom类型为“udta”。在user data atom内的是描述每条用户数据的atoms列表。用户数据提供了一种扩展存储在QuickTime movie中的信息的简单方法。例如,user data atom可以存储movie的窗口位置,回放特性或创建信息。

本节介绍QuickTime可识别的 data atoms。您可以创建自己的应用程序可识别的新的data atom类型。应用程序应忽略它们不能识别的任何data atom类型。

图2-5 显示了user data atom的布局。

图 2-5 The layout of a user data atom

user data atom包含以下数据元素。

  • Size
    一个32位整数,指定此user data atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“udta”。
  • User data list
    格式化为一系列atom的用户数据列表。 用户数据列表中的每个数据元素包含大小和类型信息及其有效载荷数据。 由于历史原因,数据列表可选地由设置为0的32位整数终止。如果您正在编写一个程序以读取user data atom,则应允许终止0。但是,如果您正在编写一个程序来创建user data atom,可以安全地忽略终止0。
    表 2-1 列出了当前定义的列表条目类型
List entry type Description For Sorting
'©arg' Name of arranger
'©ark' Keywords for arranger X
'©con' Keywords for composer X
'©com' Name of composer
'©cpy' Copyright statement
'©day' Date the movie content was created
'©dir' Name of movie’s director
'©ed1' to '©ed9' Edit dates and descriptions
'©fmt' Indication of movie format (computer-generated, digitized, and so on)
'©inf' Information about the movie
'©isr' ISRC code
'©lab' Name of record label
'©lal' URL of record label
'©mak' Name of file creator or maker
'©mal' URL of file creator or maker
'©nak' Title keywords of the content X
'©nam' Title of the content
'©pdk' Keywords for producer X
'©phg' Recording copyright statement, normally preceded by the symbol
'©pre' Name of producer
'©prf' Names of performers
'©prk' Keywords of main artist and performer X
'©prl' URL of main artist and performer
'©req' Special hardware and software requirements
'©snk' Subtitle keywords of the content X
'©snm' Subtitle of content
'©src' Credits for those who provided movie source content
'©swf' Name of songwriter
'©swk' Keywords for songwriter X
'©swr' Name and version number of the software (or hardware) that generated this movie
'©wrt' Name of movie’s writer
'AllF' Play all frames—byte indicating that all frames of video should be played, regardless of timing
'hinf' Hint track information—statistical data for real-time streaming of a particular track. For more information, see Hint Track User Data Atom.
'hnti' Hint info atom—data used for real-time streaming of a movie or a track. For more information, see Movie Hint Info Atom and Hint Track User Data Atom.
'name' Name of object
'tnam' Localized track name optionally present in Track user data. The payload is described in Track Name.
'tagc' Media characteristic optionally present in Track user data—specialized text that describes something of interest about the track. For more information, see Media Characteristic Tags.
'LOOP' Long integer indicating looping style. This atom is not present unless the movie is set to loop. Values are 0 for normal looping, 1 for palindromic looping.
'ptv ' Print to video—display movie in full screen mode. This atom contains a 16-byte structure, described in Print to Video (Full Screen Mode).
'SelO' Play selection only—byte indicating that only the selected area of the movie should be played
'WLOC' Default window location for movie—two 16-bit values, {x,y}

当显示文本不具有预定排序顺序时(例如,当排序取决于上下文含义时,在东方语言中),使用标记为“keywords”并且标记为“For Sorting”的用户数据项。 这些关键字可以按算法排序以按正确的顺序放置相应的项目。

窗口位置,循环,仅播放选择,播放所有帧,和打印到video这些atoms控制QuickTime显示movie的方式。 只有当user data atom的直接父节点是一个movie atom('moov')时,这些atom才被解释。 如果它们作为轨道atom的用户数据的一部分被包括,它们被忽略。

User Data Text Strings and Language Codes(用户数据文本字符串和语言代码)

类型以©字符(ASCII 169)开头的所有用户数据列表条目都被定义为国际文本。这些列表条目必须包含具有相关语言代码的文本字符串列表。通过存储相同文本的多个版本,单个用户数据文本项可以包含不同语言的翻译。

文本字符串列表使用一个小的整数atom格式,它与QuickTime atom格式相同,除了它使用16位的值来表示大小和类型,而不是32位的值。第一个值是字符串的大小,包括大小和类型,第二个值是字符串的语言代码。

user data text strings可以使用Macintosh文本编码或Unicode文本编码。语言代码的格式决定了文本编码格式。 Macintosh语言代码后面是Macintosh编码的文本。如果使用规范ISO 639-2/T中列出的ISO语言代码指定语言代码,则文本使用Unicode文本编码。当使用Unicode时,文本为UTF-8,除非它以字节顺序标记(BOM,0xFEFF)开头,在这种情况下,文本为UTF-16。 BOM和UTF-16文本都应该是big-endian。相同文本的多个版本可以使用不同的编码方案。

⚠️ 重要:小于0x400的语言代码值为Macintosh语言代码。 大于或等于0x400的语言代码值为ISO语言代码。 该规则的例外是语言代码0x7FFF,它表示未指定的Macintosh语言。

ISO语言代码是三字符代码。 为了适应16位字段,字符必须被打包成三个5位子字段。 该包在“ISO Language Codes”中描述。

Media Characteristic Tags(媒体特征标签)

轨道('trak')atom的user data atom可以包含零个或多个media characteristic tag atoms('tagc')。

media characteristic tag atom的有效载荷数据是指示关于轨道的有趣的标签。这是一个特殊的字符串,由US-ASCII(7位加上一个清除高位)字符的子集组成,符合以下段落中描述的结构。这不是一个C字符串;没有终止null,所以从atom的大小确定字符数。合法字符是字母(A-Z,a-z),数字(0-9),破折号( - ),句点(.),下划线(_)和波浪号(〜)。

QuickTime文件的任何轨道可以与指示媒体特性的一个或多个标签相关联。标签表示关于轨道的有趣的东西。例如,标签可以指示轨道的目的(它是注释),轨道的抽象特性(其需要硬件解码)或轨道包括可读文本的指示(章节轨道和字幕轨道都可以是由用户读取)。

标签的比较区分大小写;如果字符串的字节匹配,则两个标记匹配。不应该使用两种仅区分大小写的标记字符串,以避免开发人员或内容创建者可能产生混淆。

允许在单个轨道中使用重复的标签,但不鼓励。复制没有特殊意义。

标记字符串不是本地化的,并且意在进行机器解释;但是,鼓励记忆字符串。

标记要么是public或是private:

  • public标签允许广泛部署共享语义。公共标签目前由Apple定义。
  • private标签可以定义为私人使用。

标记字符串具有以下结构:

  • 公共标记以前缀“public.”开头,后面跟着由句点分隔的一个或多个段。示例(未定义)可能是public.subtitle或public.commentary.director。

📝 注意:公共标记是公开的,因为它们已记录在本规范中或在Apple API中可用。其他定义的带有“public.”前缀的标签被禁止;请用私人标签替代。

  • 私人标签以私人实体的域使用反向DNS命名约定开始。例如,apple.com变为com.apple。这之后是由句点分隔的一个或多个段。示例(未定义)可以是com.apple.this-is-a-tag,com.apple.video.includes-sign-language和org.w3c.html5.referenced-video。
  • 唯一允许的前缀是“public.”和反向域。所有其他前缀保留供将来使用。

📝 注意:支持除“public”之外的通用顶级域(如果要分配)。字符串“public”保留用于表示公共媒体特征标签。

此规范定义了以下几个公共媒体特征标签。其他公共和私人标签可以在规范之外定义;无法识别的标记应该被忽略。

  • public.auxiliary-content(对所有媒体类型有效)
    表示曲目(track)的内容已被内容作者标记为对媒体文件的呈现的辅助。例如,评论音频或字幕轨道可以用这个标签标记,因为它不是节目内容。如果此标签不存在,则如果轨道是备用组的成员,则轨道仍然可以被推断为用该特性标记,并且使用“Track Exclude From Autoselection atom”将该轨道从自动选择中排除;请参阅Track Exclude From Autoselection atom。
  • public.accessibility.transcribes-spoken-dialog(适用于可读媒体)
    表示该轨道包括以该轨道的语言环境的语言的可读内容,其转录语音对话。
  • public.accessibility.describes-music-and-sound(适用于可读媒体)
    表示轨道包含以轨道区域设置语言描述的可读内容,用于描述发生在节目音频中的音频和音频效果。
  • public.accessibility.describes-video(适用于可听媒体)
    表示轨道包括描述演示文稿的视觉部分的可听内容。
    public.accessibility.describes-video (valid for audible media)
    Indicates that the track includes audible content that describes the visual portion of the presentation.
  • public.easy-to-read(适用于易读媒体)
    表示轨道以其已指定语言环境的语言提供易读内容,该语言已经编辑以便于阅读。
Track Name

movie atom的user data atom可以包含track name atom('tnam')。
track name atom的有效载荷数据由以下数据组成。

  • 保留:必须设置为零的32位整数。
  • 语言:16位整数,保存一个打包的ISO 639-2/T代码,如User Data Text Strings and Language Codes中描述的。
  • 名称:以空字符结尾的UTF-8或UTF-16字符串保存曲目名称(track name)。 如果这是一个UTF-16字符串,字符串必须以字节顺序标记(0xFEFF)开头。

轨道可以具有多个具有不同语言代码的“tnam”atom。 通常,每个轨道具有与轨道内容相同的语言的单个“tnam”atom是足够的。 备选轨道也可以具有'tnam' atoms; 它们的存在意味着该名称是轨道的好的用户可读标签。

Print to Video (Full Screen Mode)

movie atom的user data atom可以包含print to video atom('ptv ')。注意,第四个字符是一个ASCII(space)(0x20)。如果存在print to video atom,QuickTime以全屏模式播放movie,没有窗口,没有可见的控制器。未被movie占据的屏幕的任何部分被清除为黑色。用户必须按Esc(Escape)键退出全屏模式。

这个atom通常被暂时添加和删除以控制用于单个演示的movie的显示模式,但是它也可以被存储为永久movie文件的一部分。

print to video atom的有效载荷数据包括以下内容。

  • Display size
    指示movie的显示大小的16位小端整数:0表示movie应以其正常大小播放; 1表示movie应以双倍大小播放; 2表示电影应以半尺寸播放; 3表示电影应该缩放以填满屏幕; 4表示应当以其当前大小播放电影(该最后的值通常在print to video atom被暂时插入并且movie已经临时调整时使用)。
  • Reserved1
    一个16位整数,其值应为0。
  • Reserved2
    一个16位整数,其值应为0。
  • Slide show
    一个8位布尔值,其值为1,用于幻灯片放映。在幻灯片播放模式下,每次按下向右箭头键,movie前进一帧。音频静音。
  • Play on open
    8位布尔值,其值通常为1,表示movie在打开时应播放。由于在全屏模式下没有可见的控制器,应用程序应始终将此字段设置为1,以防止用户混淆。

Track Atoms

track atom定义了movie的单个轨道。 movie可能由一个或多个曲目(tracks)组成。 每个轨道独立于movie中的其他轨道并且携带其自己的时间和空间信息。 每个轨道atom包含其相关联的媒体atom。
轨道专门用于以下目的:

  • 包含媒体数据引用和说明(媒体轨道)。
  • 要包含修饰符轨道(补间等)。
  • 包含流协议的包化信息(提示轨道)。 提示轨道可以包含对媒体样本数据或媒体样本数据的副本的引用。 有关提示轨道的详细信息,请参阅Hint Media

📝 注意:QuickTime movie不能只包括提示轨道或修改轨道; 必须至少有一个媒体轨道。 此外,不能从提示的movie中删除媒体轨道,即使提示轨道包含媒体样本数据的副本 - 除了提示轨道,整个未提示的电影必须保留。

图 2-6 显示了track atom的布局。 轨道atom的atom类型值为'trak'。 轨道atom需要track header atom('tkhd')和media atom('mdia')。 其他子atom是可选的,并且可以包括track clipping atom('clip'),track matte atom('matt'),edit atom('edts'),track reference atom('tref'),track load settings atom('load'),track input map atom('imap')和user data atom('udta')。

📝 注意图2-6包含可选的track profile atom'prfl'。 轨迹配置文件atom在当前版本的QuickTime中已弃用,但可能存在于现有的QuickTime文件中。 这里的包含旨在记录包含profile atom的现有内容,它们不应当用于新的开发。

图 2-6 The layout of a track atom

track atoms包含以下数据元素。

  • Size
    一个32位整数,指定此轨道atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“trak”。
  • Track profile atom
    有关详细信息,请参阅Track Profile Atom。
  • Track header atom
    有关详细信息,请参阅Track Header Atoms。
  • Track aperture mode dimensions atom
    有关详细信息,请参阅Track Aperture Mode Dimension Atoms。
  • Clipping atom
    有关详细信息,请参阅Clipping Atoms。
  • Track matte atom
    有关详细信息,请参阅Track Matte Atoms。
  • Edit atom
    有关详情,请参阅Edit Atoms。
  • Track reference atom
    有关详细信息,请参阅Track Reference Atoms。
  • Track exclude from autoselection atom
    有关详细信息,请参阅Track Exclude From Autoselection Atoms。
  • Track load settings atom
    有关详细信息,请参阅Track Load Settings Atoms。
  • Track input map atom
    有关详细信息,请参阅Track Input Map Atoms。
  • Media atom
    有关详细信息,请参阅Media Atoms。
  • User-defined data atom
    有关详细信息,请参阅User Data Atoms。

Track Profile Atom

📝 注意:profile atoms在QuickTime文件格式中已弃用。 以下信息旨在记录包含profile atom的现有内容,不应用于新开发。

profile atom可以是movie atoms或track atoms的子结点。 有关profile atoms的详细信息,请参阅Movie Profile Atom。

Track Header Atoms

track header atom指定movie内单个轨道的特性。 track header atom包含指定字节数的size字段和指示数据格式(由atom类型“tkhd”定义)的type字段。

图 2-7 显示了track header atom的结构。

图 2-7 The layout of a track header atom

track header atom包含track的track特性,包括时间,空间和音量信息。

track header atom包含以下数据元素。

  • Size
    一个32位整数,指定此track header atom中的字节数。

  • Type
    标识原子类型的32位整数;此字段必须设置为“tkhd”。

  • Version
    1字节,说明该track header的版本。

  • Flags
    为track header flags保留的三个字节。这些标志指示如何在movie中使用track。以下标志有效(当设置为1时,所有标志都被使能)。

  • Track enabled
    表示track已启用。标志值为0x0001。

  • Track in movie
    表示在track中使用曲目(track)。标志值为0x0002。

  • Track in preview
    表示在movie预览中使用曲目(track)。标志值为0x0004。

  • Track in poster
    表示该曲目(track)在movie的海报中使用。标志值为0x0008。

  • Creation time
    一个32位整数,指示创建track header时的日期和时间(以秒为单位,自1904年1月1日起的秒数)。强烈建议使用协调世界时(UTC)指定此值。

  • Modification time
    一个32位整数,指示track header更改时的日期和时间(以秒为单位,自1904年1月1日起的秒数)。强烈建议使用协调世界时(UTC)指定此值。

  • Track ID
    唯一标识track的32位整数。不能使用值0。

  • Reserved
    保留供Apple使用的32位整数。将该字段设置为0。

  • Duration
    指示此曲目的持续时间(在movie的时间坐标系中)的时间值。请注意,此属性来源于曲目的编辑。此字段的值等于所有轨道编辑的持续时间的总和。如果没有编辑列表,则持续时间是样本持续时间的总和,被转换为movie时间刻度。

  • Reserved
    保留供Apple使用的8字节值。将该字段设置为0。

  • Layer
    一个16位整数,指示其track在其movie中的空间优先级。 QuickTime Movie Toolbox使用此值来确定track如何重叠。具有较低layer值的轨道显示在具有较高layer值的轨道前面。

  • Alternate group
    一个16位整数,用于标识包含另一个数据的movie tracks的集合。相同的标识符出现在组中其他track的每个“tkhd”atom中。 QuickTime从播放movie时要使用的组中选择一个曲目。该选择可以基于诸如回放质量,语言或计算机的能力的考虑。
    值为零表示轨道不在备用轨道组中。
    使用备用曲目的最常见原因是提供不同语言的相同曲目的版本。图 2-8 显示了几个轨道的示例。视频轨道的备用组ID为0,表示它不在备用组中(并且其语言代码为空;通常,视频轨道应具有相应的语言标签)。三个声音轨道具有相同的组ID,因此它们形成一个替代组,并且字幕轨道具有不同的组ID,因此它们形成另一个替换组。轨道在实际的QuickTime文件中不相邻;这只是示例轨道字段值的列表。

    图 2-8 Example of alternate tracks in two alternate groups

  • Volume
    一个16位的定点值,表示该音轨的以多大的声音播放。 值1.0表示正常音量。

  • Reserved
    保留供Apple使用的16位整数。 将此字段设置为0。

  • Matrix structure
    与此轨道相关联的矩阵结构。 有关矩阵结构的说明,请参见图2-3。

  • Track width
    一个32位定点数,用于指定此轨道的宽度(以像素为单位)。

  • Track height
    指示此轨道的高度的32位定点数,以像素为单位。

Track Exclude From Autoselection Atoms

一些替代轨道包含除主要内容的直接翻译(或非翻译书写形式)之外的东西。评论轨道就是一个例子。这些轨道不应自动选择。在轨道中存在Track Exclude From Autoselection atom表示不应该自动选择该轨道。

这种轨道应该具有用户可读的名称,以帮助用户识别轨道的目的。这些名称存储在“trak” atom内的user data('udta')atom内的一个或多个轨道名称('tnam')atom中,每个atom被翻译成不同的语言。

Track Exclude From Autoselection atom的类型是'txas'。这个atom,如果使用,必须在“tkhd” atom之后的某处。

Track Exclude From Autoselction atoms包含以下数据元素。

  • Size
    一个32位整数,指定track exclude from autoselection atom中的字节数。这必须是8,因为此atom必须不包含数据。
  • Type
    标识原子类型的32位整数;此字段必须设置为“txas”。

Track Aperture Mode Dimension Atoms

QuickTime Movie中的视频轨道可以通过图像描述扩展发出清晰的光圈和像素宽高比信息。清洁光圈定义要显示的编码像素的部分。像素宽高比是编码像素的宽高比。概念上,基于像素高宽比对编码像素进行解压缩,拉伸(或收缩),并且根据清洁孔径裁剪额外像素。

📝 注意:QuickTime轨道在track header dimensions中定义其内容的简单尺寸。在没有轨道孔径模式维度原子的情况下,轨道头部中的尺寸用于所有模式。

考虑到这种上下文,记录在图像描述中的尺寸定义了编码像素(编码尺寸)的尺寸。实际显示的是应用像素宽高比和净光圈(显示尺寸)的结果。

尽管应用清洁孔径和像素宽高比的结果是用于最终显示的,但是存在为了各种不同的有用的目的而显示存在于内容中的所有像素。解析QuickTime影片的读者需要允许这些不同显示模式的信息,以提供这种灵活性:

  • Clean Mode
    在此模式下,清洁光圈和像素宽高比都会应用。轨道的尺寸等于纯净光圈尺寸,其等于显示尺寸(具有一致的内容)。
  • Production Mode
    此模式适用像素宽高比,但不适用于清晰光圈。以正确的纵横比呈现图像,但是将呈现存在于源材料中的图像之外的额外像素。轨道尺寸等于应用像素宽高比的结果。
  • Classic Mode
    此模式显示图像,而不应用像素宽高比或清晰光圈。使用track header dimensions来显示图像,这意味着如果编码的维度不同,则解压缩的图片被缩放到track header dimensions。
  • Encoded Pixels
    在该模式下,编码像素完整显示。在此模式下,轨道尺寸等于编码尺寸。不进行缩放或变换。

这些呈现模式中的每一者所需的信息在optional track aperture mode dimensions atoms中表示。

📝 注意:在QuickTime 7之前构建的旧应用程序将继续使用存储在轨道header中的dimension值。

Track Aperture Mode Dimensions Atom

一个container atom,其以三个所需atom的形式存储用于视频校正的信息。 该atom可选地包括在轨道atom中。 Track Aperture Mode Dimensions atom的类型是“tapt”。

*** 图 2-9*** 显示了track aperture mode dimensions atom的布局。

图 2-9 The layout of a track aperture mode dimensions atom
  • Size
    一个32位整数,指定track aperture mode dimensions atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“tapt”。
  • Track Clean Aperture Dimensions atom
    请参阅Track Clean Aperture Dimensions atom
  • Track Production Aperture Dimensions atom
    请参阅Track Production Aperture Dimensions atom
  • Track Encoded Pixels Dimensions atom
    请参阅Track Encoded Pixels Dimensions atom
Track Clean Aperture Dimensions Atom

这个atom携带轨道的clean aperture的像素尺寸。 track clean aperture dimensions atom的类型是'clef'。

图 2-10 显示了track clean aperture dimensions atom的布局。

图 2-10 The layout of a track clean aperture dimensions atom.jpg

  • Size
    一个32位整数,指定track aperture mode dimensions atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“clef”。
  • Version
    该atom版本的1字节规范。
  • Flags
    为atom标志保留的三个字节。
  • Width
    32位定点数,用于指定track clean aperture的宽度(以像素为单位)。
  • Height
    32位定点数,用于指定track clean aperture的高度(以像素为单位)。
Track Production Aperture Dimensions Atom

该atom携带轨道的production aperture的像素尺寸。 track production aperture dimensions atom的类型是“prof”。

图 2-11 显示了track production aperture dimensions atom的布局。

图 2-11 The layout of a track production aperture dimensions atom
  • Size
    一个32位整数,指定track aperture mode dimensions atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“prof”。
  • Version
    该atom版本的1字节规范。
  • Flags
    为atom标志保留的三个字节。
  • Width
    一个32位定点数,用于指定track production aperture的宽度(以像素为单位)。
  • Height
    32位定点数,用于指定track production aperture的高度(以像素为单位)。
Track Encoded Pixels Dimensions Atom

该atom携带轨道编码像素的像素尺寸。 track encoded pixels dimensions atom的类型是'enof'。
图 2-12 显示了这个atom的布局。

图 2-12 The layout of a track encoded pixels dimensions atom

  • Size
    一个32位整数,指定track aperture mode dimensions atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为'enof'。
  • Version
    该atom版本的1字节规范。
  • Flags
    为atom标志保留的三个字节。
  • Width
    32位定点数,指定以像素为单位的轨道编码像素尺寸的宽度。
  • Height
    32位定点数,指定以像素为单位的轨道编码像素尺寸的高度。

Clipping Atoms

Clipping atoms指定movie和轨道的剪辑区域。 Clipping atom的atom类型值为'clip'。

图 2-13 显示了这个atom的布局。

图 2-13 The layout of a clipping atom

Clipping atoms包含以下数据元素。

  • Size
    一个32位整数,指定此clipping atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“clip”。
  • Clipping region atom
    请参阅Clipping Region Atoms。

Clipping Region Atoms

Clipping Region Atoms包含指定clipping region的数据,包括其大小,边界框和区域。 Clipping region atoms具有atom类型值“crgn”。

Clipping region atom的布局如图 2-13 所示。

Clipping region atom包含以下数据元素。

  • Size
    指定此clipping region atom中的字节数的32位整数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“crgn”。
  • Region size
    region size,region boundary box和clipping region data字段构成QuickDraw区域。
  • Region boundary box
    region size,region boundary box和clipping region data字段构成QuickDraw区域。
  • Clipping region data
    region size,region boundary box和clipping region data字段构成QuickDraw区域。

Track Matte Atoms

Track matte atoms用于在显示轨迹图像时可视地混合轨迹图像。

track matte atoms的atom类型值为'matt'。

图 2-14 显示了track matte atoms的布局。

图 2-14 The layout of a track matte atom

track matte atoms包含以下数据元素。

  • Size
    一个32位整数,指定此track matte atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“matt”。
  • Compressed matte atom
    实际的无光泽数据。有关详细信息,请参阅Compressed Matte Atoms for details。

Compressed Matte Atoms

Compressed matte atom指定图像描述结构和与特定matte atom相关联的遮罩数据。 Compressed matte atoms的atom类型值为'kmat'。

Compressed matte atoms的布局如图 2-14所示。

Compressed matte atoms包含以下数据元素。

  • Size
    一个32位整数,指定此compressed matte atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“kmat”。
  • Version
    该compressed matte atom的版本的1字节规范。
  • Flags
    标志的三个字节的空间。 将此字段设置为0。
  • Matte image description structure
    与该遮片数据相关联的图像描述结构。 图像描述包含控制如何使用遮罩数据的详细信息。 有关图像描述的详细信息,请参阅Video Sample Description
  • Matte data
    压缩的matte数据,其长度可变。

Edit Atoms

您可以使用edit atoms来定义要用于为movie建立轨道的媒体部分。 edit本身包含在edit list table中,该表由每个段的时间偏移量和持续时间值组成。 Edit atoms的原子类型值为'edts'。

图 2-15显示了edit atom的布局。

在没有edit list的情况下,轨道的呈现立即开始。 空的edit用于补偿曲目的开始时间。

📝 注意:如果缺少edit atom或edit list atom,则可以假定轨道使用整个媒体。

图 2-15 The layout of an edit atom

Edit atoms包含以下数据元素。

  • Size
    一个32位整数,指定此edit atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“edts”。
    -Edit list atom
    请参阅Edit List Atoms。

Edit List Atoms

使用edit list atom(如图 2-15 所示)可将电影中的时间映射到媒体中的时间,最终映射到媒体数据。 此信息以edit list table表中的条目的形式显示,如图 2-16 所示。 edit list atoms的atom类型值为'elst'。

edit list atoms包含以下数据元素。

  • Size
    一个32位整数,指定此edit list atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“elst”。
  • Version
    该edit list atom的版本的1字节规范。
  • Flags
    标志的三个字节的空间。 将此字段设置为0。
  • Number of entries
    一个32位整数,用于指定随后edit list atom中的条目数。
  • Edit list table
    32位值的数组,分组为每个包含3个值的条目。 图 2-16 显示了此表中条目的布局。
    图 2-16 The layout of an edit list table entry

    edit list table表项包含以下元素。
  • Track duration
    一个32位整数,以电影时间单位为单位指定此edit片段的持续时间。
  • Media time
    包含此edit片段的媒体内的开始时间(以媒体时间单位为单位)的32位整数。 如果此字段设置为-1,那么它是空编辑。 曲目中的最后一个编辑应该永远不是空白编辑。 电影持续时间和曲目持续时间之间的任何差异都表示为隐式空白编辑。
  • Media rate
    指定播放与此edit片段相对应的媒体的相对速率的32位定点数。 此速率值不能为0或负数。

Track Load Settings Atoms

Track load settings atoms包含指示如何在其电影中使用轨道的信息。 读取QuickTime文件的应用程序可以使用此信息更高效地处理电影数据。 track load settings atoms的atom类型值为'load'。

图 2-17 显示了这个atom的布局。

图 2-17 The layout of a track load settings atom

Track load settings atoms包含以下数据元素。

  • Size
    一个32位整数,指定此track load settings atom中的字节数。
  • Type
    标识atom类型的32位整数;此字段必须设置为“load”。
  • Preload start time
    一个32位整数,指定要预先加载的轨道片段在电影时间坐标系中的开始时间。与预载持续时间一起使用。
  • Preload duration
    一个32位整数,指定电影时间坐标系统中要预加载的轨道段的持续时间。如果持续时间被设置为-1,则意味着预加载段从预加载开始时间延伸到轨道的结束。当要播放电影时,由preload start time和preload duration值定义的轨道段中的所有媒体数据应当被加载到存储器中。
  • Preload flags
    包含控制预加载操作的标志的32位整数。只定义了两个标志,它们是互斥的。如果此标志设置为1,则track将被预加载,而不管是否启用。如果此标志设置为2,则只有在启用track时才会预加载track。
  • Default hints
    包含回放提示的32位整数。可以启用多个标志。通过将标志设置为1来启用标志。定义以下标志。
  • Double buffer
    此标志指示应使用双缓冲I/O播放曲目。此标志的值为0x0020。
  • High quality
    此标志指示轨道应以最高可能质量显示,而不考虑实时性能。该标志的值为0x0100。

Track Reference Atoms

Track reference atoms定义轨道之间的关系。Track reference atoms允许一个轨道指定它如何与其他轨道相关。例如,如果电影有三个视频轨道和三个音轨,track reference允许您识别相关的声音和视频轨道。track reference atom具有atom类型值“tref”。

Track reference是单向的,并从接收轨道指向源轨道。例如,视频轨道可以参考时间代码轨道以指示其时间代码被存储在何处,但是时间代码轨道将不参考视频轨道。时间码轨道(time code track)是视频轨道的时间信息的源。

单个轨道可以引用多个轨道。例如,视频轨道可以参考声音轨迹以指示两者是同步的,并且指示时间代码轨道以指示其时间代码被存储在何处。

单个轨道也可以由多个轨道引用。例如,如果声音和视频轨道共享相同的定时信息,则它们可以引用相同的时间代码轨道。

如果这个atom不存在,轨道不以任何方式引用任何其他轨道。 注意,track reference type atoms的阵列的大小被设置为填充track reference atom。 允许使用参考索引为0的轨道引用。 这表示没有参考。

有关Track References的更多信息,请参阅Track References

图 2-18 显示了track reference atom的布局。

图 2-18 The layout of a track reference atom

Track reference atom包含以下数据元素。

  • Size
    一个32位整数,指定此track reference atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“tref”。
  • Track reference type atoms
    包含轨道参考信息的track reference type atoms的列表。 接下来描述这些atom。

每个track reference atom定义与特定类型的轨道的关系。 参考类型意味着轨道类型。 表2-2显示了轨道参考类型及其说明。

表 2-2 轨道参考类型(Track reference types)

Reference type Description
'cdsc' The track reference is contained in a timed metadata track (see Timed Metadata Media for more detail) and provides links to the tracks for which it contains descriptive characteristics.Note: If the timed metadata track describes characteristics of the entire movie, there will be no track reference of type ‘cdsc’ between it and another track.
'chap' Chapter or scene list. Usually references a text track.
'clcp' Closed caption. In any track, this identifies a closed captioning track that contains text that is appropriate for the referring track. See Closed Captioning Media for more information.
'fall' In a sound track, this references a track in a different format but with identical content, if one exists; for example, an AC3 track might reference an AAC track with identical content. See Alternate Sound Tracks.
'folw' In a sound track, this references a subtitle track that is to be used as the sound track’s default subtitle track. If the subtitle track is part of a subtitle track pair, this should reference the the forced subtitle track of the pair. This is needed only if language tagging cannot be used. See Relationships Across Alternate Groups.
'forc' Forced subtitle track. In the regular track of a subtitle track pair, this references the forced track. See Subtitle Sample Data for more information.
'hint' The referenced tracks contain the original media for this hint track.
'scpt' Transcript. Usually references a text track.
'ssrc' Non-primary source. Indicates that the referenced track should send its data to this track, rather than presenting it. The referencing track will use the data to modify how it presents its data. See Track Input Map Atoms for more information.
'sync' Synchronization. Usually between a video and sound track. Indicates that the two tracks are synchronized. The reference can be from either track to the other, or there may be two references.
'tmcd' Time code. Usually references a time code track.

每个track reference type atom包含以下数据元素。

  • Size
    一个32位整数,指定此track reference type中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为表 2-2 中所示的值之一。
  • Track IDs
    指定相关轨道的轨道ID值(32位整数)列表。 注意,这是轨道ID值可以被设置为0的一种情况。atom中未使用的条目可以具有轨道ID值0。将轨道ID设置为0可以比删除引用更方便。

您可以通过从track reference type atom的总大小减去其头大小,然后除以轨道ID的大小(以字节为单位)来确定存储在track reference type atom中的轨道引用数。

Track Input Map Atoms

Track input map atoms定义如何解释从其非主要源发送到该轨道的数据。 “ssrc”类型的轨道引用定义了轨道的辅助数据源。 这些源提供在处理轨道时使用的附加数据。 track input map atoms具有atom类型值“imap”。

图 2-19 显示了track input atom的布局。 该atom包含一个或多个track input atoms。 注意,track input map atom是QT atom结构。

图 2-19 The layout of a track input map atom

每个track input map atom包含以下数据元素。

  • Size
    一个32位整数,指定此track input map atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“imap”。
    -Track input atoms
    指定如何使用输入数据的track input atoms的列表。

输入映射(input map)定义了所有轨道的辅助输入。 每个辅助输入使用单独的track input atom来定义。

每个track input atom包含以下数据元素。

  • Size
    一个32位整数,指定此track input atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“in”(请注意,开头前两个字节必须设置为0x00)。
  • Atom ID
    将该track input atom与其辅助输入相关的32位整数。 该字段的值对应于track reference atom中的辅助输入的索引。 也就是说,第一辅助输入对应于atom ID值为1的track input atom; 第二个到track input atom,atom ID为2,等等。
  • Reserved
    必须设置为0的16位整数。
  • Child count
    指定此atom中子元素数的16位整数。
  • Reserved
    必须设置为0的32位整数。

Track input atom又可以包含两种其他类型的atom:input type atoms和object ID atoms。 input type atom是必需的; 它指定如何解释数据。

input type atom包含以下数据元素。

  • Size
    一个32位整数,指定此输入类型atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为'ty'(注意,开头前两个字节必须设置为0x00)。
  • Input type
    指定要从辅助数据源接收的数据类型的32位整数。 表 2-3 列出了此字段的有效值。

表 2-3 输入类型(Input types)

Input identifier Value Description
kTrackModifierTypeMatrix 1 A 3 × 3 transformation matrix to transform the track’s location, scaling, and so on.
kTrackModifierTypeClip 2 A QuickDraw clipping region to change the track’s shape.
kTrackModifierTypeVolume 3 An 8.8 fixed-point value indicating the relative sound volume. This is used for fading the volume.
kTrackModifierTypeBalance 4 A 16-bit integer indicating the sound balance level. This is used for panning the sound location.
kTrackModifierTypeGraphicsMode 5 A graphics mode record (32-bit integer indicating graphics mode, followed by an RGB color) to modify the track’s graphics mode for visual fades.
kTrackModifierObjectMatrix 6 A 3 × 3 transformation matrix to transform an object within the track’s location, scaling, and so on.
kTrackModifierObjectGraphicsMode 7 A graphics mode record (32-bit integer indicating graphics mode, followed by an RGB color) to modify an object within the track’s graphics mode for visual fades.
kTrackModifierTypeImage 'vide’ Compressed image data for an object within the track. Note that this was kTrackModifierTypeSpriteImage.

如果输入对轨道内的对象(例如,子画面轨道内的子画面)进行操作,则obejct ID atom必须包括在track input atom中以识别对象。

object ID atom包含以下数据元素。

  • Size
    一个32位整数,指定此object ID atom中的字节数。
  • Type
    标识atom类型的32位整数; 此字段必须设置为“obid”。
  • Object ID
    用于标识对象的32位整数。

Media Atoms

Media atoms描述和定义轨道的媒体类型和样本数据。 media atom包含指定以下内容的信息:

  • 媒体类型,例如声音,视频或定时元数据
  • 用于解释样本数据的媒体处理程序组件
  • 媒体时间刻度和轨道持续时间
  • 媒体和曲目的特定信息,如音量或图形模式
  • 媒体数据引用,通常指定存储样本数据的文件
  • 样本表atom,对于每个媒体样本,指定样本描述,持续时间和与数据引用的字节偏移量

media atom的原子类型为“mdia”。 它必须包含媒体头(media header)('mdhd')atom,它可以包含处理程序引用(handler reference)('hdlg')atom,媒体信息(media information)('minf')atom和用户数据(user data)('udta')atom。

📝 注意:不要混淆media atom('media')与media data atom('mdat')。 media atom只包含对media data的引用; media data atom包含实际的媒体采样。

图 2-20 显示了media atom的布局。

图 2-20 The layout of a media atom

Media atoms包含以下数据元素。

  • Size
    一个32位整数,指定此media atom中的字节数。
  • Type
    标识atom类型的32位整数;此字段必须设置为“mdia”。
  • Media header atom
    此atom包含标准媒体信息。请参阅Media Header Atoms。
  • Extended language tag atom
    此atom包含描述媒体语言的扩展语言标记。请参阅Extended Language Tag Atom。
  • Handler reference atom
    此atom标识将用于解释媒体数据的媒体处理程序组件。有关详细信息,请参阅Handler Reference Atoms。
    注意,handler reference atom告诉你这个media atom包含的媒体类型,例如视频或声音。media information atoms的布局专用于解释媒体的媒体处理器。Media Information Atoms讨论了如何使用由苹果定义的视频媒体格式作为示例来将数据存储在媒体中。
  • Media information atom
    此atom包含特定于媒体类型的数据,供媒体处理程序组件使用。请参阅Media information Atoms。
  • User data atom
    请参阅User Data Atoms。
Media Header Atoms

Media header atoms指定媒体的特性,包括时间尺度和持续时间。 Media header atom的atom类型为“mdhd”。

图 2-21 显示了media header atom的布局。

图 2-21 The layout of a media header atom

Media header atom包含以下数据元素。

  • Size
    一个32位整数,指定此media header atom中的字节数。
  • Type
    标识atom类型的32位整数;此字段必须设置为“mdhd”。
  • Version
    一个字节,指定此header atom的版本。
  • Flags
    Media header标记的三个字节的空间。将该字段设置为0。
  • Creation time
    一个32位整数,指定(从1904年1月1日午夜起的秒数)media atom的创建时间。强烈建议使用协调世界时(UTC)指定此值。
  • Modification time
    一个32位整数,指定(从1904年1月1日午夜起的秒数)media atom的修改时间。强烈建议使用协调世界时(UTC)指定此值。
  • Time scale
    指示此媒体的时间刻度的时间值,即在其时间坐标系统中每秒通过的时间单位数。
  • Duration
    此媒体的持续时间以其Time scale为单位。
  • Language
    指定此media的语言代码的16位整数。请参阅Language Code Values for valid language codes。如果扩展语言标签也包括在媒体原子中,请参阅Extended Language Tag Atom以获取在此处使用的首选代码。
  • Quality
    一个16位整数,指定媒体的播放质量 - 也就是说,它适合在给定环境中播放。

To be Continue

译者注:
第一次翻译英文文档,纯手工翻译,难免出现错误,欢迎指正!感谢!
资料链接:[英文原文][Movie Atoms]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容