数字电视制播设备间的文件交换格式

在现今的数字电视演播室中,设备之间基本上采用信号流连接方式,如SDI、STDI、模拟YUV、VBS等信号流。在非线性编辑系统和播出系统与服务器之间的连接,还有基于MPEG-2传输流等的信号连接方式。基于信号流连接方式的主要特点是,传送时可以同时播放和处理。但是,以流方式传送的数字信号,元数据被放在场消隐期间传送,在信号切换时元数据会丢失。

  在以媒体资产管理系统为核心的数字制播环境,一是需要以数据文件进行存储、迁移和交换,并使用丰富的元数据,元数据要和视/音频数据捆在一起传送和存储;二是基于计算机平台的视/音频处理设备越来越多,以文件传输视/音频及元数据是这些设备之间最有效的数据传输方法;三是文件传输方式允许所有相关数据被打包后一起传送,非常灵活;四是基于文件传输允许大量使用IT设备,文件可以在不同速率的广域网和局域网中交流,文件的调用速度可以适应不同的通道带宽;五是文件交换不会引起图像质量的下降。

  基于数据的传输标准尚不完善备。现在互联网上应用最广泛的文件传输协议是FTP(File Transfer Protocol),它用于文件上/下载,允许文件在传输中断后续传,传输过程不需要人工干预,非常适合非编系统的素材交换。一些视频服务器和录像机也采用FTP作为传输和复制的工具。但是,采用FTP需要双向网络支持,而且传输时不能同时播放和处理。

  从AV平台过渡到IT平台,要把AV素材数据化,使元数据处理系统化,做到文件无缝交换,并支持流和文件两种方式。基于这种需求,MXF、GXF和AAF文件格式应运而生。MXF(Material eXchange Format)为“素材交换格式”,主要用于设备间的文件交换并支持简单的编辑功能;GXF(General eXchange Format)为“通用交换格式”,主要用于存储文档的交换;AAF(Advanced Authoring Format)为“先进制作格式”,支持复杂、灵活的编辑功能。


MXF格式

  MXF是专业MPEG论坛(Pro-MPEG Forum)制定和推广的一个开放的文件格式,目标是解决节目制作系统中不同环节的设备间视/音频节目素材和相关数据及其元数据的交换。

MXF的特点

  (1)MXF是音/视频/元数据的打包结构,文件本体可以是多种视/音频格式,包括元数据。MXF对于任何素材和节目单元(数字音/视频、附加数据或元数据)的传输,不必考虑其格式和内容,将这些节目单元作为一个实体,简单地放入文件包内,通过网络传输,并且可以通过文件名检索源文件。MXF符合SMPTE 336M KLV数据编码协议。

  (2)文件在传输过程中可以直接播放。以往只有以数据流方式传输文件时,才能在传输过程中同时播放。现在以文件交换格式传输视/音频时,在服务器录入文件的过程中,也可以播放其内容。由于内容实体在文件中以播放顺序排列,文件中重复分布再同步信号,文件头数据重复出现在其它部位和文件主体部分,即使传输中断,时钟也能再次锁定,能从文件任意部分开始解码。

  (3)元数据得以保留。用MXF传输视/音频时,元数据与视/音频捆在一起传送,元数据与有效负荷同样用于说明文件的实体功能。

MXF数据格式

  简单类型

Open in new window


  如图1所示,文件头包含文件的总体信息,说明文件内有什么内容及其安排方式,称为结构型元数据,还有可选的用户定义描述元数据。文件体有一内容容器,用于传输隔行扫描的视/音频数据,以及部分元数据。

  复杂类型

Open in new window


  MXF数据格式的复杂类型可包括索引表,如图2所示。索引部分包括部分元数据和文件参数,用于文件访问,指示文件体内包括的几个部分:用于流传输中断后再恢复的信息;用于区分场景或片段的信息;用于区分不同场景类型的信息。文件体部分占整个文件的99%以上,MXF采用普通容器(Generic Container,GC)作为文件本体的中间容器,所有视/音频流和元数据都装入GC中。GC由系统项目、图像项目、声音项目和辅助数据项目组成。最基本的项目是系统项目,它含有视/音频流和元数据处理的详细参数。要求帧精确元数据(如时间码、UMID等)也存储在系统项目内。如果元数据需要很大的空间,可利用辅助项目传送额外的元数据。

  KLV编码

  MXF采用KLV(Key Length Value)编码(SMPTE 336M标准)对元数据和内容打包。KLV的数据结构分为KEY、LENGTH和VALUE三部分,见图3。

Open in new window


  Keys为16B SMPTE标准化通用标签(Universal Labels)。KLV项目(Items)可分组放入各个数据集(Set),数据集内的Local Keys为2B长,其基本目录由SMPTE预先确定;其它在文件内定义。Local Keys指明:通用识别符(Universal Identifier,UID)是另一个集的参考,还是识别这个单独集的标签。

  识别符ID和参考

  MXF的UID包括:16B通用标签,如KLV的Key标签;16B通用唯一识别符(Universally Unique ID, UUID),用于识别特殊数据集、指向其他集、产生识别符;32B唯一素材识别符(Unique Material Identifier, UMID),用来识别一些实体元素及其有关的元数据集(Metadata Sets)。

  MXF的元数据集有两种形式:一种是一对一的描述,ID即是该数据集自己的识别符,例如规定一个视频轨数据集有描述自己的元数据;另一种是一个数据集的ID元数据集嵌入其他元数据集,它需要以其他元数据集做参考。

  时间线轨的概念

  MXF对文件中的每个部分都采用时间线轨(Time Line Track)的概念,实体内容和元数据的分段都挂在一个虚拟的时间线上,通过元数据集定义:识别和标签轨、编辑等级和轨的持续期、指向其它元数据集和与这个轨相关联的实体内容之容器。时间线轨上有与视频轨对应的时间码。如图4所示,挂在时间线轨上的元数据把元数据轨和实体轨关联起来。这个描述方案称为DMS-1,基于SMPTE和EBU的元数据定义,而不同于MPEG-7。

Open in new window


  MXF打包封装的一个输出文件可能涉及其他源文件。MXF采用素材包和文件包的概念传送使用文件包,编辑时通过文件包的映射形成素材包。素材包内含描述编辑最后输出的元数据。文件包含有描述素材源的元数据,有一个指向基本内容的最终指示器。

  操作模式限定了文件组成的复杂度:单一实体型文件只有单一的实体片断;文件内有多种不同源片断的串接,文件内的节目交替出现。

  编辑时将文件包映射到一个时间线上组成素材包。图4中,简单模式的素材包是由单个文件包构成的单一素材源数据段;复杂模式的素材包含多个文件包编辑成的多个素材源数据段,即多个文件包映射在单一时间线上形成素材包。

  MXF文件主体的格式

  MXF的文件主体是DV、MPEG、非压缩视频素材和AES音频,对主体格式(Body Formats)的规定为:

  (1)将编码的素材实体分成可编辑的单元,典型的编辑单元即为一帧;

  (2)典型的可编辑单元包括:系统项目(System Item),例如URL、声音通道的号、时间码等;图像项目(Picture Item);声音项目(Sound Item);数据项目,例如字幕。每个可编辑单元内的项目都采用KLV编码,如图5所示。

Open in new window


MXF中的元数据

  MXF文件中的元数据如图6所示。元数据不仅用于记录时间码,而且可用于记录文件结构、文件体内容、关键字和题目、副标题、参考数字、位置、时间、数据和版本号等。

  SMPTE已通过了元数据说明与分级的协议,以及包括唯一素材标识符(UMID)的KLV编码方案。

Open in new window


  在MXF文件的头部和本体内都可以包含文件的元数据,头部的元数据包括类似EDL的信息、内容识别元数据、场景或镜头元数据、描述元数据等。这些描述符都作为整体文件、镜头或场景的边信息。

  非线性编辑需要编辑MXF文件的头部元数据、本体元数据和素材。一般的编辑是采用中间格式,如易读的XML语言,非线性编辑首先用XML文件作为编辑描述输出,如图7所示。那些XML文件和AV流用来产生MXF文件。另外,存储在AV服务器中实体流和帧精确的元数据,在服务器中经SDTI-CP或i.Link接口复用或解复用。虽然MXF是文件交换格式,但在节目制作设备内也不必将MXF文件的内容转换为本地文件结构存储。因而,MXF输入/输出运作对于不同厂商的设备之间的互操作非常重要。

Open in new window


MXF编辑过程中元数据的操作

  素材获取过程是节目制作链产生元数据的第一步,如图8所示。例如,摄录一体机用UMID元数据记录传统的前向时间码(SMPTE12M),用于镜头识别的UMID元数据附加到每个镜头上。这些镜头素材(AV流和元数据)以MXF文件包形式采集到服务器上,文件包含有不同时间线的镜头素材。一旦这些MXF文件被存入服务器,即可对这些文件包进行非线性编辑,将文件包映射到单一的时间线上,用这个时间线来定义MXF素材包。

  非线性编辑加一些场景描述元数据,并产生EDL类的数据,这些都放在MXF文件的头部元数据中。编辑过程如此重复,直到产生最后完整的素材包,见图8。

Open in new window


  所有的文件包都在节目素材采集过程中产生,某些元数据(如镜头元数据)也附加到每个文件包上。非线性编辑器产生一个单一的编辑过程参考时间线,如图4。非线性编辑器可以根据镜头的分界线,在其时间线上独立地定义一些场景,也可以给每个场景附加元数据。最后的映射决定修改的EDL类数据,并存到MXF的头部元数据内。

  存储在AV服务器的音/视频实体与外部元数据库内的元数据联合使用过程如下:MXF的头部元数据被复制并存储到外部MXF数据库,所建立的数据包含搜索UMID(Keys);文件实体部分也含有UMID,UMID描述了外部元数据数据库和AV服务器中实体之间的同步联接,可用于联接MXF实体和外部元数据;然后,用户用外部数据库的UMID搜索AV内容,从AV服务器(存档系统)重新得到相应节目实体,见图5。外部元数据库也可以包含用户自定义的元数据。

元数据——通向IT平台的网关

  典型的基于IT的节目制作系统是:所有工作站和服务器都通过IP网络连接,所接收的素材都用MXF文件进行非线性存档,并与制作和播出系统共享。所有MXF文件也可传送到其他部门或演播室再应用。MXF/AAF技术和元数据是这个系统的基础。元数据元素UMID是MXF/AAF文件与大量外部元数据链接的要素。UMID详细说明了逐帧或逐个场景识别文件中所含节目素材的方法,犹如把打包的节目片断与所关联的外部元数据相联的指示器。虽然用户在存留的节目中都有丰富的各自独立的元数据,但MXF文件能携带更丰富的元数据。UMID联结系统支持与摄取/存档节目关联的外部元数据的使用。元数据友好是节目制作系统向基于IT系统移植的关键。


GXF格式

  GXF也是Pro-MPEG组织制定和推广的文件格式,它的目标是便于用数据磁带存取素材(包括元数据)。除了没有采用SMPTE推荐的KLV数据打包方式之外,GXF具有和MXF类似的特点,参看SMPTE360M。

  从设计上看,GXF和MXF文件都是既能用多种介质传输,又能边传输、边处理,兼具信号流和计算机数据文件二者的优点,对提高制作系统中节目和素材的传输效率大有益处。

GXF文件的基本结构

  GXF支持JPEG、MPEG压缩视频和未压缩的音频,同时支持多种合成功能。音频和视频包在文件中复用,保证在文件传输和存储过程中都可以同时播放,如图9所示。文件中还包含服务器内对文件的注释信息,如文件名称、视音频内容的入/出口等。GXF的复用结构中,包含编辑中的剪切、音频淡入/淡出及对静止素材的管理等信息。

Open in new window


GXF文件的传输

  GXF是一种网络的数据交换格式,也是一种存储文档的交换格式。文件从一个服务器传到另一个服务器时,发送服务器不必考虑所要传送的文件是什么格式,只要把它打包成GXF文件发出去即可,接收服务器收到GXF文件,再把它转换成其内部应用格式。

GXF的文件检索

  GXF使用标准文件传输协议,可以实现部分文件检索。从操作设备向存档服务器(或数据磁带库)提出检索要求时,将所需段落入/出点标记送到服务器即可,而不需要的素材部分则不会被传输。数据磁带驱动的搜索速度比普通磁带读取速度高5倍。

  GXF文件在开始部分有一个粗略的帧检索表,用于数字磁带的文档检索。在服务器或编辑系统内部也有帧搜索表,用来运行EDL定义的剪切与转换,这些设备收到GXF文件时,自动生成帧搜索表。不同设备对GXF文件处理方式不同,编辑设备收到文件时,会将不同视/音频轨处理成连续分离的文件;存储转发设备收到文件时,则进行多路复用;而有些存档设备则对收到的文件不作任何修改。因此,不同的设备根据不同的需要生成不同的内部搜索表。

  GXF已经得到广泛应用,有大量基于GXF的档案库存储器在应用,每天有上千个支持GXF的设备通过IP网络传递素材。GXF文件交换格式仍在发展。


AAF格式

  AAF是AAF组织制定的,面向多媒体编辑工具之间的数据交换,主要用于实体数据和元数据的交换,对非线性编辑系统更有意义。

  在非线性编辑系统中,EDL起重要作用,并在编辑过程中被频繁地使用。引入EDL已有30多年,但是,随着制作工具和制作手段的发展,EDL已经难以满足编辑的要求。于是,称为“超级EDL”的AAF格式应运而生。

  AAF是针对后期编辑制作环境传递编辑信息而设计的,比MXF和GXF包含的内容更多。它容纳元数据的能力很强,可以描述复杂的编辑信息,如合成、特技效果等,它能包含生成一个节目所需的所有素材和元数据。另外,AAF还支持通过元数据引用外部素材。这样,单个AAF文件可以包含一个后期制作项目的所有数据和信息,而且根据AAF文件的内容可追溯到该项目制作历史中的每个版本,并在生成每个新版本时都可以使用原始素材,避免素材多次复制带来的质量下降。

  AAF采用层次式文件结构。它使用对象向导(Object-oriented)机制对元数据与实体进行组织,对象提供携带不同信息标志的整体框架。对象向导可对不同形式的信息进行某些相同处理。例如,在AAF文件中可以同时出现视频数据、音频数据、MIDI文件数据等工作区域。当信息非常复杂时,Object对信息进行结构方式的描述,这样能比较容易地获取信息摘要。当进行复杂的节目交换时,要用到Object模型。Object模型可提供实体与元数据打包和描述等多种机制及自定义类的功能,并具有在现有类中添加信息的功能。Object模型常用四种包:成分包(描述实体数据的顺序、位置和对实体数据使用的特技)、素材包(为实体数据提供间接通道,与相关实体数据同步)、源文件包(提供数字实体数据入口和格式描述)和源物理包(提供物理介质的描述),每个包都是一个Object,都由元数据组成。每个包可以描述一种或几种实体,这是由于每个包中可以包含一个或多个狭槽(Slot),如一个包可以含有2个音频Slot、一个视频Slot、2个静止画面Slot和3个时间码Slot等。这样,在文件交换中,元数据与实体一样作为重要的交换对象进行交换。

  AAF提供了很多可交换的元数据,使节目段的特技转换调整容易;可使多种数据互相联系,能使画面与声音保持同步。AAF可在工作流程中对文件实体与元数据进行组织与交换,对影视后期制作具有非常重要的作用。


MXF、GXF与AAF的比较

  MXF和GXF文件更适合于流式处理,不用等到文件传输结束,即可开始回放这个文件。AAF的结构比MXF和GXF复杂得多,它采用层次式文件结构,其文件中还有文件系统,这种层次结构决定了它在传输结束前无法被使用,无法实现流操作,但是有利于减少编辑修改过程中重写的文件内容。

  AAF与MXF和GXF面向不同的应用。AAF不能直接用于文件交换,它支持高性能的编辑应用,包括非线性编辑和多层画面合成、特技效果和丰富的元数据,可接受外部基准。Pro-MPEG Forum和AAF协会同意把MXF作为AAF的子集进行开发,MXF作为AAF的简单功能版本,只支持简单的编辑功能,不能接受外部基准,主要用于不同系统之间的文件交换和简单编辑。MXF中有场景描述元数据,AAF尚未纳入。AAF建议采用Microsoft的存储结构,MXF采用KLV二进制符号。AAF已经开发了自己的软件开发包(SDK),简单修改AAF的SDK就可以得到MXF的SDK。

  MXF格式的文件不仅能用IP网络传输,而且能使用SDTI作为传输接口,这可以充分利用电视台现有的布线,有利于从信号流传输方式向文件传输方式平滑过渡。
  本文作者张琦女士,北京广播学院电视工程系教授;杨宇女士,研究生。信息来源:《世界广播电视》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 位移运算符,Oracle“(+)”运算符

在Oracle中,()表示JOIN中的“可选”表。 所以在你的查询中,select a.id, b.id, a.col_2, b.col_2, ... from a,b where a.idb.id()这是一个左外加B表与一个表。 就像现代的左连接查询一样。 (它将返回a表的所有数据,而不会丢失在另一边的数据…

什么是实体-联系图(ER图)

实体-联系图(ER图)数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。 1.数据对象 数据对象是对软件必须理解的复合信息的抽象。所谓符合信息是指具有一系列不同性质或属性的事物,仅有单…

记录的习惯

记录的习惯 书籍是人类进步的阶梯,承载了人类文明进步的历程。大多数人都写过日记,但不知道有多少人重视过日记。常常我们会用相机记录一些生活中的场景,然后收藏起来,等到若干年后再拿出来看,总能感觉到很温馨很美好。…

Flask爱家租房--发布新房源(保存房屋基本信息)

0.页面展示效果 1.后端代码 api.route("/houses/info", methods["POST"]) login_required def save_house_info():"""保存房屋的基本信息前端发送过来的json数据{"title":"","price":"","ar…

【c#】RabbitMQ学习文档(一)Hello World

一、简介 RabbitMQ是一个消息的代理器,用于接收和发送消息,你可以这样想,他就是一个邮局,当您把需要寄送的邮件投递到邮筒之时,你可以确定的是邮递员先生肯定会把邮件发送到需要接收邮件的人的手里,不…

oracle中如何分页,Oracle中操作分页

mysql中分页的写法:select t.* from tbl_user t order by t.id limit $offset , $perpage$currentPage 1;//当前页码其中后面$sql:with partdata as (select rownum rowno,t.* from tablename t where column1090order by column) select * from partda…

Flask爱家租房--发布新房源(保存房屋图片)

0.页面展示效果 1)首先房东填写房屋信息; 2)当房东填写发布的房源信息之后,隐藏(hide)刚才填写信息的界面,同时显示(show)上传房屋图片的界面。 1.后端代码 api.route("/houses/image&q…

数字的处理 :小数点四舍五入

js取float型小数点后两位数的方法 转载 发布时间:2014年01月18日 17:03:32 投稿:shangke 我要评论 js中取小数点后两位方法最常用的就是四舍五入函数了,前面我介绍过js中四舍五入一此常用函数,这里正好用上,下面…

如何成为一名优秀的C程序员

问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件,他们会问我是用什么编程语言来编写自己的游戏的,以及我是如何学习这种编程语言的。因此,我认为在这篇博文里列出一些有关C语言的最佳读物应该能帮到不少人。如果你知道其它的优秀…

CFS调度器

一、前言 随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了。这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭。我有一个循序渐进的方法,那就是先不要看最新的内核&#…

Flask爱家租房--发布新房源(总结)

重点总结 学习过程中,发现house_id贯穿两个接口内容,现对后端逻辑部分做以下总结: 1)房东首先在前端填写房屋的基本信息,此时通过newhouse.js文件$("#form-house-info").submit(function (e) {…}进行处理&…

关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询关系代数运算对象是关系运算结果亦为关系关系代数的运算符有两类:集合运算符和专门的关系运算符

设计模式的六大原则

设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更加容易被他人理解、保证代码可靠性。设计模式是代码编制真正工程化(工程化即系统化、模块化、规范化的一个过程。指将具有一定规模数量的单个…

作业7

stuNum 201709090072 print(年级是:stuNum[0:4]) print(专业编号是: stuNum[4:9]) print(序号是: stuNum[-3:]) stuNum 440982201812111876 print(所在省市:stuNum[0:2]) print(所在地区:stuNum[2:4]) print(所在县区:stuNum[4:…

linux进程退出没有log,Linux下应用进程消失原因分析-Go语言中文社区

应用部署在Linux环境下,如果出现未知原因导致应用进程被杀(应用日志中没有任何异常现象,日志出现中断现象),如果对于进程消失原因没有特别明确的方向,可以考虑从系统日志(/var/log/messages)方面查找原因。 命令参考egrep -i kill…

数学是成就卓越开发人员的必备技能

编者按:原文作者Alan Skorkin是一名软件开发人员,他在博客中分享对软件开发相关的心得,其中有很多优秀的文章,本文就是其中一篇,作者认为:成为优秀的开发人员,可以没有数学技能,但成…

Flask爱家租房--celery(总结)

0. celery整体逻辑图 个人理解为:此处的客户端client与以往定义的客户端(前端)并不一样,角色相当于以往的后端逻辑处理代码,即发布任务的一方,只是相当于处理者worker而言是客户端。 1.准备工作&#xff1…

理论与实践:不要过度思考

你每天都在仔细翻阅Hacker News,惊奇于那些经过整理的创业传奇、功效无比的最佳实践理论、天才的技术解决方案,以及各种链接指向的大量的一站式的,极简主义的,色彩柔和的网站。你参加过精益(Lean)创业研讨会,读过了《F…