1.一种基于Spice和内存共享的视频播放方法,其特征在于,包括以下步骤:
步骤一、将Spice Server和所有的Spice Client配置成为一个集群,把该集群内的所有物理内存通过逻辑扩展成为一个总的地址空间,在总的地址空间上建立动态内存池,并通过修改虚拟机监视器VMM向上层应用程序提供一个统一的内存管理接口;
步骤二、Spice Client向Spice Server发送申请播放视频的请求,Spice Server接收到请求后判断Spice Client的物理显卡是否具有解码播放该视频的能力,若没有解码播放能力,则进入步骤三,若有解码播放能力,则进入步骤四;
步骤三、Spice Server利用Spice协议将Spice Client申请播放的视频处理为一帧一帧的图像,通过MJPEG算法压缩后由Spice Server发送到Spice Client进行解压播放;
步骤四、Spice Client向HTTP网站发送请求建立连接,集群中的Spice Server从动态内存池中为Spice Client分配物理内存,HTTP网站通过RTMFP协议将视频直接下载到Spice Client被分配的物理内存中,Spice Server生成的虚拟机VM找到该物理内存并调用自身播放器或者视频网页上的Flash插件,结合Spice Client的物理显卡播放视频;
其中,所述集群内的Spice Server作为内存服务器,在内存页面中为每个Spice Client定义了唯一的server_ID, Spice Server从动态内存池中为Spice Client分配物理内存时,Spice Client首先将分配到的内存页面里的server_ID与自身的server_ID相比较,若两者相同则访问自身物理内存,若两者不同则将内存页面里的server_ID提交给Spice Server,通过Spice Server中保存的地址映射表查找动态内存池,获得Spice Client所要访问内存的物理地址并访问该内存;
所述Spice Client与HTTP网站建立连接的过程如下:Spice Client向HTTP网站发送申请建立连接的请求,HTTP网站接收到请求后向Spice Server发送握手请求数据包,Spice Server向Spice Client转发接收到的握手请求数据包,Spice Client接收到握手请求数据包后向HTTP网站发送响应数据包,HTTP网站接收到响应数据包后与Spice Client建立连接进行通信。