一种基于应用虚拟化技术的视频重定向系统及方法
技术领域
本发明涉及应用虚拟化技术领域,具体涉及一种基于应用虚拟化技术的视频重定向系统及方法。
背景技术
随着云计算技术的发展,应用虚拟化为企业的移动办公提供了完整的解决方案。应用虚拟化将企业的桌面和数据虚拟成云资源,用户可以在常用的移动设备上访问这些资源。然而,对于某些应用例如视频的展示效果上,用户能够明显感觉到与传统PC用户体验效果上的不同,一般会感觉到视频不流畅,有明显的刷屏现象。而且,对于移动办公的用户,一般使用2G或3G网络,对网络带宽和网络流量都有一定的限制,但是使用传统的应用虚拟化技术,终端用户在播放视频时,会消耗比原视频文件大几倍的流量,这样就增加了用户的使用成本,在一定程度上阻碍了应用虚拟化技术商业化的推广。
传统的应用虚拟化技术在处理视频资源时,由于其本身的技术限制,造成用户体验差,网络带宽要求高,并会消耗比原始文件更大的网络流量。
应用虚拟化技术是将人机交互逻辑与计算逻辑相隔离,当用户操作应用时,应用的展示和交互存在于终端设备上,而应用资源的计算集中在服务器端设备上。其原理是:应用虚拟化技术将终端用户的操作封装成事件,通过虚拟通道发送到服务器端,服务器端完成计算,将图像通过虚拟通道发送到终端,由终端处理完成后展现给用户。
由于上述应用虚拟化技术的工作原理的限制,当终端用户播放视频时,视频的播放是在服务器端进行的,然后服务器端将解码后生成的一帧一帧的图片发送到终端,这样视频播放的流畅度就受限于终端处理图片的能力以及视频格式、网络带宽等因素。此过程概括为:服务器端解码视频,生成一帧图片,通过虚拟通道发送图片到终端,终端处理图片。
发明内容
本发明的目的就是为了解决上述问题,提出了一种基于应用虚拟化技术的视频重定向系统及方法,服务器端将视频的原始流通过专属数据通道发送到终端,终端集成解码器,接收到数据流,通过调用解码器,完成视频播放。此过程概括为:服务器端读取原始视频流,通过专属数据通道发送到终端,终端通过解码器播放视频。
该方法将原始压缩视频流通过专属数据通道发送到终端,由终端在本地解码显示。因为这种方法通过网络传输的是压缩的视频流,而不是一系列未压缩的位图,因此将显著减少网络带宽的占用,此时带宽占用与从视频播放器播放流内容或通过共享方式播放服务器上的视频一致,并且,无论播放视频窗口是否全屏,网络带宽占用率保持不变。这种方法还可以节省服务器资源,服务器不再花费CPU资源解码视频内容并进行二次编码,视频解码全由终端负责,并在终端设备上被无缝的渲染显示。
为了实现上述目的,本发明采用如下技术方案:
一种基于应用虚拟化技术的视频重定向系统,包括:应用虚拟化技术的终端设备和服务器;所述终端设备上集成解码器模块,服务器上集成解析器模块,所述解码器模块与解析器模块之间通过应用虚拟化技术专属的数据通道实现数据的交互。
使用播放器软件播放视频时,服务器端播放器首先调用服务器上的解析器模块,由解析器模块读取视频文件,并将读取的内容保存为二进制视频流,利用所述专属数据通道将视频流发送到终端设备,终端设备的解码器模块对视频流进行分离和解码过程。
所述解析器模块是一种软件实现,集成在服务器上,并能够被播放器软件调用。
所述解码器模块是一种软件实现,集成在在终端设备上。
一种基于应用虚拟化技术的视频重定向系统的实现方法,包括以下步骤:
(1)播放器调用服务器上的解析器模块,解析器模块读取原始压缩视频流,并将读取的内容保存为二进制格式的视频流。
(2)服务器端将保存的二进制视频流通过应用虚拟化技术的专属数据通道发送至终端的解码器模块。
(3)终端设备的解码器模块经过分离和解码过程,将视频无缝渲染显示。
所述步骤(1)的具体工作步骤如下:
步骤(1-1):服务器端启动播放器。
步骤(1-2):播放器调用服务器上的解析器。
步骤(1-3):解析器打开数据通道,如果打开失败转入步骤(1-6)。
步骤(1-4):解析器读取原始压缩视频文件,如果读取失败转入步骤(1-6)。
步骤(1-5):解析器循环读取视频文件,直到视频文件结束,并将读取的视频文件保存为二进制格式视频流;解析器每次读取一定流量的视频流,并将视频流通过虚拟通道发送到终端,每次发送完数据,都等待终端的响应,如果响应内容为正常,则继续发送数据,否则终止发送数据,退出循环。
步骤(1-6):解析器终止程序运行。
所述步骤(2)中应用虚拟化技术的专属数据通道传输数据的具体工作步骤如下:
步骤(2-1):启动专属数据通道,利用专属数据通道建立终端与服务器之间的连接;其中,数据通道与终端连接构建数据通道客户端,数据通道与服务器端连接构建数据通道服务端。
步骤(2-2):在数据通道客户端初始化接收视频流数据的队列,启动播放视频的线程。
步骤(2-3):当数据通道客户端接收到数据通道服务端发送的视频流数据时,数据通道客户端将数据放入到队列中。
步骤(2-4):当队列中的数据大于等于队列放入数据与读取数据之间的阈值时,停止接收数据,等待终端解码器读取数据,直到队列中的数据小于所述阈值时继续放入数据。
步骤(2-5):在所述播放视频的线程中读取队列中的数据,调用终端设备上的解码器提供的相关接口,处理视频。
所述步骤(3)中终端解码器解码视频文件的具体工作步骤如下:
步骤(3-1):终端解码器读取队列中的视频流数据。
步骤(3-2):判断视频的格式和编码,如果能够播放则转入步骤(3-3),否则提示用户不支持该格式的视频播放,终止程序。
步骤(3-3):将视频流数据进行分离,分离出视频数据和音频数据。
步骤(3-4):将视频数据交给视频解码器处理,将音频数据交给音频解码器处理。
本发明的有益效果是:
本发明提出的基于应用虚拟化的专属数据通道技术进行视频重定向的系统及方法,思路新颖且易于实现。通过这种方式,将播放视频的压力由服务器端转移到终端,由于终端设备的能力随着信息化技术的发展在不断增强,因此能充分利用终端设备的硬件能力。
通过这种方式,在原有应用虚拟化技术的基础上开辟了一条终端与服务器端视频播放的专属通道,由于专属数据通道技术是应用虚拟化技术的基础,因此并没有引入难以与应用虚拟化技术相融合的其他技术。
通过这种方式,网络传输的是原始视频流,而不是经过服务器端解码后的位图,因此能有效减少网络带宽的占用;通过这种方式,服务器端只需要读取原始视频流,而不需要对视频流进行解码,因此能有效减少服务器端CPU资源的占用。
通过这种方式,播放视频是由终端集成的解码器完成,因此播放视频格式的支持不受服务器端的播放器播放视频格式的限制;通过这种方式,用户对视频的操作直接由终端设备处理,而不是由服务器端的播放器处理,因此能有效的提高用户交互的速度增强用户体验。
附图说明
图1为本发明终端与服务器端交互示意图;
图2为本发明解析器模块读取视频文件流程图;
图3为本发明专属数据通道传输数据流程图;
图4为本发明解码器模块解码视频文件流程图;
具体实施方式:
下面结合附图与实施例对本发明做进一步说明:
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意实施例及其说明用于解释本发明,并不够成对本发明的不当限定。
本技术方案假设,终端和服务器端之间基于某种应用虚拟化技术已经能够正常通讯,也就是说,能够满足用户需求进行移动办公。因此,本技术方案不涉及如何在终端安装应用虚拟化客户端软件,以及如何在服务器端安装应用虚拟化服务器端软件。
如图1所示,一种基于应用虚拟化技术的视频重定向系统,包括:应用虚拟化技术的终端设备和服务器;所述终端设备上集成解码器模块,服务器上集成解析器模块,所述解码器模块与解析器模块之间通过应用虚拟化技术专属的数据通道实现数据的交互。
使用播放器播放视频时,播放器首先调用服务器上的解析器模块,由解析器模块读取视频文件,并将读取的内容保存为二进制视频流,利用所述专属数据通道将视频流发送到终端设备,终端设备的解码器模块对视频流进行分离和解码过程。
一种基于应用虚拟化技术的视频重定向系统的实现方法,包括以下步骤:
(1)播放器调用服务器上的解析器模块,解析器模块读取原始压缩视频流,并将读取的内容保存为二进制格式的视频流。
(2)服务器端将保存的二进制视频流通过专属数据通道发送至终端的解码器模块。
(3)终端设备的解码器模块经过分离和解码过程,将视频无缝渲染显示。
步骤(1)中的服务器端是指应用虚拟化技术的服务端设备,解析器模块是指一种软件实现,安装在服务器端设备上,原始压缩视频流是指视频文件的二进制格式数据。
步骤(2)中的专属数据通道是指终端设备与服务器端设备之间建立的一种用于数据传输的网络通道,将原始压缩数据流发送到终端是指,将视频文件的二进制格式的数据经过专属数据通道建立的网络连接,由服务器端设备传递到终端设备。
步骤(3)中的终端是指应用虚拟化技术的终端设备,解码器模块是指一种能够播放视频的软件实现,安装在终端设备上。渲染显示是指终端设备提供了展示图像的能力,解码器模块能够使用终端设备提供的能力将视频内容展示给用户。
如图2所示,解析器模块是一种软件实现,需要安装在服务器端设备上,并能够被播放器软件调用。当用户在终端设备上通过应用虚拟化技术,使用服务器端播放器软件播放视频时,播放器软件首先调用解析器模块,由解析器模块读取视频文件,并将读取的内容保存为二进制视频流,通过终端与服务器端之间建立的专属数据通道,将视频流发送到终端。服务器端解析器模块读取视频文件的具体工作步骤如下:
步骤(1-1):服务器端启动播放器软件。
步骤(1-2):播放器软件调用解析器模块。
步骤(1-3):解析器模块打开专属数据通道,如果失败转入步骤(1-6)。
步骤(1-4):解析器模块打开视频文件,如果失败转入步骤(1-6)。
步骤(1-5):解析器模块循环读取视频文件,直到视频文件结束。每次读取128K二进制视频流,将视频流通过专属数据通道发送到终端。每次发送完数据,都等待终端的响应,如果响应内容为正常,则继续发送数据,否则终止发送数据,退出循环。
步骤(1-6):解析器模块终止程序运行。
如图3所示,终端与服务器端之间建立的专属数据通道,是应用虚拟化技术传输数据的基础。应用虚拟化技术会提供建立专属数据通道,以及通过专属数据通道发送数据和接收数据等相关操作的接口。安装在终端上的应用虚拟化客户端软件与安装在服务器端的应用虚拟化服务器端软件,通过网络在建立连接时,需要建立一条终端解码器模块与服务器端解析器模块之间数据交互的专属的数据通道。专属数据通道传输数据的具体工作步骤如下:
步骤(2-1):终端与服务器端建立连接时,启动专属数据通道。数据通道与终端的连接称为数据通道客户端,数据通道与服务器端的连接称为数据通道服务端。
步骤(2-2):当专属数据通道建立连接成功时,在数据通道客户端初始化接收视频流数据的队列,启动播放视频的线程。在该线程中读取队列中的数据,调用解码器模块提供的相关接口,处理视频。
步骤(2-3):当数据通道客户端接收到数据通道服务端发送的视频流数据时,数据通道客户端将数据放入到队列中。
步骤(2-4):当队列中的数据大于等于1M时,停止接收数据,等待终端解码器模块读取数据,直到队列中的数据小于1M时继续放入数据。
所述步骤(2-3)中的队列,是指一种存取数据的数据结构。
所述步骤(2-4)中的数据大于等于1M,是指队列放入数据与读取数据之间的阈值,队列能够放入的数据应该大于1M,设置此值是为了控制服务器端发送视频流的速度。
所述步骤(2-4)中的等待,是指在满足条件之前的一种处理数据的状态。
如图4所示,解码器模块,是一种软件实现,需要安装在终端设备上。解码视频时,要经过分离和解码两个过程。本地播放视频文件时,这两步都是在服务器端完成,但是当要使用视频重定向时,分离和解码的过程都是在终端完成。首先由服务器端将原始视频流传输到终端,然后由终端进行分离和解码。所述分离是指将视频流中的数据,分离成视频数据和音频数据。所述解码是指使用视频解码器解码视频数据,使用音频解码器解码音频数据。终端解码器模块解码视频文件的具体工作步骤如下:
步骤(3-1):读取队列中的视频流数据。
步骤(3-2):判断视频的格式和编码,如果能够播放则转入步骤(3-3),否则提示用户不支持该格式的视频播放,终止程序。
步骤(3-3):将视频流数据进行分离,分离出视频数据和音频数据。
步骤(3-4):将视频数据交给视频解码器处理,将音频数据交给音频解码器处理。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。