法律状态公告日
法律状态信息
法律状态
2017-03-01
授权
授权
2014-08-06
实质审查的生效 IPC(主分类):G06F17/30 申请日:20131227
实质审查的生效
2014-03-26
公开
公开
技术领域
本发明涉及一种多媒体文件片段拼接的方法,特别是涉及一种电视台级别的基于文件驱动逻辑的多媒体文件片段快速拼接方法。
背景技术
多媒体文件的合成速度,一直是电视台、电影制作等领域所重视的问题。更快的合成速度意味着更高的工作效率,电视台可以更加快速的完成新闻、娱乐等各类节目的制作,节约出大量的时间用于节目制作等实用的工作环节,而不是浪费在文件合成的等待中。
基本的文件读取模式为:由应用层发起请求,传送至I/O管理层,I/O管理层根据请求通过IRP发送相应命令至文件系统,再通过文件系统组织第二组IRP命令操作物理硬盘,最终完成应用层发起的读写操作,将物理数据返回。驱动与驱动之间通过 IRP 进行通信,而使用驱动的应用层调用的CreatFile、ReadFile、WriteFile、DeviceIoControl 等函数达到应用程序使用 IRP 和驱动进行通信的目的。
一个 IRP 由两部分组成:首先是头部或者叫包的固定部分,是一个 IRP 结构;紧跟在这个头部之后的是I/O stack locations,这是一个IO_STACK_LOCATION结构的数组,这个数组中元素的个数是根据情况而定的,由IoAllocateIrp(IN CCHAR StackSize,IN BOOLEAN ChargeQuota)时的参数StackSiz决定,而StackSize通常由IRP发往的目标DEVICE_OBJECT 的+30 char StackSize决定,而这个StackSize是由设备对象连入所在的设备栈时,在设备栈中位置决定的。
Windows下设备和驱动程序都有着明显的堆栈式层次结构:处于堆栈最底层的设备对象称为物理设备对象,简称为PDO,与其对应的驱动程序称为总线驱动程序;在设备对象堆栈的中间某处有一个对象称为功能设备对象,简称FDO,与其对应的驱动程序称为功能驱动程序。在FDO的上面和下面还会有一些过滤器设备对象,位于FDO上面的过滤设备对象称为上层过滤器,与其对应的驱动程序称为上层过滤器驱动程序;位于FDO下面(但仍在PDO上)的过滤设备对象称为下层过滤器,与其对应的驱动程序称为下层过滤器驱动程序。这种栈式结构可以使I/O请求过程更加明了,每个影响到设备的操作都使用IRP。通常IRP先被送到设备堆栈的最上层驱动程序,然后逐渐过滤到下层的驱动程序。每一层驱动程序都可以决定如何处理IRP:(1)驱动程序不做任何事,仅仅是向下层传递该IRP;(2)驱动程序直接处理完该IRP不往下层传递;(3)驱动程序既处理了IRP,还将该IRP传递到下层。上述三种处理模式取决于IRP所携带的内容。
微软Microsoft提倡的IRP拦截方法是创建一个上层过滤对象,并将它加到要拦截的设备所在的设备堆栈中,是目前最可靠也最常用的IRP拦截技术。这种方法的大体过程为:首先通过IoCtreateDevice创建自己的设备对象,然后获得要拦截设备的设备对象指针,最后通过IoAttachDeviceToDeviceObject将自己的设备放到堆栈上成为一个过滤器。
对于多媒体文件构成,所有多媒体文件都有其固定的格式,这些格式是由各种国际组织制定颁布,具有全球统一的标准。比如各种图像格式,一般会在文件的前几十个字节中直接用二进制数值标明图像的格式、图像的大小、图像的分辨率等属性,接下来大量的二进制字节都是图像具体数据。这就是文件的内部结构,音频和视频文件类似。
目前主要存在如下两种多媒体文件合成模式:
(1)以普通文件系统为载体的合成模式
此类合成模式在合成时,先将每个多媒体文件的片段都通过IRP从磁盘中读出后再传回到应用层进行拼接,然后再将拼接好的数据写入到新的文件中。
此类合成模式的优点是基于通用的文件系统,合成后的素材可以供第三方通过标准的文件读取方法进行访问。但这种方式涉及大量的磁盘IO操作,合成速度和磁盘读写速度直接挂钩,磁盘读写速度的瓶颈就决定了这种方式下合成速度缓慢。
(2)以专用文件系统为载体的合成模式
这类合成模式采用自主研发的特殊文件系统,合成多媒体文件时,合成指向性的中间文件,而不进行具体的视音频数据读写。合成文件仅记录多媒体文件的各类元数据信息,如:片段长短,起始帧号,源素材位置等。应用程序访问新的合成文件时,通过文件系统提供的特殊API进行文件读取。API函数内部对照合成的元数据索引信息,从源文件中找到所需要的视音频数据,并返回给应用程序。
此类合成模式大幅减少了磁盘访问量,使合成更加迅速,但因为其依赖于专业的文件系统及特殊的API函数,从而使得这类合成模式灵活性不足,依赖性太强。使得该方法合成出的文件只能适用于该特殊文件系统范围内,无法做到和普通文件系统文件的共用,一旦超出该文件系统的范围,仍然需要一次包含大量磁盘IO的操作。这一致命短板使得该方法运用领域过窄,无法彻底的解决多媒体文件片段拼接速度慢的问题。
发明内容
本发明的目的在于克服现有技术的不足,提供一种可大幅减少磁盘读写量,拼接合成速度快的基于文件驱动逻辑的多媒体文件片段快速拼接方法,而且在大幅提升合成速度的前提下保持良好通用性,适用于基本的文件系统,没有文件系统限制,使得第三方应用程序通过标准的文件访问方式即可使用,文件交互不存在瓶颈,运用范围更加广泛。
本发明的目的是通过以下技术方案来实现的:一种基于文件驱动逻辑的多媒体文件片段快速拼接方法,它包括以下步骤:
S1:应用层以多媒体文件基本格式生成一个虚拟多媒体文件,该虚拟多媒体文件包括文件头信息、文件尾信息和多个文件片段,记录各个多媒体片段文件索引和视音频帧数据对应关系;
S2:应用层发起对多媒体文件的操作请求;
S3:I/O管理层接收操作请求,构建I/O请求包IRP,并发送IRP命令至下层驱动程序;
S4:拦截I/O管理层下发的与文件系统间通信的IRP命令,判断该文件及其IRP命令类型是否需要进行处理,判断IRP中的文件操作命令,如果为打开命令FltCreatFile和读取命令FltReadFile,则不作处理直接发送至下层驱动程序;
S5:如果IRP中的文件操作命令为关闭文件操作命令FltClose,则处理IRP命令,关闭文件操作下计算虚拟多媒体文件的真实长度,修改资源管理器中已生成的虚拟多媒体文件大小,保证该文件可以被通用多媒体工具及文件系统所识别和使用;
S6:外部打开该物理文件时,根据虚拟多媒体中所创建的文件索引和视音频帧数据对应关系找到物理地址中正确的多媒体文件片段读取使用。
步骤S1所述的文件片段的信息包括媒体片段个数、所有源文件访问位置、片段长度及各视音频帧数据的偏移信息。
所述的多媒体文件具体的视音频数据转换为源文件内的文件偏移及大小。
步骤S2所述的操作请求包括文件创建、文件读取、文件写入。
步骤S3所述的I/O管理层为Windows系列系统中,用于管理系统中所有外部设备的管理系统,包括计算机系统中除CPU和内存以外的设备和装置。
步骤S3所述的IRP命令为Windows系列系统中,影响设备操作的命令,包括:
IRP_MJ_CREATE:文件创建;
IRP_MJ_READ:文件读取;
IRP_MJ_CLEANUP:关闭文件;
IRP_MJ_QUERY_INFORMATION:查询文件信息。
步骤S4所述的判断方法为:通过IRP卷绑定方式,绑定每个IRP卷,供程序进行过滤判断,首先根据文件物理地址判断该文件是否需要处理,其次判断文件请求命令,决定文件处理方式。
本发明的有益效果是:把通用媒体格式的元数据信息和具体的视音频数据进行剥离,用剥离后的元数据信息构建新的通用媒体文件,在访问合成文件时,通过驱动逻辑的处理访问原始文件的视音频数据,在操作系统文件驱动逻辑中,获取文件打开、查询、读取、关闭等I/O请求,改变其处理方法,实现访问逻辑。一方面,合成的虚拟多媒体视频文件其实只有几十KB到几百KB大小,和真实文件相比,该大小基本可以忽略不计,因此可大幅减少磁盘读写量,从而大幅提升拼接合成速度,达到秒级别的合成速率,提高了电视台、电影制作的工作效率;另一方面,在大幅提升合成速度的前提下能保持良好通用性,适用于基本的文件系统,没有文件系统限制,使得第三方应用程序通过标准的文件访问方式即可使用,合成后的素材可以适用于任何多媒体播放软件,文件交互不存在瓶颈,运用范围更加广泛。
附图说明
图1为虚拟多媒体文件结构示意图;
图2为IRP拦截及处理流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
一种基于文件驱动逻辑的多媒体文件片段快速拼接方法,它包括以下步骤:
S1:基于计算机系统中物理设备操作原理,应用层以多媒体文件基本格式生成一个虚拟多媒体文件,该虚拟多媒体文件包括文件头信息、文件尾信息和多个文件片段,记录各个多媒体片段文件索引和视音频帧数据对应关系;多媒体文件包括:视频:DV、DV25、DV50、AVI、MPEG、Rmvb、WMV、MOV、MXF等;音频:WAV、MP3、AAC、WMA等。
根据多媒体文件的基本格式,构建如图1所示的虚拟多媒体文件,并将该虚拟多媒体文件作为最终合成文件写入到物理磁盘。该虚拟多媒体文件包含真实的头尾信息及索引元数据,而具体的视音频数据则转换为源文件内的文件偏移及大小。
S2:应用层发起对多媒体文件的操作请求;
S3:I/O管理层接收操作请求,构建I/O请求包IRP,并发送IRP命令至下层驱动程序;
S4:拦截I/O管理层下发的与文件系统间通信的IRP命令,判断该文件及其IRP命令类型是否需要进行处理,判断IRP中的文件操作命令,如果为打开命令FltCreatFile和读取命令FltReadFile,则不作处理直接发送至下层驱动程序;
S5:如果IRP中的文件操作命令为关闭文件操作命令FltClose,则处理IRP命令,关闭文件操作下计算虚拟多媒体文件的真实长度,修改资源管理器中已生成的虚拟多媒体文件大小,保证该文件可以被通用多媒体工具及文件系统所识别和使用;
以IRP拦截技术为基础,拦截I/O管理层与文件系统间通信的IRP命令,在虚拟多媒体文件关闭前计算出其真实大小,并修改其在资源管理器中的对外显示大小,通过以上方法达到既确保文件合成迅速(真实的合成文件没有具体视音频数据,只有几KB大小),又使合成后的文件具备通用性和普遍性,可以让第三方应用程序通过标准的文件访问方式使用。
S6:如果不需要进行处理,外部打开该物理文件时,根据虚拟多媒体中所创建的文件索引和视音频帧数据对应关系找到物理地址中正确的多媒体文件片段读取使用。
步骤S1所述的文件片段的信息包括媒体片段个数、所有源文件访问位置、片段长度及各视音频帧数据的偏移信息。
步骤S2所述的操作请求包括文件创建、文件读取、文件写入。
步骤S3所述的I/O管理层是指Windows系列系统中,用于管理系统中所有外部设备的管理系统,此处所述的外部设备包括计算机系统中除CPU和内存以外的设备和装置(存储设备:软盘、硬盘、光盘、磁盘等;I/O设备:键盘、鼠标、显示器、打印机等)。
步骤S3所述的IRP命令为Windows系列系统中,影响设备操作的命令,包括:
IRP_MJ_CREATE:文件创建;
IRP_MJ_READ:文件读取;
IRP_MJ_CLEANUP:关闭文件;
IRP_MJ_QUERY_INFORMATION:查询文件信息。
步骤S4所述的判断方法为:通过IRP卷绑定方式,绑定每个IRP卷,供程序进行过滤判断,首先根据文件物理地址判断该文件是否需要处理,其次判断文件请求命令,决定文件处理方式。
如图2所示,IRP拦截及处理流程如下:
SS1:通过IRP卷绑定方式绑定每个IRP卷;
SS2:声明拦截该卷IRP命令;
SS3:声明需要过滤的操作,包括文件创建、文件打开、文件关闭;
SS4:通过文件路径判断是否为需要处理的文件,如果是需要处理的文件,则调用IRP接口方法处理文件(包括IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_CLEANUP、IRP_MJ_QUERY_INFORMATION),判断操作如果是“打开”则直接读取应用程序生成的模拟多媒体文件;如果是“关闭”则计算真实多媒体文件大小,修改其资源管理器中大小;如果是“创建”则不作处理,发送至下层驱动程序;
如果不是需要处理的文件,则不作处理,发送至下层驱动程序。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
机译: 网络上的存储驱动器,从网络依次访问存储介质中文件数据的方法,基于文件的存储逻辑(包括用于转换命令的逻辑),用于存储TOC,磁带,用于记录数据的逻辑和逻辑的存储逻辑
机译: (54)标题:将MFidia流化为异构客户端设备的方法(57)摘要:提供了一种动态准备要从服务器传送到客户端的媒体剪辑的方法。包括与客户端兼容的媒体回放格式的媒体属性被提供给服务器。客户端请求在指定的开始时间提供媒体内容项,并且服务器标识与所选媒体内容项有关的媒体内容文件所在的源。服务器从源获取媒体文件,并获取具有与客户端媒体属性兼容的回放格式的转码媒体片段文件。可以进一步以与客户端设备的传输格式媒体属性兼容的传输格式来准备转码后的媒体片段文件,并且可以将准备好的转码后的媒体片段文件的位置传达给客户端,以供客户端访问媒体片段。 。
机译: 多媒体文件和移动终端的显示方法及其应用,用于快速搜索多媒体文件