Videos mit Shell-Befehlen schneiden und konvertieren

Aus EasyLinux 03/2014

Videos mit Shell-Befehlen schneiden und konvertieren

Schneller Shell-Schnitt

Um ein Video in ein anderes Format zu konvertieren oder einfache Schnittarbeiten zu erledigen, müssen Sie keine grafische Anwendung bemühen: Mit “ffmpeg” und “mencoder” gelingt das auch auf der Konsole.

Die Fernsehaufzeichnung startete genau 45 Sekunden zu früh – das haben Sie beim Abspielen im Video-Player gesehen. Diese Extrasekunden würden Sie gern loswerden, aber ohne Import, Schneiden und Export in einer grafischen Anwendung. Das müsste doch schneller gehen?

Es geht schneller, wenn Sie eines der Konsolen-Tools mencoder[1] und ffmpeg[2] verwenden. Aufgaben wie das Entfernen überflüssiger Teile aus einer Aufnahme und auch das Konvertieren in andere Video- oder Audioformate erledigen Sie mit diesen Programmen über einen einzeiligen Shell-Befehl. Nebeneffekt: Sie können diese Korrekturen auch automatisiert für mehrere Videodateien erledigen. Am Ende des Artikels stellen wir außerdem noch den Audiokonverter sox[3] vor.

Zur Motivation vorab

Um die Eleganz der Shell-Tools zu demonstrieren, gibt es gleich am Anfang eine Lösung für das 45-Sekunden-Problem. Wenn die oben erwähnte Fernsehaufnahme den Dateinamen fernseh.avi trägt und in Ihrem Home-Verzeichnis liegt, werden Sie die ersten 45 Sekunden mit folgendem Kommando los:

ffmpeg -i fernseh.avi -ss 45 -acodec copy -vcodec copy fernseh2.avi

Das erzeugt aus fernseh.avi eine neue Videodatei fernseh2.avi, in der die ersten 45 Sekunden fehlen. Die Optionen -acodec copy und -vcodec copy fordern ffmpeg nur auf, die ursprünglichen Kodierungen (im Audio- und Video-Stream der Datei) nicht zu verändern, und der 45-Sekunden-Schnitt ergibt sich aus -ss 45.

Installation

Die Werkzeuge, die wir Ihnen vorstellen, sind in der Regel nicht vorinstalliert. Darum starten wir mit kurzen Hinweisen zur Einrichtung der benötigten Pakete.

Als OpenSuse-Anwender richten Sie zunächst das Packman-Repository ein, falls Sie dies nicht bereits früher erledigt haben: Bei Packman gibt es zahlreiche Multimedia-Anwendungen – teilweise finden sich hier auch Pakete, die durchaus zur regulären Ausstattung von OpenSuse zählen, deren Packman-Varianten aber besser sind, weil sie z. B. mehr Audio- und Videoformate (Codecs) unterstützen.

  1. Starten Sie YaST (was die Eingabe des Root-Passworts erfordert), wählen Sie das Modul Software-Repositories und klicken Sie auf Hinzufügen.
  2. Aktivieren Sie die Checkbox Community/Gemeinschafts-Repositories und klicken Sie auf Weiter.
  3. Setzen Sie ein Häkchen beim Eintrag Packman Repository und klicken Sie rechts unten auf OK. Die Frage, ob Sie einen nicht verbürgten GnuPG-Schlüssel importieren wollen, beantworten Sie mit einem Klick auf Vertrauen.

Über die Paketverwaltung können Sie nun eines oder beide der Pakete ffmpeg und MPlayer einspielen – ob Sie beide benötigen, entscheiden Sie vielleicht erst, nachdem Sie den Artikel zu Ende gelesen haben. Es gibt mit HandBrake [4] noch ein drittes interessantes Tool, auf das wir im Rahmen dieses Artikels aber nicht eingehen.

Unter Ubuntu und Kubuntu spielen Sie die Programme am schnellsten im Terminalfenster ein; für ffmpeg ist dazu ein Personal Package Archive (PPA) zu ergänzen.

Um ffmpeg einzurichten, verwenden Sie die folgenden drei Kommandos:

sudo add-apt-repository ppa:jon-severinsson/ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg

Das Programm mencoder kommt mit

sudo apt-get install mencoder

auf die Platte. Hinweise zur Einrichtung von sox folgen separat am Schluss des Artikels.

Videos konvertieren

Videos liegen oft in einem unerwünschten Format vor. Haben Sie z. B. eines der YouTube-Download-Plug-ins in Firefox installiert, erhalten Sie beim Speichern Dateien im Flash-Videoformat mit Dateiendung .flv (Abbildung 1). Zwar kommen z. B. MPlayer und VLC problemlos mit dem Format zurecht, aber nicht jeder Videoplayer mag die Flash-Clips. In eine gängigere Standarddatei im AVI-Format wandeln Sie das Video wie folgt mit mencoder um:

mencoder video.flv -oac mp3lame -ovc lavc -o video.avi
Abbildung 1: Viele Firefox-Plug-ins speichern Videodateien im Flash-Video-Format ("*.flv").

Abbildung 1: Viele Firefox-Plug-ins speichern Videodateien im Flash-Video-Format (“*.flv”).

Die Optionen -oac und -ovc setzen den output audio codec und den output video codec auf mp3lame und lavc. Der Ton wird also in der Zieldatei im MP3-Format vorliegen, während lavc nicht direkt den Codec festlegt, sondern nur verlangt, dass die Bibliothek libavcodec verwendet wird.

Wollen Sie den Video-Codec genauer festlegen, nutzen Sie die Option -lavcopts, z. B. erzeugt folgendes Kommando eine Datei, deren Video-Stream das Format Windows Media Video 8 (WMV2) verwendet:

mencoder video.flv -oac mp3lame -ovc lavc -lavcopts vcodec=wmv2 -o video.avi

(Ja, das Kürzel hat die Versionsnummer 2, während die Langform Versionsnummer 8 verwendet [5].) Die gleiche Arbeit kann auch ffmpeg erledigen, erwartet dabei aber andere Aufrufoptionen:

ffmpeg -i video.flv -acodec libmp3lame -vcodec wmv2 video.avi

Während Sie bei mencoder die Eingabedatei als erstes Argument (ohne Option) und die Ausgabedatei mit -o (output) angeben, ist es bei ffmpeg genau umgekehrt: Dort brauchen Sie für die Eingabedatei die Option -i (input), während Sie den Namen der Ausgabedatei ohne Option am Ende angeben. Außerdem nutzen Sie -acodec, um den Audio-Codec festzulegen (er heißt hier libmp3lame), und -vcodec für den Video-Codec, wobei Sie direkt wmv2 als Codec angeben. Eine Liste der von ffmpeg unterstützten Codecs erhalten Sie mit ffmpeg -encoders (Abbildung 2); die entsprechende Liste für mencoder ist online [6].

Abbildung 2: Die Liste der von "ffmpeg" unterstützten Codecs ist sehr lang; Sie erhalten sie über die Option "-encoders".

Abbildung 2: Die Liste der von “ffmpeg” unterstützten Codecs ist sehr lang; Sie erhalten sie über die Option “-encoders”.

Auflösung ändern

Wollen Sie die Auflösung eines Videos verringern, z. B., weil Sie es auf einem Mobilgerät mit niedrig auflösendem Display anschauen wollen, dann können Sie bei mencoder die Option -vf scale=X:Y verwenden. Das Kommando

mencoder video.avi -oac mp3lame -ovc lavc -vf scale=160:120 -o video2.avi

nimmt z. B. das Video (im Beispiel hat es die eh schon geringe Auflösung 320×240) und halbiert diese in Breite und Höhe auf 160×120, wie der anschließende Aufruf von file bestätigt:

$ file video.avi video2.avi
video.avi:  RIFF (little-endian) data, AVI, 320 x 240, ~30 fps, video: FFMpeg MPEG-4, audio: MPEG-1 Layer 3 (stereo, 22050 Hz)
video2.avi: RIFF (little-endian) data, AVI, 160 x 120, ~30 fps, video: FFMpeg MPEG-4, audio: MPEG-1 Layer 3 (stereo, 22050 Hz)

Die unterschiedliche Qualität, die sich aus verschiedenen Auflösungen ergibt, sehen Sie auf Anhieb, wenn Sie zwei Versionen gleichzeitig abspielen und dabei die Wiedergabefenster auf gleiche Größe ziehen (Abbildung 3); der gewählte Codec spielt bei der Qualität – im Vergleich zur Größe – nur eine untergeordnete Rolle.

Abbildung 3: Verschiedene Formate, verschiedene Auflösungen – die deutlichste Verringerung der Qualität verursacht eine Reduzierung der Auflösung.

Abbildung 3: Verschiedene Formate, verschiedene Auflösungen – die deutlichste Verringerung der Qualität verursacht eine Reduzierung der Auflösung.

Musik extrahieren

Viele Musiker stellen über ihre Webseite (oder über das Plattenlabel) Videos aktueller Titel zur Verfügung. Zwar ist es schön, nicht nur den Ton zu hören, sondern auch das Musikvideo anzuschauen, aber für tragbare MP3-Player ist eine reine Audiodatei besser geeignet, zumal solchen Playern häufig die Unterstützung für Videoformate fehlt.

Mit ffmpeg können Sie Dateien schnell ins MP3-Format umwandeln (und dabei die Videospur entfernen):

ffmpeg -i video.flv -acodec libmp3lame -ar 44100 -ab 160k audio.mp3

erzeugt eine MP3-Datei mit 160 kBit/s. Das funktioniert in der Form nur, wenn die Videodatei genau einen Audio-Stream enthält. Sind mehrere vorhanden, experimentieren Sie zusätzlich mit Parametern der Form -map 0:0, -map 0:1, -map 0:2 usw., bis Sie den richtigen Stream erwischt haben.

Videoschnitt

In der Einleitung des Artikels haben wir bereits den Befehl vorgestellt, mit dem Sie die ersten Sekunden eines Videoclips entfernen können. Häufiger wollen Sie gezielt bestimmte Bereiche in separaten Videodateien speichern, etwa den Ausschnitt von 00:05:15 bis 00:06:35 (mit Angaben im Format Stunde:Minute:Sekunde). Das erreichen Sie mit ffmpeg, indem Sie neben der Startzeit (-ss) auch die Endzeit (mit -to) angeben:

ffmpeg -i video.avi -ss 00:05:15 -to 00:06:35 -acodec copy -vcodec copy clip.avi

Alternativ zur absoluten Angabe der Endzeit können Sie auch die Dauer des zu extrahierenden Clips nennen, die entsprechende Option ist -t (statt -to) und erwartet ebenfalls eine Zeitangabe im obigen Format, interpretiert dieses aber als Längenangabe.

Neben der Stunden-Minuten-Sekunden-Schreibweise ist es bei allen Optionen (-ss, -to und -t) auch möglich, einen Sekundenwert zu nennen. Das obige Beispiel ließe sich also auch als

ffmpeg -i video.avi -ss 315 -to 395 -acodec copy -vcodec copy clip.avi

schreiben.

Audio-Konvertierung

Ein praktisches Tool fürs Konvertieren zwischen verschiedenen Audioformaten ist Sox [3]. Damit können Sie z. B. eine Sammlung von Ogg-Vorbis-Musikdateien komfortabel in MP3-Dateien umwandeln, falls Ihr mobiler Player das Ogg-Vorbis-Format nicht beherrscht – auch wenn es sinnvoller wäre, die Original-CDs neu zu rippen, denn Umwandlungen zwischen komprimierenden Dateiformaten bedeuten immer abnehmende Qualität.

Unter OpenSuse installieren Sie die Packman-Version der Pakete sox und libsox2 – falls diese bereits installiert (aber nicht von Packman) sind, tauschen Sie die Standardpakete gegen die Packman-Varianten aus. Dazu suchen Sie in der Paketverwaltung von YaST nach “sox”. Für beide Pakete (sox und libsox2) markieren Sie die Trefferzeile, setzen dort ein Häkchen (oder belassen es, wenn es schon gesetzt ist) und aktivieren dann im unteren Bereich den Reiter Versionen, wo Sie sich jeweils für die Variante aus dem Packman Repository entscheiden (Abbildung 4).

Abbildung 4: Sowohl "sox" als auch "libsox2" müssen unter OpenSuse aus dem Packman-Repository kommen, damit das Tool MP3 unterstützt.

Abbildung 4: Sowohl “sox” als auch “libsox2” müssen unter OpenSuse aus dem Packman-Repository kommen, damit das Tool MP3 unterstützt.

Ubuntu-/Kubuntu-Anwender müssen neben sox nur das Paket libsox-fmt-all nachinstallieren, das im universe-Bereich der regulären Ubuntu-Pakete steckt.

Dateien konvertieren Sie auf der Kommandozeile mit einem simplen sox-Aufruf; das Zielformat bestimmt das Programm aus der Dateiendung. Für Umwandlungen von Ogg Vorbis nach MP3 oder umgekehrt sind darum Befehle der folgenden Form ausreichend:

sox datei.ogg datei.mp3
sox datei.mp3 datei.ogg

Erhalten Sie die Fehlermeldung

sox FAIL formats: no handler for file extension `mp3'

dann ist noch die nicht-MP3-kompatible Variante von sox oder libsox2 installiert.

Bei längeren Musikstücken ist es sinnvoll, sich den Fortschritt der Konvertierungsarbeit anzusehen; dafür können Sie die Option -S verwenden (Abbildung 5). Außerdem steht noch die Option -V bereit, die Informationen über die Kodierungseigenschaften von Ein- und Ausgabedatei anzeigt.

Abbildung 5: Rechnet es noch oder ist es abgestürzt? Letzteres sollte zwar nicht vorkommen, aber "sox -S" verrät, wie weit die Konvertierung fortgeschritten ist.

Abbildung 5: Rechnet es noch oder ist es abgestürzt? Letzteres sollte zwar nicht vorkommen, aber “sox -S” verrät, wie weit die Konvertierung fortgeschritten ist.

Statt sox können Sie auch ffmpeg verwenden; das Kommando für eine Konvertierung von Ogg Vorbis ins MP3-Format lautet

ffmpeg -i datei.ogg -vn -acodec libmp3lame datei.mp3

Doch auch hier gilt: Solche Konvertierungen verursachen immer einen geringen Qualitätsverlust – unabhängig vom eingesetzten Konverter.

Welches Tool nehmen?

Die vorgestellten Programme haben ähnliche Features; Sie können mit allen dreien ein wenig experimentieren und dabei u. a. auf die Geschwindigkeit (beim Konvertieren) sowie Qualität und Größe der erzeugten Dateien achten. Diese lassen sich im Übrigen noch durch weitere Parameter der Tools beeinflussen.

Das hier nicht beschriebene Programm HandBrake hat eine komfortable grafische Oberfläche, die ein Artikel unserer Schwesterzeitschrift LinuxUser ausführlich vorgestellt hat [7]; es besitzt mit HandBrake-CLI aber auch ein Kommandozeilen-Interface, das auf der Projektseite gut dokumentiert ist [8, 9]. Mit mencoder landet auch der MPlayer [1] auf der Platte, der eine gute Alternative zum beliebten Multimediaplayer VLC [10] darstellt.

Insgesamt lässt sich mit Kommandozeilentools mehr erreichen, als man auf den ersten Blick erwarten würde. Wenn Sie die Programme in selbst geschriebene Skripte einbinden, konvertieren und schneiden Sie damit deutlich schneller als mit entsprechenden grafischen Anwendungen.

Infos

[1] Mplayer und mencoder: http://www.mplayerhq.hu/

[2] ffmpeg: https://www.ffmpeg.org/

[3] Sox: http://sox.sourceforge.net/

[4] HandBrake: http://handbrake.fr/

[5] Wikipedia zu Windows-Media-Video-Versionen: http://en.wikipedia.org/wiki/Windows_Media_Video#Versions

[6] Mencoder-Codecs: http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-enc-libavcodec.html

[7] HandBrake-Artikel: Erik Bärwaldt, “Im Fokus”, LinuxUser 12/2012, S. 48 ff., http://linux-community.de/27056

[8] HandBrake-CLI-Forum: https://forum.handbrake.fr/viewforum.php?f=10

[9] HandBrake-CLI-Anleitung: https://trac.handbrake.fr/wiki/CLIGuide

[10] VLC: http://www.videolan.org/vlc/

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
EasyLinux 03/2014 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben