【发明内容】
本发明的目的在于提供一种视频文件远程共享的方法,以解决传统方法视频共享达不到实时性的缺点。
本发明的目的在于提供一种视频文件远程共享的系统,以解决传统方法视频共享达不到实时性的缺点。
为了解决上述问题,根据本发明的一方面,本发明提出一种视频文件远程共享系统,其包括:视频获取模块、视频存储模块、视频控制模块、虚拟视频模块及即时通讯模块。其中,所述即时通讯模块用于实现与远程的另一即时通讯模块的即时通讯,其可将所述虚拟视频模块选作视频通讯设备,所述虚拟视频模块为注册于操作系统中的虚拟视频设备。在所述即时通讯模块将所述虚拟视频模块选作视频通讯设备时,所述虚拟视频模块通过视频控制模块通知视频获取模块需要共享的视频文件,所述视频获取模块从所述视频文件中获取视频数据并将所述视频数据存储入视频存储模块内,所述虚拟视频模块从视频存储模块内读取视频数据并转给所述即时通讯模块,从而实现本地视频文件的远程即时共享。
进一步的,所述视频获取模块获取视频数据后会将所述视频数据进行格式转换,之后再将格式转换后的视频数据存储到所述视频存储模块内。
进一步的,所述虚拟视频模块从视频存储模块内读取视频数据与所述视频获取模块将所述视频数据存储入视频存储模块内是相互独立的。
进一步的,所述视频存储模块在收到来自所述视频获取模块的第一帧视频数据时,通过视频控制模块将视频数据存储位置信息告知虚拟视频模块,之后所述虚拟视频模块才从视频存储模块内的视频数据存储位置处读取视频数据。
进一步的,所述虚拟视频模块按照预定速率从视频存储模块内读取视频数据。
进一步的,所述虚拟视频单元为基于DirectShow Filter技术实现的应用层COM组件。
进一步的,所述视频文件远程共享系统还包括本地播放模块,所述视频获取模块将从所述视频文件中获取视频数据复制分流为两份视频数据,将其中一份视频数据存储入视频存储模块内,而将另一份视频数据提供给本地播放模块进行实时播放。
根据本发明的另一方面,本发明提出一种视频文件远程共享方法,其应用于视频文件远程共享系统中,所述视频文件远程共享系统包括视频获取模块、视频存储模块、视频控制模块、虚拟视频设备及即时通讯模块,所述方法包括:所述即时通讯模块枚举视频通讯设备,并选择虚拟视频设备作为视频通讯设备;通过该虚拟视频模块选择需要共享的视频文件;该虚拟视频模块通过视频控制模块将选择的视频文件告知视频获取模块;所述视频获取模块从选择的视频文件中获取视频数据并所述视频数据存放至视频存储模块内;所述虚拟视频设备按照预设速率从视频存储模块中读取视频数据;和所述即时通讯模块从虚拟视频设备中获得视频数据并提供给远端。
进一步的,当视频存储模块收到第一帧视频数据时,通过视频控制模块将视频数据存储位置信息告知虚拟视频设备,之后所述虚拟视频设备才按照预设速率从视频存储模块的视频数据存储位置处读取视频数据。
进一步的,所述视频获取模块将从所述视频文件中获取视频数据复制分流为两份视频数据,将其中一份视频数据存储入视频存储模块内,而将另一份视频数据提供给本地播放模块进行实时播放。
进一步的,视频存储模块中每一帧新视频数据到来时,将会覆盖上一帧视频数据。
根据本发明的再一方面,本发明提出一种虚拟视频系统,其包括:视频获取模块、视频存储模块、视频控制模块及虚拟视频模块。其中,所述虚拟视频模块为注册于操作系统中的虚拟视频设备,其通过视频控制模块通知视频获取模块需要共享的视频文件,所述视频获取模块从所述视频文件中获取视频数据并将所述视频数据存储入视频存储模块内,所述虚拟视频模块按照预设速率从视频存储模块内读取视频数据以供使用。
进一步的,视频存储模块中每一帧新视频数据到来时,将会覆盖上一帧视频数据。
进一步的,所述视频存储模块在收到来自所述视频获取模块的第一帧视频数据时,通过视频控制模块将视频数据存储位置信息告知虚拟视频模块,之后所述虚拟视频模块才按照预设速率从视频存储模块内的视频数据存储位置处读取视频数据。
与现有技术相比,本发明通过增加虚拟视频单元,当即时通讯模块选择所述虚拟视频单元时,所述视频获取模块从所述视频文件中获取视频数据并将所述视频数据存储入视频存储模块内,所述虚拟视频模块从视频存储模块内读取视频数据并转给所述即时通讯模块,从而实现本地视频文件的远程即时共享。
【具体实施方式】
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。很显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在不脱离本发明本质和精神的情况下所获得的所有其他实施例,都属于本发明公开和保护的范围。
在该说明书中不同地方出现的“在一个实施例中”可能并非指的是同一个实施例,也不是与其他实施例相互排斥的相互独立或选择性的实施例。此外,在流程图或图示模块的顺序,或者用来描述本发明的一个或多个实施例的序号并非固定的指代任何特定的顺序,也不构成对本发明的限制。
请参照图1,其示出了本发明中的视频文件远程共享系统的一个实施例的方框结构图。所述视频文件远程共享系统包括虚拟视频模块110、视频控制模块120、视频获取模块130、视频存储模块140和即时通讯模块150。
所述即时通讯模块150可以用于实现与远程的另一即时通讯模块的即时通讯。在一个实施例中,所述即时通讯模块150可以是MSN或QQ等。所述即时通讯模块150支持视频通讯功能,并可以选择所述虚拟视频模块作为视频通讯设备。
所述虚拟视频模块110为注册于操作系统中的虚拟视频设备,通过虚拟视频模块110可以选择需要共享的视频文件。所述视频文件可以是任何可播放格式的视频文件,比如为MPEG格式的影视文件、RM格式的影视文件、RMVB格式的影视文件或各种图片文件等。随后,所述虚拟视频模块110可以通过视频控制模块120通知视频获取模块130选定的共享视频文件。
在得知选定的共享视频文件后,所述视频获取模块130从所述视频文件中获取视频数据并将所述视频数据存储入视频存储模块140内。在一个实施例中,所述视频获取模块130是从视频文件中解析出一帧帧的图像数据,并将各帧图像数据按顺序存储入视频存储模块140内。在一个实施例中,所述视频存储模块140仅可以存储一帧图像数据,这样每一帧新的图像数据到来时,将会覆盖上一帧图像数据。在一个优选的实施例中,所述视频获取模块130还可以对获取的视频数据的格式进行转换,这样可以使得本发明的视频文件共享系统可以兼容各种各样的视频文件格式。在具体实现时,所述虚拟视频设备110具有自己能支持的视频播放格式,其会将自己支持的视频格式通过视频控制模块告知视频获取模块,所以所述视频获取模块会根据此格式进行视频数据格式转换。。
所述视频存储模块140在收到来自所述视频获取模块的第一帧视频数据时,可以通过视频控制模块120将视频数据存储位置信息告知虚拟视频模块110,之后所述虚拟视频模块110就可以从视频存储模块140内的视频数据存储位置处读取视频数据。在另一个实施例中,所述视频存储模块140可以将来自所述视频获取模块的视频数据放置于预定位置,这样所述视频存储模块140就不需要通过视频控制模块120将视频数据存储位置信息告知虚拟视频模块110了,所述虚拟视频模块110在延迟预定时间后自动到预定位置读取视频数据就可以了。
在一个实施例中,所述虚拟视频模块110可以按照预设速率从所述视频存储模块140中读取视频数据,以保证后续播放时的帧率保持固定,比如预设速率可以为30帧/秒,这样虚拟视频模块110保证了固定的速率。需要注意的是,所述虚拟视频模块110从所述视频存储模块140读取视频数据的速率与视频获取模块130将视频数据写入所述视频存储模块140的速率相对独立的,写入速率是可以有一定变化的,而读出速率则一直是固定的。
所述虚拟视频模块110将从视频存储模块内读取的视频数据转给所述即时通讯模块150,并通过所述即时通讯模块150将所述视频数据传送给远程的另一即时通讯模块,从而实现本地视频文件的远程即时共享。
这样在本发明中,就不需要将视频文件一次性的传送给远端用户后,远端用户才能观看,而可以实时的将视频文件传送给远端用户,而在传送过程当中,远端用户就可以观看到实施的视频文件播放画面。
在另一个优选的实施例中,所述虚拟视频模块110可以通过所述视频控制模块120控制所述视频获取模块130进行视频文件切换和视频文件的快进、快退、暂停和定点播放等操作,方便地实现了和远程客户端之间的视频分享功能。
在再一个优选的实施例中,本发明中的所述视频文件远程共享系统还包括本地播放模块(未示出),此时,所述视频获取模块130可以将从所述视频文件中获取视频数据分流为两份同样的视频数据,将其中一份视频数据存储入视频存储模块内,而将另一份视频数据提供给本地播放模块进行实时播放,这样本地也可以观看到同样的视频文件,从而实现本地和远端同时观看同一个视频文件的效果。
在一个具体的使用场景中,本地用户张三可能希望与远程用户李四共同分享自己PC机上的一个电影《魔戒》,此时用户张三可以在本地自己的即时通讯模块150比如QQ上选择虚拟视频模块110作为视频通讯工具,之后他可以通过虚拟视频模块110选择《魔戒》这一视频文件,而该虚拟视频模块110则通过视频控制模块120将选择的视频文件《魔戒》告知视频获取模块130,随后所述视频获取模块130开始从选择的视频文件《魔戒》中获取视频数据,并将从所述视频文件《魔戒》中获取视频数据分流为两份同样的视频数据,将其中一份视频数据存储入视频存储模块内,而将另一份视频数据提供给本地播放模块进行实时播放,所述虚拟视频模块110可以按照预设速率从所述视频存储模块140中读取视频数据,并将从视频存储模块140内读取的视频数据转给本地的所述即时通讯模块150,所述即时通讯模块150将所述视频数据传送给远程用户李四的即时通讯模块上。这样,可以实现张三和李四在不同地方同时共享一个视频文件的目的,并且本地用户张三还可以随时进行快进、快退、暂停和定点播放等操作,给用户带来了全新的视频共享体验。
请参照图2,其示出了本发明中的视频文件远程共享方法的一个实施例的流程图。该视频文件远程共享方法,可以应用于图1所示的视频文件共享系统中,所述视频文件远程共享方法包括如下步骤。
步骤210、所述即时通讯模块150枚举视频通讯设备,并选择虚拟视频模块110作为视频通讯设备;
步骤220、通过所述虚拟视频模块110选择需要共享的视频文件;
步骤230、该虚拟视频模块110通过视频控制模块120将选择的视频文件告知视频获取模块130;
步骤240所述视频获取模块130从选择的视频文件中获取视频数据并所述视频数据存放至视频存储模块140内;
步骤250、所述虚拟视频设备110按照预设速率从视频存储模块140中读取视频数据;和
步骤260、所述即时通讯模块150从虚拟视频设备110中获得视频数据并提供给远端。
在一个优选的实施例中,当视频存储模块140收到第一帧视频数据时,还可以通过视频控制模块将视频数据存储位置信息告知虚拟视频设备110,之后所述虚拟视频设备110才按照预设速率从视频存储模块140的视频数据存储位置处读取视频数据。
在另外一个优选的实施例中,所述视频获取模块130将从所述视频文件中获取视频数据分流为两份视频数据,将其中一份视频数据存储入视频存储模块140内,而将另一份视频数据提供给本地播放模块进行实时播放。
在再一个优选的实施例中,视频存储模块中每一帧新视频数据到来时,将会覆盖上一帧视频数据。
在一个具体的使用场景中,正在视频通话的本地用户王五可能希望与远程用户赵六共同分享自己上网本上的一个产品宣传视频,此时用户张三可以在本地的即时通讯模块150比如SKYPE上选择虚拟视频模块110作为视频通讯工具,之后他可以通过虚拟视频模块110选择所述产品宣传视频这一视频文件,而该虚拟视频模块110可以通过视频控制模块120将选择的视频文件所述产品宣传视频告知视频获取模块130,所述视频获取模块130从选择的视频文件所述产品宣传视频中获取视频数据,并将从所述视频文件所述产品宣传视频中获取视频数据复制分流为两份同样的视频数据,将其中一份视频数据存储入视频存储模块内,而将另一份视频数据提供给本地播放模块进行实施播放,所述虚拟视频模块110可以按照预设速率从所述视频存储模块140中读取视频数据,并将从视频存储模块140内读取的视频数据转给所述即时通讯模块150,所述即时通讯模块150将所述视频数据传送给远程用户赵六的SKYPE上。这样,给用户带来了全新的商务共享体验。
所述虚拟视频单元150是基于DirectShow Filter(过滤器)技术实现的应用层COM组件,并注册于操作系统中。
进一步,所述虚拟视频单元150通过继承DirectShow Source Filter(源过滤器)而注册到所述操作系统的应用层。
所述虚拟视频单元150基于微软提供的DirectShow技术框架和COM技术实现。该虚拟视频单元是一个推模式的Source Filter,从CBaseFilter继承而来。该Source filter具有两个输出Pin,即Capture pin和Still Pin。该Filter同时实现了视频设备的相关接口,供第三方程序(比如即时通讯模块)调用。最后在注册该组件时将其注册类别设置为CLSID_VideoInputDeviceCategory,即可自动将其注册为视频设备。
所述虚拟视频单元150注册于操作系统后,视频应用程序(如即时通讯软件)即可以通过枚举系统视频设备枚举到所述虚拟视频单元150,从而可以选择所述虚拟视频单元150作为视频通讯设备。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。