Screencast (Bildschirmaufnahme) mit LTSP: Unterschied zwischen den Versionen
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
Da dies sehr viel Rechenleistung fordert ist es am besten dies lokal, auf einem leistungsfähigen Client, auszuführen. Stichwort: ''ltsp-localapps'' | Da dies sehr viel Rechenleistung fordert ist es am besten dies lokal, auf einem leistungsfähigen Client, auszuführen. Stichwort: ''ltsp-localapps'' | ||
+ | |||
+ | ''Bemerkung: Untenstehende Skripte zur Aufnahme etc. sind auch unter meinem github account verfügbar: https://github.com/rebootl/screencast'' | ||
+ | |||
+ | ''Klonen: <code>git clone https://github.com/rebootl/screencast.git</code>'' | ||
+ | |||
+ | {{Bemerkung revamp|Im Schulungs-LTSP sind diese unter ~/screencast/ (für den Benutzer workshop).}} | ||
== Einrichtung == | == Einrichtung == | ||
− | + | {{Bemerkung revamp|Dies habe ich auf unserem Schulungs-LTSP gemacht.}} | |
− | Im client chroot ''ffmpeg | + | Im ''client-chroot'' <code>ffmpeg</code> installieren. |
− | ffmpeg ist leider nicht im normalen | + | <code>ffmpeg</code> ist leider nicht im normalen ''Debian jessie'' repository dabei. |
− | '''Achtung: Der von Debian gelieferte Ersatz avconv | + | '''Achtung: Der von Debian gelieferte Ersatz avconv hat hier NICHT funktioniert!''' |
− | Dazu also ''im client-chroot'' unter /etc/apt/sources.list folgendes nachtragen: | + | Dazu also ''im client-chroot'' unter <code>/etc/apt/sources.list</code> folgendes nachtragen: |
<pre> | <pre> | ||
# Debian Multimedia Repository | # Debian Multimedia Repository | ||
Zeile 20: | Zeile 26: | ||
</pre> | </pre> | ||
− | + | <code>ffmpeg</code> mit apt-get installieren. | |
− | Zum abspielen empfehle ich auch noch | + | Zum abspielen empfehle ich auch noch <code>mplayer</code> zu installieren. |
== Anwendung == | == Anwendung == | ||
Zeile 35: | Zeile 41: | ||
Da der Befehl für <code>ffmpeg</code> einige Optionen umfasst, verwende ich dafür ein kleines Script. | Da der Befehl für <code>ffmpeg</code> einige Optionen umfasst, verwende ich dafür ein kleines Script. | ||
− | <code>./screenrec</code>: | + | <code>./screenrec-ltsp</code>: |
<source lang="bash">#!/bin/bash | <source lang="bash">#!/bin/bash | ||
# | # | ||
Zeile 62: | Zeile 68: | ||
Dieses kann im home abgespeichert und im lokalen xterm ausgeführt werden. (Das home Verzeichnis ist ja automatisch eingebunden.) | 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 <code>pavucontrol</code> (Pulse Audio Lautstärkeregelung). | + | Zur Lautstärkeregulierung (Mikrofon, Eingang etc.) empfehle ich <code>pavucontrol</code> (Pulse Audio Lautstärkeregelung, kann auf dem Server ausgeführt werden). |
Ein auf diese Weise aufgenommenes Video hat eine hohe Qualität, ist aber auch '''sehr gross'''. | Ein auf diese Weise aufgenommenes Video hat eine hohe Qualität, ist aber auch '''sehr gross'''. | ||
Zeile 69: | Zeile 75: | ||
=== Webcam === | === Webcam === | ||
− | Um ein kleines Bild einer Webcam einzublenden kann das folgende Script, ebenfalls in einem lokalen xterm, verwendet werden. (Verwendet <code>mplayer</code>.) | + | Um ein kleines Bild einer Webcam einzublenden kann das folgende Script, ebenfalls in einem lokalen xterm, verwendet werden. (Verwendet <code>mplayer</code>, dieser muss im client-chroot installiert sein.) |
<code>./play-webcam</code>: | <code>./play-webcam</code>: | ||
Zeile 90: | Zeile 96: | ||
=== Konvertierung === | === 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 <code>ffmpeg</code> installiert sein. | ||
+ | |||
+ | {{Bemerkung revamp|Dies ist bei unserem Schulungs-LTSP der Fall.}} | ||
+ | |||
+ | Ein Nachteil dieses Formats ist, dass das Kodieren relativ lange dauert. | ||
+ | |||
+ | ==== Hohe Qualität ==== | ||
+ | |||
+ | <code>./encode</code>: | ||
+ | <source lang="bash"> | ||
+ | #!/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 | ||
+ | </source> | ||
+ | |||
+ | Aufruf: <code>./encode <videoname></code> | ||
+ | |||
+ | ==== Optimiert zum abspielen über LTSP (für leistungsschwache Clients) ==== | ||
+ | |||
+ | ''Bemerkung: Als alternatives Format wäre allenfalls/bei Gelegenheit MPEG-2, oder sogar MPEG-1 noch auszuprobieren. Evtl. muss dort die Bitrate erhöht werden um entsprechende Qualität zu erreichen.'' | ||
+ | |||
+ | <code>./encode-ltsp</code>: | ||
+ | <source lang="bash"> | ||
+ | #!/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 | ||
+ | </source> | ||
+ | |||
+ | |||
+ | {{Bemerkung revamp| | ||
+ | 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.'' | ||
+ | |||
+ | '''Ablage''' | ||
+ | |||
+ | Für Videos welche öffentlich zugänglich sein sollen kann die Version in hoher Qualität auf rochen abgelegt werden, unter: /var/www/revamp/Videos/<br /> | ||
+ | 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<br /> | ||
+ | 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.}} | ||
+ | |||
+ | === Abspielen === | ||
+ | |||
+ | Zum Abspielen über LTSP empfehle ich <code>mplayer</code> mit der <code>-framedrop</code> Option. | ||
+ | (Kann normal auf dem Server ausgeführt werden.) | ||
+ | |||
+ | Befehl: | ||
+ | <pre>$ mplayer -framedrop <dateiname></pre> | ||
+ | |||
+ | Der Dateiname kann einen ganzen Pfad enthalten. | ||
+ | |||
+ | Beispiel: | ||
+ | <pre>$ mplayer -framedrop /data/Intern/Schulung/Videos/rec_2015-09-01_1202_LTSP-opt.webm</pre> | ||
+ | |||
+ | Bedienung: Vor-/ Zurückspulen mit den Pfeiltasten "Links"/"Rechts", zum Verlassen Taste "q" | ||
+ | |||
+ | [[Category: Schulungen / Workshops]] | ||
+ | [[Category: Systemadministration]] |
Aktuelle Version vom 23. September 2015, 16:12 Uhr
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
Bemerkung: Untenstehende Skripte zur Aufnahme etc. sind auch unter meinem github account verfügbar: https://github.com/rebootl/screencast
Klonen: git clone https://github.com/rebootl/screencast.git
Einrichtung
Im client-chroot ffmpeg
installieren.
ffmpeg
ist leider nicht im normalen Debian jessie repository dabei.
Achtung: Der von Debian gelieferte Ersatz avconv hat hier NICHT funktioniert!
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, kann auf dem Server ausgeführt werden).
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
, dieser muss im client-chroot installiert sein.)
./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.
Ein Nachteil dieses Formats ist, dass das Kodieren relativ lange dauert.
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)
Bemerkung: Als alternatives Format wäre allenfalls/bei Gelegenheit MPEG-2, oder sogar MPEG-1 noch auszuprobieren. Evtl. muss dort die Bitrate erhöht werden um entsprechende Qualität zu erreichen.
./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
Abspielen
Zum Abspielen über LTSP empfehle ich mplayer
mit der -framedrop
Option.
(Kann normal auf dem Server ausgeführt werden.)
Befehl:
$ mplayer -framedrop <dateiname>
Der Dateiname kann einen ganzen Pfad enthalten.
Beispiel:
$ mplayer -framedrop /data/Intern/Schulung/Videos/rec_2015-09-01_1202_LTSP-opt.webm
Bedienung: Vor-/ Zurückspulen mit den Pfeiltasten "Links"/"Rechts", zum Verlassen Taste "q"