技术新讯 > 电子通信装置的制造及其应用技术 > 一种基于SPICE协议的服务端画面数据记录方法  >  正文

一种基于SPICE协议的服务端画面数据记录方法

  • 国知局
  • 2024-08-02 12:43:42

本发明涉及云计算领域,特别是针对云桌面服务的监控和审计技术。具体地,本发明涉及一种基于spice(simpleprotocolforindependentcomputing environment)协议的服务端画面数据记录方法。

背景技术:

1、随着云计算技术的发展,桌面虚拟化成为企业和组织中广泛采用的资源交付手段之一。桌面虚拟化技术将所有的桌面虚拟机集中托管于数据中心,用户通过远程访问服务器来获得完整的个人电脑使用体验,而管理员则可以在后台集中管理服务器上的应用程序,从而大幅降低管理成本和提高灵活性。

2、本发明针对的是redhat公司研发的spice(simpleprotocolforindependentcomputingenvironment)开源虚拟化桌面传输协议。spice协议与传统的桌面传输协议有很大的不同,它是直接与虚拟机服务器通信,而传统的传输协议则是与运行于虚拟机之上的guest虚拟机进行通信。这一特性使得spice协议可以直接与运行于服务器上的任何虚拟机进行通信,同时可以使用服务器的硬件设备对数据进行处理。

3、为了满足管理人员对远程云桌面会话的审计需求,常常需要在服务端对远程桌面会话的画面数据进行记录。然而,目前市面上缺乏针对spice协议的有效记录方法,这导致了对于spice协议下的云桌面会话监控和审计存在一定的困难。

技术实现思路

1、基于此,本发明提供一种基于spice(simpleprotocolforindependentcomputingenvironment,独立计算环境简单协议)协议的服务端画面数据记录方法,旨在为管理人员提供远程云桌面会话的有效监控和审计手段。

2、一种基于spice协议的服务端画面数据记录方法,所述方法的步骤包括:

3、s1、通过指定连接参数连接到guest虚拟机并选择要记录画面数据的guest虚拟机;

4、s2、以指定的帧率记录guest虚拟机画面,并将记录的原始画面数据保存为mp4格式;

5、s3、将每个显示通道的mp4文件转换并合成一个mp4视频文件并输出到指定路径。

6、进一步的,本发明步骤s1包括以下子步骤:

7、s11、打开一个libvirt连接,访问虚拟化环境;

8、s12、根据指定的虚拟机名称/虚拟机uuid/虚拟机id获取要记录画面数据的虚拟机。

9、进一步的,本发明步骤s2包括以下子步骤:

10、s21、以只读模式创建一个spice会话,建立与spice虚拟机的连接;

11、s22、绑定新建通道信号,不同的通道类型对应不同的处理方式;

12、s23、当新建通道时,判断是否是显示通道,如果是显示通道,则进入步骤s24;如果不是显示通道,则重新回到步骤s23;

13、s24、绑定显示通道信号,获取到画面内容和相关设置信息等数据;

14、s25、将画面数据内容以指定视频编码格式记录到mp4格式文件中。

15、进一步的,本发明步骤s3包括以下子步骤:

16、s31、记录的mp4文件色彩格式是否为yuv420p且只有一个显示通道,如果是的话,则进入步骤s37;否则进入步骤s32;

17、s32、视频格式为yuv444p或有多个显示通道,进行视频转换;

18、s33、将所有显示通道记录视频的最大分辨率作对齐处理确保视频宽高为偶数,作为最终转换视频输出分辨率;

19、s34、获取每个显示通道mp4文件的存储位置,加入到ffmpeg参数;

20、s35、为每个显示通道视频创建过滤器,确保最终输出视频分辨率一致;

21、s36、使用构建好的复杂过滤器和添加好的参数,调用ffmpeg命令将缩放版本视频拼接成一个yuv420p格式的视频,并输出到指定路径;

22、s37、直接将保存的mp4文件移动到指定的输出路径。

23、进一步的,本发明spice服务端guest虚拟机通过libvirt进行管理,在访问到具体虚拟机之前,先通过libvirt_uri建立libvirt连接,再通过libvirt连接和启动参数中指定的虚拟机名称/虚拟机uuid/虚拟机id进行查询,获取到指定的虚拟机。

24、进一步的,本发明通过spiceclientglib库方法session和set_session_option创建和设置一个spice会话,并通过open_fd(fd)打开该会话;

25、通过gobject.gobject.connect绑定spice会话的channel-new信号,在新建通道时通过通道id判断通道类型,如果非display显示通道则不做处理,如果是display通道,则绑定display显示通道的创建时信号display-primary-create和销毁时信号display-primary-destroy;

26、显示通道创建时信号display-primary-create会传递channel,format,width,height,stride,shmid,imgdata数据,channel是应接收信号的显示通道对象;format是数据格式;width对应分辨率宽度;height对应分辨率高度;stride是图像行跨度即内存中每行像素所占的空间;imgdata是指向surface缓冲区的指针;

27、根据显示通道创建时信号display-primary-create传递的参数创建一个ffmpegrawstream,将原始raw格式视频转换为ffmpeg视频流,用于将画面数据内容以指定视频编码格式(默认为libx264)记录到mp4格式文件中。

28、进一步的,本发明获取多个mp4文件的分辨率,并将所有视频分辨率中的最大分辨率作对齐处理确保视频宽高为偶数,作为最终转换视频输出分辨率,获取每个显示通道mp4文件的存储位置和名称,加入到ffmpeg参数中;为每个显示通道视频创建过滤器,用于将所有mp4文件缩放到同一个分辨率下,确保最终输出视频分辨率一致,将过滤器参数加入到加入到ffmpeg参数中;使用构建好的复杂过滤器和添加好的参数,调用ffmpeg命令将缩放版本视频拼接成一个yuv420p格式的视频,并输出到指定路径。

29、进一步的,本发明shmid是与imgdata关联的共享内存段的标识符,如果不是shm,则为-1;

30、进一步的,本发明指定视频编码格式为libx264。

31、该方法利用spice协议直接与服务器上的虚拟机通信的特性,实现了对云桌面会话的服务端画面数据记录。通过捕获和存储spice协议传输的画面数据,管理人员可以随时回溯和审计用户的操作行为,确保信息安全和系统合规性。同时,该方法充分利用服务器的硬件设备对数据进行处理,提高了记录的效率和准确性。

技术特征:

1.一种基于spice协议的服务端画面数据记录方法,其特征是:所述方法的步骤包括:

2.根据权利要求1所述的基于spice协议的服务端画面数据记录方法,其特征是:步骤s1包括以下子步骤:

3.根据权利要求1所述的基于spice协议的服务端画面数据记录方法,其特征是:步骤s2包括以下子步骤:

4.根据权利要求1所述的基于spice协议的服务端画面数据记录方法,其特征是:步骤s3包括以下子步骤:

5.根据权利要求2所述的基于spice协议的服务端画面数据记录方法,其特征是:spice服务端guest虚拟机通过libvirt进行管理,在访问到具体虚拟机之前,先通过libvirt_uri建立libvirt连接,再通过libvirt连接和启动参数中指定的虚拟机名称/虚拟机uuid/虚拟机id进行查询,获取到指定的虚拟机。

6.根据权利要求3所述的基于spice协议的服务端画面数据记录方法,其特征是:

7.根据权利要求4所述的基于spice协议的服务端画面数据记录方法,其特征是:

8.根据权利要求6所述的基于spice协议的服务端画面数据记录方法,其特征是:shmid是与imgdata关联的共享内存段的标识符,如果不是shm,则为-1。

9.根据权利要求6所述的基于spice协议的服务端画面数据记录方法,其特征是:指定视频编码格式为libx264。

技术总结一种基于SPICE协议的服务端画面数据记录方法,所述方法的步骤包括:S1、通过指定连接参数连接到Guest虚拟机并选择要记录画面数据的Guest虚拟机。S2、以指定的帧率记录Guest虚拟机画面,并将记录的原始画面数据保存为MP4格式。S3、将每个显示通道的MP4文件转换并合成一个MP4视频文件并输出到指定路径。该方法利用SPICE协议直接与服务器上的虚拟机通信的特性,实现了对云桌面会话的服务端画面数据记录。通过捕获和存储SPICE协议传输的画面数据,可以随时回溯和审计用户的操作行为,确保信息安全和系统合规性。同时,该方法充分利用服务器的硬件设备对数据进行处理,提高了记录的效率和准确性。技术研发人员:张建忠,陈力受保护的技术使用者:南开大学技术研发日:技术公布日:2024/8/1

本文地址:https://www.jishuxx.com/zhuanli/20240802/237557.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。