基于DirectShow的外挂字幕重定向方法及系统的制作方法
【技术领域】
[0001]本发明涉及多媒体重定向技术领域,尤其涉及一种基于DirectShow的外挂字幕重定向方法及系统。
【背景技术】
[0002]DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,是一套完全基于COM (Component Object Model,即组件对象模型)的应用系统,它的组成模块是一种称之为Filter (过滤器)的COM组件,每一个Filter完成数据流上的某些功能。
[0003]现有技术如图1所示,多媒体重定向技术使用的是DirectShow框架,服务端和客户端内均包含有Source Filer (源过滤器)、Transform Filer (传输过滤器)、RenderFiler (渲染过滤器),视频文件位于服务端内,通过Source Filer (源过滤器)获取服务端中的视频文件,将该视频文件传输至Transform Filer (传输过滤器)进行解析,将视频文件中的视频数据解析成数据流经Render Filer (植染过滤器)下发至客户端的SourceFiler (源过滤器),再经Transform Filer (传输过滤器)传输至Render Filer (植染过滤器)进行播放。
[0004]随着云计算技术的推广,在虚拟桌面中观看高清视频成为人们特定的需求。在虚拟桌面播放高清视频会出现画面不流畅以及需要占用大量服务器资源的问题,为了解决这些问题,各大虚拟厂商推出多媒体重定向技术来解决。而对于一些高清视频,其本身并不内嵌字幕,需要加载的外挂字幕支持。外挂字幕是视频文件和字幕文件分离,在播放的时候要导入字幕文件,比如DVD就会自动导入字幕,外挂字幕的好处是:可以导入自己国家的语言,且外挂字幕相对于内嵌字幕来说对视频的质量损害就会小很多。但现有的多媒体重定向技术无法播放外挂字幕,从而无法达到更好的视频观看体验。
【发明内容】
[0005]本发明要解决的技术问题之一,在于提供一种基于DirectShow的外挂字幕重定向方法,是为了解决现有的多媒体重定向技术无法播放外挂字幕的问题。
[0006]本发明的问题之一,是这样实现的:
[0007]一种基于DirectShow的外挂字幕重定向方法,包括如下步骤:
[0008]步骤1、从服务端中获取字幕文件;
[0009]步骤2、将该字幕文件发送至客户端,并存储至该客户端的一目录中;
[0010]步骤3、将DirectVobSub Filter加载至客户端的视频播放链路中,通过该DirectVobSub Filter上的接口获取该字幕文件所在的目录路径,然后DirectVobSubFilter通过该目录路径将该字幕文件中的字幕数据解析成数据流;
[0011]步骤4、调整客户端中的视频数据每一帧的时间戳,使视频数据与字幕数据显示的时间相匹配,从而DirectVobSub Filter能根据视频数据每一帧的时间戳,将字幕数据添加至视频数据后,通过客户端的视频播放链路对调整后的视频数据进行播放。
[0012]进一步地,所述步骤I具体如下:
[0013]在DirectShow 框架中,使用 FilterGraph 中的 Source Filter 来获取IFileSourceFilter接口,并通过该IFileSourceFilter接口从服务端中找出视频文件,然后通过该视频文件所在的文件路径找出与该视频文件的文件名相同的字幕文件。
[0014]进一步地,所述步骤3具体如下:
[0015]将DirectVobSub Filter 加载至 FilterGraph 中以获取 IDirectVobSub 接口,使用该IDirectVobSub接口的put_filename方法获取该字幕文件所在的目录路径,然后DirectVobSub Filter通过该目录路径将该字幕文件中的字幕数据解析成数据流。
[0016]本发明要解决的技术问题之二,在于提供一种基于DirectShow的外挂字幕重定向的系统,是为了解决现有的多媒体重定向技术无法播放外挂字幕的问题。
[0017]本发明的问题之二,是这样实现的:
[0018]一种基于DirectShow的外挂字幕重定向的系统,包括:
[0019]获取模块,用于从服务端中获取字幕文件;
[0020]发送模块,用于将该字幕文件发送至客户端,并存储至该客户端的一目录中;
[0021]设置模块,用于将DirectVobSub Filter加载至客户端的视频播放链路中,通过该DirectVobSub Filter上的接口获取该字幕文件所在的目录路径,然后DirectVobSubFilter通过该目录路径将该字幕文件中的字幕数据解析成数据流;
[0022]调整模块,用于调整客户端中的视频数据每一帧的时间戳,使视频数据与字幕数据显示的时间相匹配,从而DirectVobSub Filter能根据视频数据每一帧的时间戳,将字幕数据添加至视频数据后,通过客户端的视频播放链路对调整后的视频数据进行播放。
[0023]进一步地,所述获取模块具体包括:
[0024]在DirectShow 框架中,使用 FilterGraph 中的 Source Filter 来获取IFileSourceFilter接口,并通过该IFileSourceFilter接口从服务端中找出视频文件,然后通过该视频文件所在的文件路径找出与该视频文件的文件名相同的字幕文件。
[0025]进一步地,所述设置模块具体包括:
[0026]将DirectVobSub Filter 加载至 FilterGraph 中以获取 IDirectVobSub 接口,使用该IDirectVobSub接口的put_filename方法获取该字幕文件所在的目录路径,然后DirectVobSub Filter通过该目录路径将该字幕文件中的字幕数据解析成数据流。
[0027]本发明具有如下优点:本发明能够解决在云计算环境中使用多媒体重定向技术观看高清视频时无法加载外挂字幕的问题。
【附图说明】
[0028]下面参照附图结合实施例对本发明作进一步的说明。
[0029]图1为现有技术的视频数据传输流程图。
[0030]图2为本发明的数据传输流程图。
[0031 ] 图3为本发明方法执行流程图。
【具体实施方式】
[0032]为使本发明更明显易懂,兹以一优选实施例,并配合附图作详细说明如下。
[0033]如图2所示,本发明是基于多媒体重定向技术的DirectShow框架进行的改进,月艮务端包含有Source Filer (源过滤器)'Transform Filer (传输过滤器)、Render Filer (植染过滤器),而客户端包含有Source Filer (源过滤器)'Transform Filer (传输过滤器)、DirectVobSub Filter (字幕处理过滤器)、Render Filer (植染过滤器),视频文件与字幕文件均位于服务端内,通过Source Filer (源过滤器)获取服务端中的视频文件,再通过该视频文件的文件路径找到字幕文件并传输至客户端的一临时目录中,同时将该视频文件传输至Transform Filer (传输过滤器)进行解析,将视频文件中的视频数据解析成数据流经Render Filer (植染过滤器)下发至客户端的Source Filer (源过滤器),再经TransformFiler (传输过滤器)传输至DirectVobSub Filter (字幕处理过滤器),通过DirectVobSubFilter (字幕处理过滤器)上的接口获取字幕文件所在的目录路径,并通过该目录路径将该字幕文件中的字幕数据解析成数据流;接着调整客户端中的视频数据每一帧的时间戳,使视频数据与字幕数据显示的时间相匹配,从而DirectVobSub Filter能根据视频数据每一帧的时间戳,将字幕数据添加至视频数据后,最后通过客户端的Render Filer(渲染过滤器)对调整后的视频数据进行播放。
[0034]如图3所示,本发明的一种基于DirectShow的外挂字幕重定向方法,包括如下步骤:
[0035]步骤1、从服务端中获取字幕文件;具体有:在DirectShow框架中,使用 FilterGraph 中的 Source Filter 来获取 IFileSourceFilter 接口,并通过该IFileSourceFilter接口从服务端中找出视频文件,然后通过该视频文件所在的文件路径找出与该视频文件的文件名相同,且后缀名为