AAF协会规范

谁说我不能喝 提交于 2020-03-02 12:36:36

译者注:

翻译者说明

由于要操作AAF文件,虽然了解的AAF的操作方式,但是由于不理解商业软件如何读取AAF文件,则无法创造出达芬奇、Nuke等软件可以打开的AAF格式的文件内容。迫于对AAF内部对象理解问题。随即开展翻译。需要确定MasterMob与其他对象的关系。

原文pdf地址

Advanced Authoring Format (AAF) Object Specification v1.1

1 范围

本文档对高级创作格式(AAF)的视听素材和相关的元数据交汇,使用class模型定义符合创作范围的数据结构。把这些数据结构映射到文件(或者其他持久性存储中)是由其他AAF规范协会定义。

2 规范引用文件

本文通过参考下列规范文件所包含的规则构成本文档内容。对于时间引用,随后的修正,或者修改 在任何出版物都不适用。然而,根据本文文件的协议各方鼓励应用以下最新的标准文档。没有标注日期的参考文献,则适用于最后编辑的标准文档。
ISO/IEC 11578-1 – 1998, 信息技术开放系统互连远程过程调用 (RPC)附件一、通用唯一标识符
SMPTE RP224, SMPTE标签登记
IETF RFC 1738 – 统一资源定位器(URL)
IETF RFC 2396 – 统一资源标识符(URI)
ITU-R Recommendation BS.1196 (1995) (annex 2): "数字地面电视广播的音频编码"
SMPTE 320M – 多声道音频媒体的信道分配和级别
IETF RFC 2046 – 第二部分:MIME媒体类型
IETF RFC 2048 – MIME部分四:登记程序
EBU Tech 3285-2001 Wave格式规范,广播行业音频数据文件格式:版本1
EBU Tech 3285 补充3-2001规范广播波形格式,一种格式的音频数据文件在广播中:补充3:峰值信封块的规范
ETSI TS 102 154 – 数字视频广播(DVB)基于MPEG-2传输流和主要分布应用贡献音频编码的实施指南和视频的使用
Tech 3285 Supplement 3-2001 广播wave格式的规范,音频数据文件的格式

3 缩写、术语和符号的定义

3.1 缩写和术语

  • Abstract class(抽象类)
    一个不足以定义对象的类,对象必须属于这个抽象类的具体子类。
  • AUID
    16byte唯一标识,SMPTE 298M的通用标签,UUID或者GUID。
  • CDCI
    CDCI:Color Difference Component Image(编者也不好翻译)
  • Class
    对象的类型,具有相同的属性、关系和语义
  • Class hierarchy(类的层次结构)
    一组类中的子类和超类的关系规范
  • Concrete class (具体类)
    一个足以充分定义对象并可以以对象的方式进行实例化。
  • Edit Rate(编辑帧速率)
    在一个Track(轨) 定义当前时间的单位的有理数。编辑帧速率是经过一秒的有理数时间。在Track(轨道)上描述的essence(原始素材),编辑帧速率通常选择每秒作为编辑单位。
  • Edit Unit(编辑单位)
    1/(Edit Rate)的一段时间
  • Editable Unit(可编辑单位)
    可以编辑的最小部分,例如一个字段或者帧
  • Essence( 原始素材)
    视频、音频和数据流,将会包含在AAF描述中。
  • Inheritance(继承)
    定义类之间的关系机制,子类进程他的超类的属性、关系和语义。
  • Interleaved-essence (交错式原始素材:常见电视视频)
    一种原始素材格式,将两个或者两个以上的频段音频或者视频数据混合在单一素材流中。
  • Metadata
    如何使用原始素材的描述或者信息。
  • Mob
    一块原始材料指定了Metadata,并具有全局的唯一标识。
  • MobID
    Mob的唯一标识。
  • Object
    类的实例化
  • Package
    非传统的Mob,用于MXF
  • RGBA
    Red Green Blue Alpha红绿蓝透明通道
  • Sample Rate
    音频:原始素材的采样率。视频:字段或者帧速率
  • Strong reference
    对象和对象之间的关系,其实一个对象是另一个对象的所有者。一个对象只能在同一时间拥有一个对象。一个强大的引用定义了包含逻辑,所拥有的对象在逻辑上包含所拥有的对象。
  • Sub-class
    定义为具有相同属性、关系和语义的类,被称作超类,并可以有额外的属性、关系和不存在超类的语义。
  • Super-class
    其他类可以作为他的子类
  • UML
    统一建模语言
  • Unicode
    字符编码,允许广泛的文字和表意文字,来表示作为大部分的最主要的语言。
  • Weak reference
    一个对象之间的关系,其中一个对象有一个参考的第二个对象; 第二个对象是唯一标识的。与一个强大的参考对比,一个弱引用指定关联关系,但不指定所有权。一个对象可以是来自多个对象的弱引用的对象。

3.2 符号

AAF对象描述使用UML类图来描述类的关系。UML类图显示类名、属性、属性类型、对象引用和继承关系。下图提供了示例用于AAF对象规范的UML类图。

输入图片说明

4 介绍

4.1 面向对象信息交换

高级创作格式(Advanced Authoring Format:AAF)以面向对象的机制提供了多种媒体信息交换。以面向对象方式交换有以下好处:

  • 对象提供了框架包含和标定的不同种类的信息。
  • 在对待不同属性的对象可以以相同的方式共享属性。
  • 当信息变得非常复杂时,对象提供以结构化的方式描述的机制。

4.2 Header对象

交换文件包括:

  • 用于AAF文件的MetaDictionary类定义
  • Header对象并包含对象间的关系
  • Mob和所具有的对象
  • Essence data原始素材

在一个交换文件中,以Header对象和对象间的关系访问Mob和Essence data的实用信息。
在交换文件中,每个对象属于一个类。类定义了如何使用对象,存储的信息种类。对象包含一组属性,每个属性的名字、类型、值。对象类定义定义有哪些属性。
规范定了类的层次,哪些子类继承超类的属性。几乎所有类是 InterchangeObject类的子类,除了在MetaDictionary的哪些MetaDefinition的子类。
在交换文件中,应当有一个Header对象。在文件中,Header对象拥有所有其他对象。所属权关系在StrongReferenceStrongReferenceVectorStrongReferenceSet属性类型中指定。 在AAF文件中所包含的对象如下图所示:
输入图片说明 ##4.3 Mobs Mob是具有唯一标识并包含Metadata(元数据)。Mob描述essence data是怎样的格式或者如何把多帧的essence data绑定合成。Mob是常见用于描述多种不同类型的essence data:视频、声音、静帧、文字、动画、图形和其他格式。
Mob有name和描述,但是主要以唯一标识作为主要识别的方式,唯一标示叫做MobID。
Mob可以描述一种以上的essence类型。举例,Mob可以有音频、视频、静帧和时码数据。Mob可以有一个或者多个Slot。每个Slot仅仅描述一种Essence data类型。举例,一个Mob有两个Slot描述音乐、一个Slot描述视频、三个Slot静帧、两个Slot时码信息。

Mob类型 功能
CompositionMob 描述整体决策,如何组合或修改essence:Essence data的顺序、位置组合或者修改的effect(特效)
MasterMob 收集并可能进行同步关联的essence data;提供间接方式访问essence data的独立存储细节
File SourceMob 提供essence data的直接访问和在计算机文件上的数字格式描述
Physical SourceMob 描述物理介质如录像带、胶片

CompositionMob描述创作编辑和排列决策,结合个性化的二进制描述 essence data。Composition Mob可以描述如下创作决策:

  • 包含"Also Sprach Zarathustra"的音频并伴随着庞大数据内容的"Stanley Kubrick film 2001: A Space Odyssey "视频轨道\
  • 在"Alfred Hitchcock's thrillers"通过剪辑削减镜头间的节奏
  • 不同的静帧合成为一个单一图片
  • 产生一个视频图像看起来发送在水池下的的特效

MasterMob提供与CompositionMob之间的联合,,描述创作决策,和SourceMob,描述和识别essence data。MasterMob隔离了CompositionMob 如何存储Essence data的详细信息。
MasterMob可以描述成:

  • 数字版本Essence data的音频和视频如何同步
  • 所包含的多种数字essence data对象如何代表不同的数字版本 相同的原始Essence data - 版本可能会在不同格式不同压缩形式的存储。

File SourceMob描述数字essence data格式,提供访问机制。File SourceMob有如下信息:

  • 存储数字essence data格式,举例WAVE和AIFC格式存储音频,CDCI和RGBA存储视频。
  • 数字音频视频的采样帧数
  • 使用何种压缩
  • 数字图像信息的像素数量和宽高比

Physical SourceMob描述现实当中的录影带和胶片电影的信息。同样包含时码(timecode)和edgecode信息,用于查找录影带或者胶片的段落,符合相关数字essence data帧的段落。

4.3.1 Mob的不变性

MobID是全局唯一的。在AAF文件中的两个Mob应当不会有相同的MobID。AAF文件中Mob具有同一MobID,在其他AAF文件具有下列条件:
Mob是和其他Mob重复
Mob针对其他主题内容进行限制性的修改版本,Mob的类型确定了修改的类型,修改后依旧能保持原有身份:

  • File SrouceMob的描述essence的格式信息是不变不可修改的。修改File SourceMob仅限描述性信息和essence发生创建或者导出。
  • 当创建Essence或者把Essence以另外一种形式导出,逐步的会需要创建或者导出essence。举例来说,SourceMob可以修改essence的附加描述。预先创建有这样价值,引用可以分割essence成为一段一段的。
  • MasterMob将会做出替换SourceMob的引用修改,当切换到其他SourceMob或者插入替换的SourceMob。受限制的替换SourceMob修改,应当能够代表和以前SoureMob相同的物理媒体引用。
  • CompositionMob可以以任何方式进行修改。

4.4 MobSlot

Mob会有一个或者多个MobSlot。每个MobSlot描述将会被引用的essence的元素。MobSlot将会有整数标识,叫做SlotID。
每种MobSlot明确定义了Essence data和时间的关系。规格说明书当前定义了如下种类的MobSlot:

  • StaticMobSlot
  • TimelineMobSlot
  • EventMobSlot

StaticMobSlot所描述的Essence不会随时间发生变化。StaticMobSlot将会描述静帧图片或者其他静态资源例如文本。
TimelineMobSlot描述需要修改变化的essence,这种变化是可预测的或者不断随时间推移发生变化。举例数字音频、视频、胶片是固定的。会随时间变化的例子如帧速率,模拟的音频。
EventMobSlot描述Essence,与时间是不可预测相关联。GPI(通用目的接口)(译者注:有些像GPIO,嵌入式的通用通讯接口)事件,已经能够标记出不定期会发生的事件。

Slot类型 功能
StaticMobSlot 描述essence data并且和时间没有特定关系。例如静帧、静态文本
TimelineMobSlot 描述固定或者连续的关系随时间变化,例如音频、胶片、视频、时间码、edgecode
EventMobSlot 描述essence data,对时间有不规则关系的,例如GPI事件和已经标记的特定时间

CompositionMob或者MasterMob,PhysicalTrackNumber是输出MobSlot应当在什么路径上进行播放的频道编号。在SourceMob,PhysicalTrackNumber是MobSlot描述原始素材在Track的编号。
**注意:**通常情况下,每种类型的essence data定义在Mob中,PhysicalTrackNumber起始为1,并逐渐递增。音频轨道,PhysicalTrackNumber可以有多个重复的轨道。

4.5 Component(组件)

Component是essence的元素。在TimelineMobSlot的Component(组件)是表达创作单位的是持续表达。创作单元和时钟的关系,是由TimelineSlotMob的创作速率决定的。组件保证每一个创作单元是持续的。
Component的类型值是由Component的数据类型决定并提供的。Component组件符合essence基本的数据类型,例如:声音或者帧,或者向timecode一样的metadata的类型。
Component(组件)类有两个子类:Segment(段)和Transition(过渡)。
Segment(段)类型子类包含以下内容:

  • SourceClip是在另一个Mob中引用Slot的一部分;举例在TimelineMobSlot中的SourceClip描述成视频数据
  • Sequence(序列):指定Component(组件)按照设置顺序进行排列 ;在TimelineMobSlot,Component在连续的时间上进行排列
  • OperationGroup是指定两个或者多于两个的Segment(段)使用特殊效果进行组合,或者Segment使用特殊效果发生了修改。
  • Filler(空白填充)定义了一段时间未指定内容。

Transition(过渡)是导致前段(Segment)和后段在时间组装重合。Transition对象应当属于一组Sequence序列的Component组件,应当是在前段Segment和后段Segment。

4.6 Mob间的引用

Mob可以引用其他Mob来表示source或者指向essence。Mob引用其他Mob是通过持有SourceClip对象。SourceClip对象于Mob是弱引用,SourceClip使用MobID作为确定标识的值。应当确定MobSlot里面的引用的Mob的SlotID值。SourceClip当引用TimelineMobSlot,应当指定offset偏移时间与所引用的TimelineMobSlot。
译者备注:offset变量出现在pyaaf的TimelineMobSlot的函数中

在CompositionMob中,SourceClip指定MasterMob使用MobID。用于代表一块数字essence data。MasterMob提供间接层,数字essence data和对象的相互引用。
在File SourceClip中,SourceClip指定Physical SourceMob的MobID。举例视频 File SourceClip有SouceClip指定Physical SourceMob描述一般数字视频数据的录像带。
在Physical SourceMob中,SourceClip指定MobID前,先确定物理源的媒体介质。举例:录像带SourceMob,SourceClip指定Physical SourceMob描述用于一般录像带的电影。
如果当前没有essence,SourceMob应当包含指定SourceID为0、SourceSlotID为0并且在TimelineSlot的StartTime值为0的SourceClip。
总之,Mob不仅仅描述essence data,但是通过相关间的关系,描述他们如何从essence data来源于另外一个essence data。 下图举例说明在CompositionMob中的SourceClip引用MasterMob。MasterMob引用File SourceMob,磁带的SourceMob。磁带SourceMob引用电影SourceMob。
输入图片说明

4.7 File SourceMob和EssenceData对象

File SourceMob描述essence,并且用来访问essence,但是File SourceMob并不拥有essence。本文档essence的描述和存储分离是由于以下原因:

  • 音频和视频数据或者其他的esscense的文件是非常大的,必然存储到独立的文件中,该文件在不同的磁盘、网络、或者暂时删除到空闲的磁盘空间。File SourceMob对于essence的分离,提供给持续创作更多的灵活存储选择,使用相同的接入机制。
  • 音频和视频数据、或者其他essence将会在一个或者多个CompositionMob中出现,这些CompositionMob是可以在不同文件。File SourceMob对于essence的分离意味着仅仅在File SourceMob中esscence的信息需要被重复肤质。

在File SourceMob描述的essence可以存储在三个位置:

  • 存储在EssenceData对象在同一文件中以SourceMob
  • 存储在EssenceData对象在不同文件,必须包括复制的SourceMob
  • 存储在非包装类的数据文件中

MobID连接着File SourceMob和essence,如果MobID存储在EsscenceData对象中,则负责把essence连接File SourceMob。File SourceMob和与它相对应的EssenceData对象具备相同的MobID值。由此ContentStorage对象(内容存储对象)在文件中具有所有的Mobs和EssenceData对象,应用程序可以通过搜索File SourceMob相匹配的MobID查找EssenceData对象。

如果essence并非存储在包装文件而是存储在数据文件中,则数据文件以位置作为确认essence的描述。在某些情况下,原始数据文件格式可以存储MobID的机制。在这些情况下,应用程序可以通过使用关联的File SourceMob的MobID,关联数字essence数据。当数字essence数据没有存储MobID的机制,交换文件使用专门的locator对象去连接File SourceMob和数字essence数据。如果essence没有存储MobID,将会难以识别文件的移动与重命名。

4.8 Mob中的静态序列帧Essence

静态序列帧essence描述成StaticMobSlot。静态序列帧essence与时间无关;因此,StaticMobSlot没有edit rate(编辑速率)并且这些对象不会指定时间。
StaticMobSlot中,SourceClip通过特定的MobID和SlotID引用另外一个StaticMobSlot,但不会在TimelineMobSlot中描述时间偏移或者连续一段时间。
Composition Mob仅仅能够指明StaticMobSlot编辑的决策,哪些静态序列帧参与了合成。下图4,描述了静态序列帧和静态部分的典型的Composition Mob的合成。静态序列通过静态特效组合在一起,把独立的序列帧进行转换,然后组成一个唯一的序列帧。

输入图片说明

4.9 Mob中随时间变化的视频音频Essence

音频essence与视频essence是在TimelineMobSlots中表现的。许多Slot表现时间变化的数据,数据在时间变化的对应关系。举例来说,NTSC视频的帧速率近似为每秒29.97帧。每个TimelineMobSlot指定编辑速率,定义时间单位的对象称为particular(特殊的)TimelineMobSlot。编辑速率进行合理制定(实际数字为两个整数:分母和分子)。举例来说,NTSC视频的编辑速率通常是按照30000/1001作为编辑速率的。

在TimelineMobSlot中,在另外的Mob中的TimelineMobSlot中的SourceClip的引用通过指定这些引用的MobID和TimelineMobSlot ID号,并通过指定 TimelineMobSlot的片段并添加时间偏移量和持续时间。举例来说,在一个创作Mob中的SourceClip能够通过引用essence数据的MasterMob片段来引用一段音视频数据。

简单的Composition Mob具有音频和视频的TimelineMobSlots,每个TimelineMobSlot有一个队列的SourceClip。这个队列指定的SourceClip播放时必须一个接一个的连续。在Compostion Mob中的每个TimelineMobSlot与其他有限时间的TimelineMobSlot同时播放。
如图5显示一个CompositionMob和一些TimelineMobSlot的结构。

缺少图片

在序列中的每个SourceClip 确认播放的 音视频数据和指定时间长度,但是不会指出在 Composition的哪个位置播放。在序列中的起始的段落依赖之前的段落的数量和时长。SourceClip可以看作是一段由录像带或电影段落的拼接结果。可以通过听音频或者看视频的方式仔细剖析段落,但是在序列中没有前置段落就无法知道段落在最终成品中出现在哪里。

123

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!