Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 2.14 KB

README.md

File metadata and controls

64 lines (52 loc) · 2.14 KB

This is a simple utility for recording a SPICE sesion to MP4 video. It uses libvirt to connect to the VMs, SpiceClientGLib to access the graphics device, and FFmpeg to encode MP4 videos.

Usage

usage: spice-record [-h] [--vcodec VCODEC]
                    [--loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                    [-r FRAMERATE] [-c LIBVIRT_URI] [-o FILENAME]
                    DOMAIN-NAME|ID|UUID

positional arguments:
  DOMAIN-NAME|ID|UUID   Machine to record

optional arguments:
  -h, --help            show this help message and exit
  --vcodec VCODEC       Set the output video codec (see "ffmpeg -encoders" for
                        choices)
  --loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Set the logging level (default=WARNING)
  -r FRAMERATE, --framerate FRAMERATE
  -c LIBVIRT_URI, --connect LIBVIRT_URI
                        Connect to hypervisor (e.g. qemu:///system)
  -o FILENAME, --output FILENAME
                        Output filename (defaults to <domain-name>.mp4)

e.g. spice-record -c qemu:///system win10

Where win10 is the ID of the virtual machine (name in virt-manager)

Requirements

  • Python 3
  • libvirt-python (not libvirt-glib)
  • spice-glib
  • pygobject3
  • ffmpeg

If virt-manager is installed on a modern distro (which has ported all of its Python apps to Python 3), then everything should already be installed, aside from ffmpeg.

Installation

run

python setup.py build && sudo python setup.py install

Notes

Currently, the spice server only supports a single client connection. When another connection is opened, the current one is disconnected. Thus, this utility is limited in its usability as it cannot record a user interacting with the VM, and only an automatic ongoing process. There is however, an experimental feature to enable multiple concurrent connections to a single spice server.

  • Multiple clients works well.
  • doesn't record the cursor