Skip to main content, zum Hauptinhalt springen
 
 
 
 
 

Video- & Audiobearbeitung im Terminal

Linux Benutzer haben es gut: einfache Video- & Audiobearbeitung funktioniert schnell und bequem in der Konsole

Ich selbst stehe immer wieder vor dem Problem, schnell ein kurzes Video schneiden zu müssen, oder auch nur kurz für Cross-Browser Tests die passenden Dateien zu erstellen, obwohl der eigentliche Inhalt noch gar nicht von der erstellenden Firma geliefert wurde, oder das Nachbearbeiten von kurzen Schulungsvideos für spezielle Kunden.

Da ich wenig Zeit und Lust habe, mich intensiver mit umfangreichen Programmen rumzuschlagen, mit überfrachteten und Resourcen verschlingenden graphischen Benutzeroberflächen (und auch davon gibt es für jeden Anwender genug unter Linux, bespielsweise Audacity, KDEnlive), liegt die Überlegung nahe, das mit den Bordmitteln meines mächtigen Linuxsystems zu erledigen.
Unsere Allzweckwaffe ist dabei das Programm ffmpeg.

Die folgenden Kommandos werden hier bewusst Schritt für Schritt abgearbeitet, mir ist bewußt, dass man einiges verkürzen könnte.

 

 

ffmpeg

Bei den meisten Distributionen von Haus aus mit an Bord ist natürlich die Konsole bash (über verschiedene Konsolen hab ich schon mal an anderer Stelle ausführlich geschrieben), und auch ffmpeg. Auf meiner geliebten OpenSuSE hab ich noch das Packman Repository hinzugefügt, und streng nach der inoffiziellen Anleitung "Multimedia" zusätzliche Codecs installiert. Die Informationen dazu findet man hier: opensuse-guide.org/codecs.php

Jetzt benötigen wir eigentlich nur noch ein Testvideo, und eine Audiodatei zum Testen, und dann kann es losgehen. Dabei sei auf die lizenzfreien Stücke von Evermusic verwiesen, diese sind für private, nicht-kommerzielle Nutzung kostenlos.

Beim Video bleiben wir hier bei einem MP4 Container. Zur Erklärung, Videos werden in sogenannten Containern ausgeliefert, das sind Dateien, in denen sich, grob gesagt, verschiedene Audio- und Videostreams befinden. Die Streams selbst haben wieder einen Codec.

Für Webworker vielleicht besonders interessant: mit exakt zwei Containern mit jeweils entpsrechenden Codecs können heute eigentlich alle modernen (und weniger modernen) Browser via HTML5 Video bedient werden. Die Zeiten von Flash sind also endgültig vorbei!

Die Kombinationen sehen dabei aus wie folgt:

  • WebM mit VP9 und Vorbis (ogg) (VP9 weil nicht alle Microsoft-Browser mit VP8 umgehen können)
  • MPEG4 mit H.264 und AAC (Achtung: Safari kann kein MP3 in einem MP4 Container)

 

Nun aber "medias in res". Zuerst widmen wir uns unserem Video:

ffmpeg -i Testvideo.mp4 -vcodec copy -an Testvideo_silent.mp4
Schritt 1: Entfernen der originalen Audiospur aus dem Videocontainer:

Der eigentliche Zauber liegt im Parameter -an, der bewirkt, dass die Tonspur aus dem Container gelöscht wird.

 

Mein Video hatte irgendwie in manchen Playern ein kleines Problem mit der Orientierung. Es war ein Handy-Video im Portraitmodus, aber mancher Videoplayer hat es leider Landscape abgespielt. Daher musste ich das Video recodieren, und wollte gleichzeitig ein bisschen komprimieren. Das geht mit dem folgenden Kommando.

ffmpeg -i Testvideo_silent.mp4 -vcodec libx264 -crf 21 Testvideo_silent_compressed.mp4
Schritt 2: H.264 und Komprimierung eines MP4

Die Komprimierung passiert hier bei -crf 21. Falls Sie unsicher sind oder das Ergebnis nicht die erwünschte Grösse/Qualität hat, können Sie statt 21 alles von 18 bis 24 probieren.

Hier wird der Constant Rate Factor beeinflusst, der sich auf die durchschnittliche Bitrate auswirkt. Je niedriger der Wert, desto höher die Bitrate.

 

Die nächsten Schritte betreffen nun unsere Audio Datei. Ausgangspunkt ist eine MP3 Datei. Von dieser wollen wir 13 Sekunden behalten und mittels Fadeeffekt (ein und aus) in unser Video einbauen.

ffmpeg -i Testaudio.mp3 -acodec copy -ss 00:01:23 -t 00:00:13 Testaudio_cut.mp3
Schritt 3: MP3 zuschneiden

Hierbei ist wichtig, folgendes zu wissen: der Parameter -ss markiert den Beginn, während der Parameter -t die DAUER beschreibt.

 

Der nächste Schritt ist ein wenig komplexer, wir wollen nun sowohl am Start, als auch am Ende des Audio-Ausschnitts einen feinen Fadeeffekt haben.

ffmpeg -i Testaudio_cut.mp3 -af 'afade=t=in:ss=0:d=3,afade=t=out:st=10:d=3' Testaudio_cut_faded.mp3
Schritt 4: Fade-Effekte hinzufügen

Kurz gesagt: der Audioschnipsel wird beginnend bei 0 eingeblendet. Die Dauer des Effekts ist mit 3 Sekunden definiert.

Für den Ausblendeffekt veranschlagen wir ebenfalls 3 Sekunden, und da das Schnipsel ja nur 13 Sekunden lang ist, starten wir mit dem Effekt bei Sekunde 10.

 

Im nächsten Schritt müssen wir unsere MP3 Datei umwandeln in eine m4a Datei, also in den AAC Codec, da wir ja bei unserem MP4 Container bleiben wollen!

ffmpeg -i Testaudio_cut_faded.mp3 -c:a libfdk_aac Testaudio_cut_faded.m4a
Schritt 5: MP3 in AAC (M4A) umwandeln

Nun haben wir also die richtigen Ausgangsdateien. Jetzt wird Hochzeit gefeiert, die Videodatei bekommt nun ihre neue Tonspur:

ffmpeg -i Testvideo_silent_compressed.mp4 -i Testaudio_cut_faded.m4a -codec copy -shortest Testvideo_final.mp4
Schritt 6: Der neue Audio Track soll nun dem Video hinzugefügt werden

Man sieht hier nun zwei Eingabedateien, jeweils für ffmpeg mit -i gekennzeichnet. Den Parameter -shortest hätten wir uns diesfalls sparen können, ich wollte ihn aber nicht vorenthalten. Der Parameter bewirkt, dass die längere der zwei Eingabedateien abgeschnitten würde, was in unserem Fall nicht passieren wird, da wir ja beide Dateien bereits auf je 13 Sekunden gekürzt haben.

 

Viel Spaß beim weiteren Experimentieren mit ffmpeg!

 
 

Sehr geehrter Besucher! Leider verwenden Sie einen veralteten Browser. Sie können einen sehr guten, sicheren, stabilen und zeitgemässen Browser kostenlos unter dem folgenden Link herunterladen: Firefox Browser auf www.mozilla.org Dieser Browser ist erhältlich für: Windows, MacOS (Apple), iPhone, Android und Linux.