MXF是英文Material eXchange Format(素材交换格式)的缩语。MXF是SMPTE(美国电影与电视工程师学会)组织定义的一种专业音视频媒体文件格式。MXF主要应用于影视行业媒体制作、编辑、发行和存储等环节。SMPTE381M(把MPEG格式的内容封装成mxf),SMPTE383M(把DV格式的内容封装成mxf)等,它是一个外壳格式 而不是压缩格式, 所以并不能保证每一款MXF文件 都能被任何一种解码器识别。
MXF是松下、索尼、佳能等专业数码摄像机中常见的视频格式,但在计算机以及移动播放设备的支持率不高。在MXF中,XDCAM要求至少为4声道。所以如果输入文件的音频流小于4声道,输出文件依然会被标记为4声道。
mxf包含frame打包方式和clip打包方式。
sony和松下都使用single item,single package模式,即op1a,一个mp,一个fp,通常用户广电流程。另一种模式是atom,通常用于影视后期流程。
1 mxf文件结概述
MXF文件包括三个主体部分:文件头、文件体和文件尾。
1)文件头提供文件的整体信息,包括用于解码文件中所有视音频数据的解码器列表等。
2)文件体由存储在要素容器中的视音频数据组成,来自不同数据轨(如视频、音频和时码)的要素容器可能交错和分离地存储在文件体中。
3)文件尾用以结束一个MXF文件,包括一些在产生文件头时还不确定的信息,如文件的视音频长度等,文件尾的信息在某些场景中常常被忽略。
MXF文件也可包含一个可选的索引表(Index Table),该索引表可用于将基于采样的索引(如时码)快速换算到对应的要素容器在<spanlang="en-us>">MXF文件中的偏移地址,以实现视音频的快速预览和定位。该索引表可分段存储,可位于基本数据段之前或之后,也可分插到基本数据段中间。
MXF文件的所有数据都采用Key-Length-Value(KLV)进行编码以获得格式的灵活性和可扩展性,KLV编码标准定义在SMPTE 336M中。实际上MXF文件就是若干连续KLV数据包的序列(除了可选的RUN-IN包)。
Key:16字节的标识符。
Length:数据(Value域)长度。BER(basic encoding rules )编码方式,如83 00 00 88。
它使用可变长的字节来表示非常宽的长度范围,该域总是按MSB(高字节优先)编码,如果第一个字节的bit7为0,那么低7位代表了0~127范围的长度,如果bit7为1,那么低7位代表长度域的字节个数。
Value:KLV单元中包含的数据
文件解析工具:MXFExpressAndMXFDesktop_120 和 MXFInspect
2 mxf文件结构
MXF文件的逻辑模型是一种基于对象的数据结构,主要由头部元数据中的结构元数据定义。结构元数据主要分为两类,一类是与实践特性有关的结构结构元数据包(Structural Metadata Package),一类是与素材或素材容器的特征参数相关的描述符(Descriptors)。每个结构元数据包有1个或多个轨迹(Track)组成,每个轨迹是一段具有起始时间点、编辑速率的时间线,由一个具有一定持续时间的序列(Squence)组成,每个序列又由1个或多个源片段(SourceClip)组成。包(Package)、轨迹(Track)、序列(Squence)、源片段(SourceClip)通过UUID相互引用。
顶层文件包中的每一个轨迹分别对应内容容器中不同的类型并有相应的描述符描述素材的特征信息,如像素、采样率、画幅比、声道数、比特数等。素材包通常为文件的输出时间线,确定在播放或使用时文件中哪个内容容器中的哪些内容被播放,以及这些内容如何同步。素材包中的源片段通过UUID引用,链接到顶层文件包中的某个轨迹。而素材元素元数据(EssenceContainerData)将顶层文件包和具体的素材容器及相应的索引表相互关联起来。
material package故事版素材,source package实际含有源素材。