一种识别多格式媒体文件的方法

文档序号:6330457阅读:308来源:国知局
专利名称:一种识别多格式媒体文件的方法
技术领域
本发明涉及多媒体播放技术,尤其是一种识别多格式媒体文件的方法及对这些媒体文件 进行译码、播放的方法。 背录玟术随着多媒体技术、存储技术、传输技术的迅猛发展,媒体文件的种类层出不穷。多种图 片格式、声音格式、图像格式、网络文档格式、动画格式等不断涌现,而且,对于特定的应 用,会出现综合上述几种格式的媒体文件,又大大增加了媒体文件格式的种类。传统的嵌入式设备一般都只是针对特定的媒体文件进行设计, 一般只能播放特定格式的 文件,导致下述三个问题第一是系统的可扩展性不好,无法支持其他的媒体文件;第二是难以改正以前版本文件中的格式错误,通过升级虽然可以部分解决上述问题,但软件升级对于用户来讲操作复杂,且存在丢失程序的风险;第三是开发速度慢,如果要求支持的文件格 式较多,需要在产品上市之前完成所有的代码,往往消耗很多时间。传统的识别多格式媒体文件的方法是根据文件的后缀名判定该文件是否可播放,但对于 具有相同后缀名而文件种类不同的情况,则无法处理,如果仅仅根据后缀名判断文件是否可 以播放,会使用户在不能播放时产生误解,同时,调用播放程序需要一定的时间,影响用户 的使用。目前已公开的技术中,也有一些针对多格式媒体文件进行识别的方法,这些方法在判断 文件后缀名的同时,还判断媒体文件的文件头,提高了对媒体文件格式的识别率,这些方法 往往是通过建立译码程序库或模块解决上述问题,但存在的问题是1、不能有效避免用户对 译码程序的无意破坏;2、所建立的译码程序库或模块升级困难;3、调用译码程序库或模块 影响媒体文件的播放效率。如已公开的中国专利文献CN1749953中提出了一种多格式媒体文件识别方法,通过格式 辨识模块判断媒体文件的后缀名或文件头,再通过译码程序调用模块调用相应的译码程序对 媒体文件进行解码。该方法可以部分地解决对媒体文件识别率低下的问题,却不能完全解决 上述现有技术中存在的所有问题。发明内容本发明的目的在于针对各种媒体文件格式纷繁且新媒体格式不断涌现的现状,提出一种 准确、高效识别媒体文件是否能被播放的方法,同时,该方法还提出了防止用户误删媒体控
件程序以及便于媒体控件版本升级的机制。本发明的技术方案如下 一种识别多格式媒体文件的方法,包括主控程序及媒体控件库, 其中,主控程序包含后缀名査找模块、文件头判定模块、调用代码模块以及媒体控件库注册 加载模块,媒体控件库中包含对应各种媒体文件的媒体控件,主控程序发现新媒体文件和新 控件后,由后缀名査找模块及文件头判定模块完成新媒体文件和新控件格式的识别;媒体控 件库注册加载模块将媒体控件库的存储目录属性设置为"系统文件"和"隐藏文件",以避 免用户对媒体控件程序的无意删除。所述媒体控件库注册加载模块规定了媒体控件的格式, 就是在获取的新控件头部即解码代码的前面增加了 8个字节的媒体文件后缀名、4个字节的 媒体控件版本号及长度可变的媒体文件头信息。本发明的积极效果在于通过在主控程序中直接判断媒体文件的后缀名及媒体文件头, 提高对媒体文件格式的识别率,使得调用代码模块的使用次数降低,提高媒体控件程序的效率;通过媒体控件库注册加载模块的使用,有效地对媒体控件进行管理,使媒体控件具有防 误删除及方便地进行版本更新的功能。附闺说明图l为系统结构图;图2为媒体文件识别流程图;图3为控件程序存储目录结构图;图4为播放控件格式示意图;图5为媒体文件后缀名格式示意图;图6为媒体文件头格式示意图;图7为媒体文件头中存储数据结构图。具体实滩方式本实施例所述的一种识别多格式媒体文件的方法,包含主控程序、媒体控件库,见图l, 其中主控程序中具有后缀名査找模块、文件头判定模块、调用代码模块及媒体控件库注册加 载模块;媒体控件库中是已加载的各种媒体播放控件。主控程序发现新媒体文件和新控件后, 由后缀名査找模块及文件头判定模块完成新媒体文件和新控件格式的识别;媒体控件库注册 加载模块将媒体控件库的存储目录属性设置为"系统文件"和"隐藏文件",以避免用户对媒 体控件程序的无意删除。如图2所示,当一个新媒体文件需要播放时,首先通过后缀名査找模块査找媒体控件库 中是否有与未知的媒体文件后缀名一致的媒体控件,如果没有相应的媒体控件,则直接报告
无法播放信息并退出;如果媒体控件库中具有与后缀名对应的媒体控件,再判断媒体文件的 文件头是否与经后缀名判断过的媒体控件中存储的文件头数据一致,如果不一致,则报告无 法播放信息并退出;如果-致,说明媒体控件库中有后缀名及文件头与待播放的媒体文件的 后缀名及文件头完全一致的媒体控件,将媒体控件中的代码对媒体文件进行译码,则可实现 媒体文件的播放。为防止用户在使用过程中误删媒体控件库中的文件,本实施例实现了对媒体控件的文件 管理功能。如图3所示,在存放媒体控件的存储介质的根目录下建立一个标识属性为"系统 文件"和"隐藏文件"的目录System,这个目录在系统中是不可见的,用来存贮媒体控件, 只有注册程序和加载程序才能访问这个目录,这个目录"系统文件"和"隐藏文件"的属性 使得播放控件不会被用户无意破坏。当新的媒体控件出现后,用户首先需要对该媒体控件进 行注册,将相应的媒体控件导入到System目录。媒体控件的后缀名为hll,包含媒体文件的 播放信息,它可以来源于任何外部设备或网络。为提高对媒体文件识别的效率,同时为方便媒体控件的升级,本实施例中重新定义了媒 体控件的格式,如图4所示,在解码代码的前面增加了 8个字节的媒体文件后缀名、4个字 节的媒体控件版本号及长度可变的媒体文件头信息。媒体文件后缀名固定为8个字节,以小端的Unicode码存贮,可以存贮最多4个字符。如 果媒体的后缀名小于4个字符,不足的部分以0x00、 0x00替代。如图5所示,如果媒体文件 的后缀名为.hav,则存储为".HAV"的ASCII代码0x68、 0x00、 0x61、 0x00、 0x76、 0x00、 0x00、 0x00。版本号为4个字节,以32位整型小端方式存储,版本号用于在更新媒体控件时,判断媒 体控件是否需要更新。在媒体控件注册时,在媒体控件中的后缀名与媒体文件的后缀名相同 的情况下,如果发现新的媒体控件的版本号高于当前媒体控件的版本号,则注册程序会自动 将新的媒体控件覆盖原有媒体控件。媒体控件格式中的第三部分为媒体文件头信息,如图6所示,媒体文件头由三部分组成, 前四个字节标示媒体文件头数据的长度,以32位整形小端方式存储,并以位长度而不是字节长度表示,当整个数值不是8的整数倍时,最后一个字节的剩余部分以O填充;第二部分为媒体文件头数据;第三部分为补0。媒体文件头信息所起的作用是判断媒体文件是否可以播放。如图7所示,如果一种媒体 文件的文件头为8个字节0x55、 0xAA、 XX、 0x00、 0x00、 0x0X、 0xXX、 0xFF,其中X 表示这个媒体文件的文件头在此位上是不确定的,用二进制展开后就是01010101 10101010 XXXXXXXX 00000000 00000000 0000XXXX XXXXXXXX 11111111,对于这样的一种文件
头,我们用二进制00表示0, 二进制11表示1, 二进制01表示X,则上面的文件头就变成 了 0011001100110011 1100110011001100 0101010101010101 0000000000000000 0000000000000000 0000000001010101 0101010101010101 1111111111111111,即为媒体文件头信息的存储数据。媒体控件格式中的最后-一部分是解码代码,为解码的核心部分。解码代码对于每种媒体 格式均不相同,只是将媒体文件解码到特定的缓冲区,而由主程序完成解码后的媒体文件的 音视频输出。
权利要求
1. 一种识别多格式媒体文件的方法,包括主控程序及媒体控件库,其中,主控程序包含后缀名查找模块、文件头判定模块、调用代码模块以及媒体控件库注册加载模块,媒体控件库中包含对应各种媒体文件的媒体控件,其特征在于所述主控程序发现新媒体文件和新控件后,由后缀名查找模块及文件头判定模块完成新媒体文件和新控件格式的识别;媒体控件库注册加载模块将媒体控件库的存储目录属性设置为“系统文件”和“隐藏文件”,以避免用户对媒体控件程序的无意删除。
2、 根据权利要求1所述的一种识别多格式媒体文件的方法,其特征在于所述媒体控件库注 册加载模块规定了媒体控件的格式,就是在获取的新控件头部即解码代码的前面增加了 8 个字节的媒体文件后缀名、4个字节的媒体控件版本号及长度可变的媒体文件头信息。
全文摘要
本发明提出一种准确、高效识别媒体文件是否能被播放的方法,同时,该方法还提出了防止用户误删媒体控件程序以及便于媒体控件版本升级的机制。包括新媒体文件、新控件、主控程序及媒体控件库;主控程序中包含后缀名查找模块、文件头判定模块、调用代码模块以及媒体控件库注册加载模块;媒体控件库中包含对应各种媒体文件的媒体控件。通过在主控程序中直接判断媒体文件的后缀名及媒体文件头,提高对媒体文件格式的识别率;通过媒体控件文件头格式的规定,使得调用代码模块的调用次数降低,提高媒体控件程序的效率;通过媒体控件库注册加载模块的使用,有效地对媒体控件进行管理,使媒体控件具有防误删除及方便地进行版本更新的功能。
文档编号G06F17/30GK101211353SQ20061017066
公开日2008年7月2日 申请日期2006年12月27日 优先权日2006年12月27日
发明者岩 史, 张继达, 钧 敖 申请人:北京海尔集成电路设计有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1