专利名称:一种媒体文件封装格式检测装置与方法
技术领域:
本发明涉及一种媒体文件封装格式检测装置与方法,是一种计算机网络传输的装置和方法,是一种用于对网络中传输的媒体文件的检测装置和方法。
背景技术:
对于大多数电视台或其它视音频节目播出机构,在节目播出之前,对节目进行技审是确保节目播出安全的重要把关环节。传统的技审只对视音频内容(即黑场、静帧、静音、蓝底、峰值超标等参数)做检测,而随着制播体系逐渐趋于全程文件化,“压缩”和“文件”成为数字广播电视制作和播出过程中的两个关键词。广播电视愈来愈多地从数字媒体或数据链路得到已压缩的节目文件,仅对视音频内容做检测已无法满足播出业务发展对于节目文 件高安全性、高可靠性的需求。文件化、网络化的制播环境中,不仅要对视音频内容和视音频参数进行检测,还要对文件封装的合规性进行检测。压缩后的视音频文件,肉眼是无法得知码率多大、GOP长度等是否符合规范的。为了解决这个问题,提高节目播出前系统备播准备的可靠性,保证最终的高安全播出,除了传统的文件内容技审以外,对于制播系统而言,还必须对文件封装结构进行全面检测,避免因为节目文件封装格式不合规范导致播出视频服务器解码失败而造成播出事故。
发明内容
为解决现有技术的问题,本发明提出一种媒体文件封装格式检测装置与方法。所述的方法和装置针对广播电视领域各环节制播系统中输出的MXF媒体文件进行检测,以检验MXF文件是否符合相关规范,以确保节目交换与正常使用,并保证节目播出的安全可靠性。本发明的目的是这样实现的一种媒体文件封装格式检测装置,包括检测任务获取单元,所述的检测任务获取单元与文件打开单元连接,所述的文件打开单元与配置单元连接,所述的配置单元与KLV Layer检测单元和MXF文件内容结构读取单元连接,所述的KLV Layer检测单元与信息输出单元连接;所述的MXF文件内容结构读取单元与PartitionPack检测单兀、Header Metadata检测单兀、Essence检测单兀连接,所述的PartitionPack检测单元、Header Metadata检测单元、Essence检测单元与信息输出单元连接。一种使用上述装置的媒体文件封装格式的检测方法,步骤如下
获取检测任务的步骤用于所述的检测任务获取单元在数据库中获取检测任务信息,检测任务信息包括需要检测的MXF的文件名和存储路径、检测深度配置信息等;
媒体文件解码的步骤用于所述的文件打开单元通过解码器打开检测任务信息中指定的MXF文件,并在文件打开过程中对所述的MXF文件的物理结构进行读取和解析,如果打开失败则进入“检测信息输出的步骤”,如果打开成功则进入下一步骤;
选择检测项目的步骤用于所述的配置单元设置各个检测项目和检测深度;进行KLV Layer检测的步骤用于所述的KLV Layer检测单元按照Key、Length、Value结构,解析MXF文件中的各个KLV结构并检测,如果检测失败则进入“检测信息输出的步骤”,如果检测成功则进入下一步骤;
读取MXF信息的步骤用于所述的MXF文件内容结构读取单元从所述的MXF文件中读取MXF媒体文件信息并保存备用;
以下三个步骤同时进行,
Partition Pack检测的步骤用于所述的Partition Pack检测单元对MXF文件内容结构读取单元所读取的媒体文件信息中的Item属性值的检测,以及对Random Index Pack的检测,记录检测结果;
Header Metadata检测的步骤用于所述的Header Metadata检测单兀对MXF文件内容结构读取单元所读取的媒体文件信息中的结构性元数据进行检测,记录检测结果;
Essence检测的步骤用于所述的Essence检测单元对MXF文件内容结构读取单元所读取的媒体文件信息中的EssneceContainer和Metadata的匹配关系、IndexTable和EssenceContainer的匹配关系,分析检测,记录检测结果;
检测信息输出的步骤用于所述的信息输出单元收集文件打开单元、KLV Layer检测单兀、Partition Pack检测单兀、Header Metadata检测单兀、Essence检测单兀所记录的检测结果,根据解析深度,有选择的输出检测结果。本发明产生的有益效果是本发明所述的方法和装置在不完全解析媒体文件的状态下,有选择的部分解析媒体文件并对其进行检测,其检测的过程按照关键性的顺序进行排列,如进行KLV结构解析、Patition Pack有效性检测、Header Metadata解析和Essence解析,即迅速的检验MXF文件是否符合相关规范,一旦出现问题,即不再继续检测。这样的排序可以用最快的速度,最简洁的方式检测一个媒体文件的封装格式是否合乎要求,即节约了资源也提高了效率。所述方法,为播出系统提供完全符合MXF标准的文件,覆盖了在播前业务的实际使用需求,提高了整个播出系统的安全性和可靠性。所述的装置,可以通过检测任务信息中的配置,方便灵活的开启/关闭封装格式检测项,并可直观的获取封装格式检测的执行状态及执行进度。本发明所述的方法和装置使播前系统文件检测环节的可靠性得到了全面提升,从而大幅提升播出系统的安全性。通过文件结构封装结构的合规检测,避免了因文件不能被视频服务器解码导致的播出事故,减轻了播出人员的应急操作频率和工作压力。对于整个电视台播出业务来说,在丰富技审功能的同时,提高了播出系统整体的安全性。
下面结合附图和实施例对本发明作进一步说明。图I是发明实施例一所述装置的结构示意 图2是发明实施例二所述方法的流程图。
具体实施例方式实施例一
本实施例是一种媒体文件封装格式检测装置,结构如图I所示。本实施例包括检测任务获取单元,所述的检测任务获取单元与文件打开单元连接,所述的文件打开单元与配置单元连接,所述的配置单元与KLV Layer检测单元和MXF文件内容结构读取单元连接,所述的KLV Layer检测单元与信息输出单元连接;所述的MXF文件内容结构读取单元与Partition Pack检测单兀、Header Metadata检测单兀、Essence检测单兀连接,所述的Partition Pack检测单兀、Header Metadata检测单兀、Essence检测单兀与信息输出单兀连接。本实施例是电视台节目质量技术审查系统的一部分。技术审查系统不仅审查媒体文件的封装格式是否符合有关规范要求,还检测媒体文件的其他技术性能,如编码格式,图像的质量等等。媒体文件封装格式的检测有两种方式对文件头的检测和全文件的检测。文件头的检测是通过对文件最基本部分的解析,获取该视音频文件的一些基本信息;而全文件的检测实际是对文件的封装结构进行检测,虽然不需要进行解码,但需要对整个文件进行读取和解析。
本实施例所述的媒体文件封装格式的检测主要针对MXF文件,所述的MXF(Material eXchange Format)文件是一种专业音视频媒体交换格式。MXF只规定了文件的存储封装格式,是与具体的视音频编码方式无关的一种文件格式。主要应用于影视行业媒体制作、编辑、发行和存储等环节。MXF文件封装格式检测主要是针对MXF文件的封装结构进行的,需要对整个文件进行读取和解析,对其中元数据的完整性、数据之间引用关系的正确性进行检测,但并不对其中的视音频数据进行解码,因此所耗费的时间成本只与文件大小相关。技术审查系统是一个服务端和多个客户端的网络系统,可以同时进行多个媒体文件的技术审查,对于一个审查任务支持多线程审查。在技术审查的过程中,客户端和服务端保持不间断的消息反馈,将封装格式检测状态、进度的信息反馈给服务端,这种消息反馈是双向的,并且对于审查错误状态的任务支持任务重试。本实施例所述的装置的主要部分安装在技术审查系统的客户端,所述装置通过检测任务获取单元和信息输出单元与服务端进行联系,交换信息。本实施例所述的检测任务获取单元是从技术审查系统的数据库中获取检测任务信息,所述的数据库可以是各种类型,包括0racle、DB2、SQL 2005等等,检测任务信息包括需要检测的MXF的文件名和存储路径、检测深度配置信息等。检测深度配置信息主要包括审查的各种需求,例如检测的项目和检测的深度等。本实施例所述的文件打开单元实际是一个文件解码器,文件解码器根据检测任务信息中的MXF的文件名和存储路径读取的指定MXF媒体文件进行解码,这里的解码不是完全将媒体文件完全解码,仅仅将需要检测的部分解码,以节约资源。如果读取或者解码失败,则说明这个媒体文件有问题,则不必继续进行检测,直接通过信息输出单元输出该媒体文件有错误的信息。本实施例所述的配置单元根据检测任务获取单元读取的检测深度配置信息,设置封装格式检测的各种参数,例如检测的项目和检测的深度。所述的检测项目可以是全部检测项目,包括KLV Layer、Partition Pack> Header Metadata、Essence 等等。也可以有选择的进行 KLV Layer、Partition Pack> Header Metadata、Essence 检测中某些项目的检测。所述的配置单元可以通过指定解析检测深度,有选择性的进行检测和信息输出,例如只解析检测KLV结构或只解析检测元数据。KLV Layer检测是仅针对文件结构的检测;HeaderMetadata检测、PartitionPack检测属于元数据检测,元数据检测是对文件较深入的检测,是对具体文件中的相关数据关联性和属性值等所做的检测。本实施例所述的KLV Layer检测单元对MXF文件中的KLV结构进行解析,此单元是独立于MXF文件内容结构读取单元的,按照Key,Lengt h,Value结构解析MXF文件中的各个KLV结构。MXF文件采用SMPTE 336定义的(Key, Length, Value)三元组进行组织。本实施例所述的MXF文件内容结构读取单元在对文件进行读取的时候,需要结合MXF文件的逻辑结构,而不是单纯的对每个KLV的读取。KLV Layer解析是对MXF文件中记录的KLV三元组结构进行遍历,以分析每个KLV结构是否正确,这实际上也是一种读取,只是和上述的MXF文件内容结构读取单元是独立的。本实施例所述的信息输出单元是与技术审查服务端连接的单元,是与技术审查服务端交换信息的窗口。信息输出单元要记录所有检测单元检测的信息,并将这些检测信息传输给技术审查服务端。所输出的MXF文件检测信息包括KLV结构信息,兀数据信息(Partition Pack, IndexTable, HeaderMetadata…),统计信息(错误警告信息),及视音频信息等四部分。可以通过指定解析检测的深度(如只解析KLV结构或只解析元数据),按照错误级别,有选择的将文件封装格式检测的结果信息输出至技术审查服务端。本实施例所述的Partition Pack检测单兀、Header Metadata检测单兀、Essence检测单兀是对Partition Pack、Header Metadata、Essence进行检测的单兀。MXF文件规范将整个文件在KLV结构的基础上逻辑的分为多个Partition,而每个Partition都有一个相应的元数据称为Partition Pack, Partition Pack记录了对应Partition所需的一些位置信息等属性,它是MXF文件的基础结构。Header Metadata (头部元数据),是MXF文件能够正确工作的关键,主要记录了文件中视音频数据所需的相关元数据,如视频类型、音频类型、实体数据的索引位置等信息。Essence指MXF文件中记录的实体数据,即视频或音频数据等,它是MXF文件的主体数据。本实施例所述的Essence检测,主要是对Essence数据中相关的位置信息进行检测,并不对其中所记录的视音频实体数据内容进行处理。实施例二
本实施例是一种使用实施例一所述装置的媒体文件封装格式的检测方法,所述方法的流程如图2所示。本实施例所述方法包括KLV结构解析、Patition Pack有效性检测、HeaderMetadata解析和Essence解析。KLV Layer解析是独立于MXF文件读取的,按照Key,Length, Value结构解析MXF文件中的各个KLV结构,解析过程结束后会输出整个文件的KLV结构信息并对解析过程中发现的问题给出错误提示。从指定的待检测MXF文件中读取MXF媒体文件信息并保存,供后续的各检测单元使用。Partition Pack解析依赖于MXF文件内容结构的读取,每个Partition Pack中都包含有多个Item项用以描述MXF媒体文件信息,Patition Pack有效性检测就是分析并检测Partition Pack中记录的各个Item的属性值是否与MXF文件中的实际信息一致。Header Metadata解析负责对MXF文件的结构性元数据和描述性元数据进行解析,就是对各组成结构性元数据的Metadata Set进行的检测首先检测各个Metadata Set的UUID (Unique Identifier)是否唯一;其次检测Metadata Sets的数据内容是否完整;最后检测各个Metadata Set之间的引用关系是否正确及合理。Essence解析也依赖于MXF文件内容结构的读取,包括对EssneceContainer和Metadata的匹配关系分析以及对IndexTable和EssenceContainer的匹配关系分析。完成所有检测后以文本形式对错误项进行输出,输出信息包括了 KLV结构信息,元数据信息(PartitionPack, IndexTable, HeaderMetadata…),统计信息(错误警告信息)以及视音频信息等四部分,可以通过指定解析检测的深度(如只解析KLV结构或只解析元数据),有选择性的进行输出。本实施例所述方法的具体步骤如下
获取检测任务的步骤用于所述的检测任务获取单元在数据库中获取检测任务信息,检测任务信息包括需要检测的MXF的文件名和存储路径、检测深度配置信息等。检测深度配置信息主要包括审查的各种需求,例如检测的项目和检测的深度等。媒体文件解码的步骤用于所述的文件打开单元通过解码器打开检测任务信息中指定的MXF文件,并在打开文件的过程中对所述的MXF文件的物理结构进行读取和解析,如果打开失败则进入“检测信息输出的步骤”,如果打开成功则进入下一步骤。本步骤所述的 解码只是解码需要检测的部分。如果解码失败,或者说打开失败,则说明该MXF文件有严重问题,所以停止检测,直接将该MXF文件有严重错误的信息经信息输出单元传送至技术审查服务端。选择检测项目的步骤用于所述的配置单元根据检测深度配置信息设置各个检测项目和检测深度。进行KLV Layer检测的步骤用于所述的KLV Layer检测单元按照Key、Length、Value结构,解析MXF文件中的各个KLV结构并检测,如果检测失败则进入“检测信息输出的步骤”,如果检测成功则进入下一步骤。KLV 的检测从一个 MXF 的开头 HPP (Header Partition Pack)或是 Rand IndexTable来定位每个Partition Pack的位置,并从每个Partition Pack的Key开始,逐级检测相关的KLV结构。比如检测HPP中相应Header Metadata及Index Table等的KLV结构,对于其中的非KLV数据给出错误提示。KLV结构错误属于MXF的严重错误。KLV结构错误会导致MXF文件中记录的位置信息与文件实际位置不匹配,导致无法正确对后续实体数据(视频或音频等)进行定位。理论上若出现这种错误,直接退出检测即可。但是实际上KLV结构检测和后续的元数据检测是相互独立进行的。在检测到KLV错误后,可根据用户对检测方式的选择,决定是直接返回错误信息推出检测,还是继续对元数据进行检测,以方便对错误的进一步定位。读取MXF信息的步骤用于所述的MXF文件内容结构读取单元从所述的媒体文件中读取MXF信息并保存备用。根据MXF文件格式特点,在读取文件时,首先根据RandomIndex PackCRIP,随机索引包)对文件结构进行快速定位并保存相应的元数据和结构信息;如果RIP不存在或者RIP记录错误,则从文件的第一个字节对文件进行扫描,获取并保存文件结构和相关元数据信息。以下三个步骤同时进行,
Partition Pack检测的步骤用于所述的Partition Pack检测单元对MXF文件内容结构读取单元所读取的媒体文件信息中进行Item属性值,以及对Random Index Pack的检测,记录检测结果。Partition Pack解析和检测依赖于MXF文件的读取,每个PartitionPack中都包含有多个Item项用以描述MXF文件信息,Patition Pack有效性检测就是分析并检测Partition Pack中记录的各个Item的属性值是否与MXF文件中的实际信息一致。除此之外,Patition Pack有效性检测还包含对Random Index Pack的检测。例如MXF文件中存在Random Index Pack,会检测该RIP记录的Partition偏移量是否正确。Header Metadata检测的步骤用于所述的Header Metadata检测单兀对MXF文件内容结构读取单元所读取的媒体文件信息中的结构性元数据进行检测,记录检测结果。Header Metadata解析和检测依赖于MXF文件的读取。本步骤对MXF文件的结构性元数据和描述性元数据进行解析。其中,在MXF文件结构规范中,结构性元数据是必须有的,而描述性元数据则是可选的。描述性元数据以插件的方式为MXF文件提供了进一步的元数据信息扩展,主要是由制作人创建的针对媒体文件内容的描述信息。结构性元数据中包含多个元数据集(Metadata Set),主要的Metadata Set有Primer Pack、Preface、Identification、Content Storage、Material Package 和 SourcePackage。Primer Pack 记录了整个 MXF 文件中所使用的 Universal Label ;Preface 兀数 据记录了 MXF文件所使用的操作模式和视音频所采用的压缩格式等信息identification中包含了创建此MXF文件的公司名称、产品信息和修改历史等;Content Storage主要包含了文件中所用到的各种素材包信息(如Material Package和Source Package等)和实体数据信息等。由于MXF对文件采用了引用链的组织形式,元数据集中部分关键属性值的错误会导致对后续信息的定位失败,造成MXF文件不可用。结构性数据的检测项目包括检测各个Metadata Set的Unique Identifier是否唯一、检测Metadata Set的数据内容是否完整、检测各个Metadata Set之间的引用关系是否正确及合理。Essence检测的步骤用于所述的Essence检测单元对MXF文件内容结构读取单元所读取的媒体文件信息中的Essence Container和Header Metadata的匹配关系、IndexTable和Essence Container的匹配关系,分析检测,记录检测结果。检测信息输出的步骤用于所述的信息输出单元收集文件打开单元、KLV Layer检测单兀、Partition Pack检测单兀、Header Metadata检测单兀、Essence检测单兀所记录的检测结果,根据解析深度,有选择的输出检测结果。如果收到文件打开单元发来的MXF文件无法打开的信息,则将该信息直接发送至技术审查服务端。实施例三
本实施例是实施例二的改进,是实施例二关于Header Metadata检测的步骤的细化,本实施例所述的“Header Metadata检测的步骤”中所包括的子步骤
检测各个 Metadata Set 的 Unique Identif ier 是否唯一。检测Metadata Set的数据内容是否完整,是否包括所有必需属性。例如SMPTE377规范中定义的所有Required属性。检测各个Metadata Set之间的引用关系是否正确及合理。例如MaterialPackage元数据集中的Source Package ID是否能够索引到正确的Source Package。实施例四
本实施例是实施例二的改进,是实施例二关于Essence检测的步骤的细化,本实施例所述的“Essence检测的步骤”中所包括的子步骤
对Essnece Container和Header Metadata的匹配关系进行分析。例如,HeaderMetadata中所记录的视频编码格式和Essence Container中所保存的视频格式不一致。对Index Table 和 Essence Container 的匹配关系进行分析。例如IndexTable所记录的某帧视频数据的位置和该帧数据在EssenceContainer中的实际位置不一致。实施例五
本实施例是实施例二的改进,是实施例二关于检测信息输出的步骤细化,本实施例所述的“检测信息输出的步骤”中所输出的信息包括=KLV结构信息、元数据信息、统计信息输出、视音频描述信息。KLV结构信息输出,按照其在文件中的偏移Offset, Key, Length输出,可以以xml格式单独输出,也可以按照流格式与元数据信息输出到一个txt文件中。 兀数据信息输出(PartitionPack,IndexTable, HeaderMetadata…),可以按照文件中元数据出现的顺序输出,也可以按照Metadata Sets的引用关系输出。统计信息输出,按照Error,Warning,Tips三个不同的级别输出。Error信息可能会导致在对MXF文件进行播放时出现比较严重的错误,导致播放器崩溃等问题。Warning信息不会导致播放器崩溃,但对不同的播放器可能会存在兼容性问题。Tips信息只是对某些比较容易导致兼容性问题的条目进行提示,Tips信息输出的条目需要符合SMPTE 377M(MXF规范文档)文档的规范。视音频描述信息输出,若要求输出视音频描述信息,则直接读取并输出视音频描述信息。上述信息的输出,是根据选择检测项目的步骤中,配置单元根据检测深度信息对各个检测项目和检测深度的设置进行的。最后应说明的是,以上仅用以说明本发明的技术方案而非限制,尽管参照较佳布置方案对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案(比如装置的连接关系,步骤的前后顺序等)进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。本发明所述的方法可编制为应用于计算机系统的程序,并运行于本发明所述的计算机网络系统中。
权利要求
1.一种媒体文件封装格式检测装置,其特征在于,包括检测任务获取单元,所述的检测任务获取单元与文件打开单元连接,所述的文件打开单元与配置单元连接,所述的配置单元与KLV Layer检测单元和MXF文件内容结构读取单元连接,所述的KLV Layer检测单元与信息输出单元连接;所述的MXF文件内容结构读取单元与Partition Pack检测单元、Header Metadata检测单兀、Essence检测单兀连接,所述的Partition Pack检测单兀、Header Metadata检测单元、Essence检测单元与信息输出单元连接。
2.一种使用权利要求I所述装置的媒体文件封装格式的检测方法,其特征在于所述方法的步骤 获取检测任务的步骤用于所述的检测任务获取单元在数据库中获取检测任务信息,检测任务信息包括需要检测的MXF的文件名和存储路径、检测深度配置信息; 媒体文件解码的步骤用于所述的文件打开单元通过解码器打开检测任务信息中指定的MXF文件,并在文件打开过程中对所述的MXF文件的物理结构进行读取和解析,如果打开失败则进入“检测信息输出的步骤”,如果打开成功则进入下一步骤; 选择检测项目的步骤用于所述的配置单元设置各个检测项目和检测深度; 进行KLV Layer检测的步骤用于所述的KLV Layer检测单元按照Key、Length、Value结构,解析MXF文件中的各个KLV结构并检测,如果检测失败则进入“检测信息输出的步骤”,如果检测成功则进入下一步骤; 读取MXF信息的步骤用于所述的MXF文件内容结构读取单元从所述的MXF文件中读取MXF媒体文件信息并保存备用; 以下三个步骤同时进行, Partition Pack检测的步骤用于所述的Partition Pack检测单元对MXF文件内容结构读取单元所读取的媒体文件信息中的Item属性值进行检测,以及对Random Index Pack进行检测,记录检测结果; Header Metadata检测的步骤用于所述的Header Metadata检测单兀对MXF文件内容结构读取单元所读取的媒体文件信息中的结构性元数据进行检测,记录检测结果; Essence检测的步骤用于所述的Essence检测单元对MXF文件内容结构读取单元所读取的媒体文件信息中的EssneceContainer和Header Metadata的匹配关系、IndexTable和EssenceContainer的匹配关系进行分析检测,记录检测结果; 检测信息输出的步骤用于所述的信息输出单元收集文件打开单元、KLV Layer检测单兀、Partition Pack检测单兀、Header Metadata检测单兀、Essence检测单兀所记录的检测结果,根据解析深度,有选择的输出检测结果。
3.根据权利要求2所述的方法,其特征在于,所述的“HeaderMetadata检测的步骤”中所包括的子步骤 检测各个 Metadata Set 的 Unique Identif ier 是否唯一; 检测Metadata Set的数据内容是否完整; 检测各个Metadata Set之间的引用关系是否正确及合理。
4.根据权利要求2所述的方法,其特征在于,所述的“Essence检测的步骤”中所包括的子步骤 对EssneceContainer和Header Metadata的匹配关系进行分析;对IndexTable和EssenceContainer的匹配关系进行分析。
5.根据权利要求2所述的方法,其特征在于,所述的“检测信息输出的步骤”中所输出的信息包括KLV结构信息、元数据信息、统计信息、视音频描述信息。
全文摘要
本发明涉及一种媒体文件封装格式检测装置与方法,包括获取媒体文件的步骤;媒体文件解码的步骤;选择检测项目的步骤;进行KLVLayer检测的步骤;读取MXF信息的步骤;PartitionPack检测的步骤;HeaderMetadata检测的步骤;Essence检测的步骤;检测信息输出的步骤。本发明所述的方法和装置在不完全解析媒体文件的状态下,有选择的部分解析媒体文件并对其进行检测,以快速简洁的检测媒体文件,既节约了资源也提高了效率。
文档编号H04N21/24GK102932677SQ20121029191
公开日2013年2月13日 申请日期2012年8月16日 优先权日2012年8月16日
发明者丁文华, 姚威, 宋宜纯, 许钢鸣, 商同, 禇震宇, 张二丽, 黄振川, 杨慕星, 李扬 申请人:中央电视台, 北京中科大洋科技发展股份有限公司