Screencast (Bildschirmaufnahme) mit LTSP

Aus revampedia

Wir möchten mit dem LTSP Schulungen / Workshops aufnehmen.

Da dies sehr viel Rechenleistung fordert ist es am besten dies lokal, auf einem leistungsfähigen Client, auszuführen. Stichwort: ltsp-localapps

Einrichtung

(Dies habe ich auf unserem Schulungs-LTSP gemacht.)

Im client-chroot ffmpeg installieren.

ffmpeg ist leider nicht im normalen Debian jessie repository dabei.

Achtung: Der von Debian gelieferte Ersatz avconv ist SCHEISSE und FUNKTIONIERT NICHT!

Dazu also im client-chroot unter /etc/apt/sources.list folgendes nachtragen:

# Debian Multimedia Repository 
deb http://www.deb-multimedia.org jessie main non-free
deb ftp://ftp.deb-multimedia.org jessie main non-free

ffmpeg mit apt-get installieren. Zum abspielen empfehle ich auch noch mplayer zu installieren.

Anwendung

Aufnahme

Zum Aufnehmen ist es am einfachsten ein lokales Terminal zu öffnen:

$ ltsp-localapps xterm

Das home Verzeichnis ist bereits im Client eingebunden.

Da der Befehl für ffmpeg einige Optionen umfasst, verwende ich dafür ein kleines Script.

./screenrec-ltsp:

#!/bin/bash
#
# record screencast
#
# using ffmpeg

# mein laptop monitor: 1366x768
# beamer revamp: 1024x768

WIDTH=1024
HEIGHT=768

FPS=16

DATE=$(date +%Y-%m-%d_%k%M)

ffmpeg -f alsa -ac 2 -i pulse \
    -f x11grab -r "$FPS" -s "$WIDTH"x"$HEIGHT" -i :7.0 \
    -acodec pcm_s16le \
    -vcodec libx264 -preset ultrafast -crf 0 \
    -threads 0 \
    rec_"$DATE".mkv

Dieses kann im home abgespeichert und im lokalen xterm ausgeführt werden. (Das home Verzeichnis ist ja automatisch eingebunden.)

Zur Lautstärkeregulierung (Mikrofon, Eingang etc.) empfehle ich pavucontrol (Pulse Audio Lautstärkeregelung).

Ein auf diese Weise aufgenommenes Video hat eine hohe Qualität, ist aber auch sehr gross. Es muss anschliessend in einem weiteren Schritt konvertiert werden, siehe unten: Konvertierung

Webcam

Um ein kleines Bild einer Webcam einzublenden kann das folgende Script, ebenfalls in einem lokalen xterm, verwendet werden. (Verwendet mplayer.)

./play-webcam:

#!/bin/bash
#
# play webcam

WIDTH=180
HEIGHT=120

mplayer -vo xv \
    tv:// \
    -tv driver=v4l2:width=$WIDTH:height=$HEIGHT:fps=30:device=/dev/video0 \
    -geometry "95%:95%" \
    -noborder -ontop > /dev/null 2>&1 &

So kann sehr einfach und Leistungsschonend ein Webcam Bild eingeblendet werden. Dieses wird dann einfach mit dem Bildschirm mit aufgenommen.

Konvertierung

Das webm Format stellt eine freie Alternative zu patentgeschützten Formaten dar.

Die konvertierung kann auf dem LTSP Server ausgeführt werden. Dazu muss dort ffmpeg installiert sein. (Dies ist bei unserem Schulungs-LTSP der Fall.)

Revamp Intern: Am besten werden zwei Versionen der Videos erstellt. Eine mit hoher Qualität und eine mit niedrigerer Qualität, aber optimiert zum abspielen über LTSP, siehe untenstehend.

Ablage:

Für Videos welche öffentlich zugänglich sein sollen, sollte die Version in hoher Qualität verwendet werden. Diese können auf rochen unter: /var/www/revamp/Videos/ abgelegt werden. Von einer Wiki Seite aus kann dann darauf verlinkt werden.

Die Variante mit niedrigerer Qualität kann intern abgelegt werden unter: /data/Intern/Schulung/Videos Dort die README.Videos Datei ergänzen.

Falls ein Video nicht öffentlich zugänglich sein soll, kann die Variante hoher Qualität ebenfalls dort abgelegt werden.

Am besten wird für jede Schulung eine Wiki Seite erstellt und die entsprechenden Videos dort verlinkt.

Hohe Qualität

./encode:

#!/bin/bash
#
# encode video (high quality)
#
# $1 video

FILENAME_NOEXT="${1%.*}"

ffmpeg -i "$1" \
        -c:v libvpx -crf 10 -b:v 1M \
        -c:a libvorbis \
        "$FILENAME_NOEXT".webm

Aufruf: ./encode <videoname>

Optimiert zum abspielen über LTSP (für leistungsschwache Clients)

./encode-ltsp:

#!/bin/bash
#
# encode video (optimized for LTSP)
#
# $1 video

FILENAME_NOEXT="${1%.*}"

ffmpeg -i "$1" \
        -c:v libvpx -crf 10 -b:v 1M \
        -vf scale=640:480 \
        -pix_fmt yuv420p \
        -c:a libvorbis \
        "$FILENAME_NOEXT"_LTSP-opt.webm