Von einer KVM/QEMU Virtuellen Maschine kann zu beliebigem Zeitpunkt eine Bilddatei des aktuellen Bildschirminhalts angefordert werden.
Diese Anleitung erklärt wie man via libvirt/virsh diese Bilder in regelmäßigen Abständen speichert und diese dann zu einem Video kombiniert.
Am System müssen bc, convert sowie bc vorhanden sein. Unter Void Linux installiert man die entsprechenden Pakete beispielsweise via xbps-install -Su ImageMagick ffmpeg bc
.
Umgebung definieren
Diese Konstanten müssen im Verlauf der gesamten Anleitung korrekt gesetzt sein.
VM=name_der_virtuellen_maschine
BILDER_PRO_SEKUNDE=5
Bildschirmfotos regelmäßig abspeichern
DIR=`mktemp --tmpdir --directory $VM-screenrecording-XXX`
IMG=`mktemp --tmpdir $VM-current-XXX.ppm`
VERZOEGERUNG=`echo "scale=2 ; 1/$BILDER_PRO_SEKUNDE" | bc`
echo 'Aufnahme ...'
echo '(Strg-C zum Beenden)'
while :; do
virsh qemu-monitor-command $VM --hmp screendump "$IMG" >/dev/null
if [ -s $IMG ] ; then
convert "$IMG" "$DIR/`date +%s.%N`.jpg" && rm "$IMG"
sleep $VERZOEGERUNG
else
echo "Fehler: $IMG ist leer" >&2
fi
done
Bilder in eine Videodatei zusammenführen
ffmpeg -v error -pattern_type glob -codec copy \
-framerate $BILDER_PRO_SEKUNDE \
-i "$DIR/*.jpg" "$DIR/$VM.mkv"
&& rm -R "$DIR/"*.jpg && echo "$DIR/$VM.mkv"