Jochen Stolla

alle Blogartikel

Screencasts aufnehmen mit ffmpeg

18.07.2020

Vielleicht ist dies kein Verfahren, das jede und jeder gleich ins eigene Repertoire übernehmen will. Für mich funktioniert es jedoch perfekt als ein schneller und einfacher Weg, Screencasts aufzunehmen. Screencasts mache ich häufig; meistens, um per Video Feedback auf Texte zu geben: Ich gehe auf dem Bildschirm ein Textdokument durch, spreche einen Kommentar dazu und stelle der Autorin oder dem Autor des Textes das Video zur Verfügung.

Die Software, die ich für solche einfachen Bildschirmvideos verwende, ist ffmpeg. Mein Verfahren besteht in drei Schritten:

  1. Ich zeichne das Bildschirmvideo mit Kommentar auf.
  2. Ich schneide Anfang und Ende. Gleichzeitig komprimiert ffmpeg für mich die Datei und bringt die Audiospur auf normale Lautstärke.
  3. Das fertige Video lade ich auf einen Cloudspeicher (in meinem Fall ist das meistens Google Drive) und verschicke den Freigabelink.

ffmpeg hat keine grafische Oberfläche, ich bediene die Software über ein Terminalfenster.

Terminalfenster

Um den Bildschirm als Video mit dem Mikrofonsignal als Tonspur aufzuzeichnen, muss der ffmpeg-Befehl etwas genauer definiert werden. Bei mir sieht er so aus:

ffmpeg -video_size 1366x768 -framerate 20 -thread_queue_size 512 -f x11grab -i :0.0 -thread_queue_size 512 -f pulse -ac 1 -ar 44100 -i default -vcodec libx264rgb -crf 0 -preset:v ultrafast -acodec pcm_s16le -af aresample=async=1:first_pts=0 ~/Videos/bildschirmvideo.mkv

Ich gebe zu, das wirkt vielleicht etwas furchterregend. Es hat mich durchaus Zeit und Nerven gekostet und einige Recherchen, bis ich diesen Befehl so formuliert hatte, dass er bei mir funktioniert. Möglicherweise hilft es auch nicht, diesen Befehl einfach zu kopieren und auf einem anderen Computer zu starten. Zumindest Anpassungen werden erforderlich sein. Wer sich damit auseinandersetzen will, findet hier einen guten Ausgangspunkt.

Wenn ich die Aufnahme abgeschlossen habe, schaue ich mir das Video an — in meinem Fall die Datei bildschirmvideo.mkv — und merke mir, wie viele Sekunden ich am Anfang abschneiden will und wo das fertige Video enden soll. Dann kommt der zweite ffmpeg-Befehl zum Einsatz. Er kann zum Beispiel so aussehen:

ffmpeg -i bildschirmvideo.mkv -ss 00:00:14 -t 00:10:00 -async 1 -c copy bildschirmvideo_getrimmt.mkv

Hier werden die ersten 14 Sekunden abgeschnitten und das fertige Video soll genau 10 Minuten dauern.

Und schließlich wird die Videodatei komprimiert, die Lautstärke angepasst und das Video in das mp4-Format umgewandelt:

ffmpeg -i video_getrimmt.mkv -filter:a loudnorm -c:v libx264 -crf 40 -max_muxing_queue_size 1024 video_komprimiert.mp4

Damit ich diese Befehle nicht jedesmal eintippen muss, habe ich sie in einem Shell-Skript zusammengefasst (in Windows wäre das eine Batch-Datei). Wenn ich es ausführe, muss ich nur die Funktion wählen und die Zeitangaben für den Schnitt machen. (Die Befehle für das Schneiden und das Komprimieren sind hier im Menüpunkt 3 zu einem Schritt kombiniert.)

ffmpeg-Dialog

Das ganze Verfahren läuft bei mir, nachdem ich einmal die passenden Befehle gefunden hatte, sehr zeitsparend. Natürlich geht es auch anders. Ein paar andere Möglichkeiten, um Screencasts aufzunehmen, habe ich hier erwähnt. Menschen, die mit der Kommandozeile noch nicht so eng befreundet sind, kommen damit wohl erst einmal schneller ans Ziel. Gebe ich zu.