Zum Inhalt

Videos in MKV umwandeln

Matroska-Logo (.mkv)Gerade als Linux-User oder auch als Windowsnutzer mit VLC Media Player wird man es oft merken: Viele Videos im Advanced Streaming Format (.asf oder .wmv) enthalten ein Windows Media Video und lassen sich nicht vernünftig spulen. Man kann Videos jedoch verlustfrei in einen anderen Mediencontainer stecken – das dauert nicht lange und ist einfach erklärt.

Container != Codec

Warum die Konvertierung verlustfrei ist, lässt sich nur verstehen, wenn man weiß was ein Mediencontainer ist. Genau genommen ist nämlich „AVI“ kein Videoformat und auch MPEG ist keines. Es sind Container für Video- und Audiodaten. Diese können ihrerseits mit (fast) beliebigen Codecs komprimiert sein, etwa h264, mp3, Vorbis (typisch im OGG-Container) oder auch DivX respektive XviD. Da nur die »Hülle« dieser Daten getauscht wird, bringt uns dieses kein Nachteil.

Beispiele für Containerformate in der IT
Verschiedene Containerformate (© s.u.)

Warum MKV?

Matroska (.mkv) ist ein sehr vielseitiges Format. Es kann fast nahezu beliebige Codecs aufnehmen, etliche GiB Daten verwalten – und das auch in mehreren parallelen Spuren. Das ist wichtig, da wir überlicherweise nicht wissen, was in dem umzuwandelnden Video steckt. MKV bietet uns also genug Flexibilität, um ziemlich gefahrlos jedes Video aufnehmen zu können. Außerdem wird es von den beliebtesten Videoplayern (etwa VLC) oder auch von neuerer Hardware problemlos erkannt. Das kann nicht jeder Container – erst recht nicht AVI und WMV.

Das Umwandeln

… ist denkbar einfach. Um etwa in einem Verzeichnis alle WMV-Dateien in den MKV-Container zu bringen, nutzt man unter Linux folgenden Befehl:

Kurz erklärt, was dieser Befehl bewirkt:

  • for file in *.wmv; do
    Alle Dateien mit der Endung .wmv werden aufgelistet und nacheinander (for = für jede einzelne Datei) der Variable  $file  zugeordnet.
  • ffmpeg -i "$file" -acodec copy -vcodec copy "…";
    Das Tool FFMpeg wird aufgerufen, um die Dateien umzuwandeln. Der Dateiname steht – wie oben erwähnt – in $file . Durch die acodec- und vcodec-Optionen mit dem Parameter »copy« geben wir an, dass keine Neukodierung der Video- oder Audiospur gewünscht ist.
    Die drei Auslassungspunkte (…) stehen für den Dateinamen, der durch einen zuvor ausgeführten Befehl ermittelt wird:
  • $(basename "$file" .wmv).mkv
    Der Dateiname  $file  wird um die Dateiendung .wmv gekürzt. Nichts anderes macht der Befehl  basename  in diesem Fall. Üblicherweise entfernt er auch den Pfad, aber der ist in diesem Beispiel ja nicht vorhanden, da in der Eingangsliste nur Dateien aus dem aktuellen Ordner mit der Endung .wmv stehen können.
    Außerdem wird .mkv  an den so ermittelten Dateinamen angehängt – der Punkt wird direkt übernommen und stellt keinen Verbindungsoperator dar, wie er in einigen Programmiersprachen genutzt wird.
  • done;
    Ende der Schleife – die nächste Datei, falls vorhanden, wird umgewandelt.

Das Ergebnis

Nun sind zunächst alle Dateien doppelt vorhanden – aber die alten Dateien mit der Dateiendung .wmv können gefahrlos gelöscht werden. Die neue Datei im .mkv-Gewand sollte sich nun wesentlich besser zurück- und vorspulen lassen, außerdem könnte unter Umständen die Synchronisation zwischen Ton und Bild besser sein als zuvor.

Weblinks

 

Bild »Containerformat-Beispiele« von Ernst Rohlicek jun. <ernst.rohlicek@reflex.at>. Lizenz: Namensnennung-Weitergabe unter gleichen Bedingungen 2.5 US-amerikanisch (nicht portiert).

Published inHow TosMultimedia

3 Comments

  1. Micha Micha

    hi Ben, interessanter Artikel über MKV.
    Jetzt wäre noch toll, wie ich TAGs in MKV schreibe. Am Besten direkt mit Abgleich von IMDB.

  2. lightonflux lightonflux

    Ich bin ja ein großer Fan von mkv…

    Täusche ich mich oder sind nur die OpenSourceContainer bzw. Codes Streamingfähig? Zumd. was die „normalen“ Multimediadateien angeht (prop. Profizeigs ausgenommen).

    • Die Streamingfähigkeit hängt tatsächlich vom Container, nicht vom Codec ab.

      Proprietär
      ASF/WMV ist – wieder Name schon sagt – streamingfähig (advanced streaming format). AVI ist hingegen ungeeignet, MPEG-4 Part 14 ist ebenfalls auf Streaming ausgelegt.

      Open Source
      MKV wurde zwar auch mit dem Ziel entwickelt, ein robustes Streamen zu ermöglichen, derzeit kommt es allerdings nur als „Untermenge“ WebM großflächig zum Einsatz (siehe Hintergründe). WebM ist quasi ein auf die Codecs VP8 und Vorbis beschränktes Matroska. Ogg ist auf besonders performantes Streamen ausgelegt, hat aber dafür als „Desktopformat“ Schwächen in der Synchronisation, wenn man spult.

      Daher habe ich bewusst MKV gewählt – es bietet die größte Flexibilität und lässt sich problemlos (auch optional durch Konvertierung) zum Streamen nutzen, ohne dabei auf dem Desktop ungeeignet zu sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.