Wenn man seine ordentlich erworbene Blu-ray-DVD archivieren oder für Mobilgeräte abspielbar machen möchte, kann man Bild und Ton in einen MKV-Container überführen. Hinter dem Kürzel MKV steht das offene, universelle, HD-taugliche Container-Format Matroska, über dessen Vorzüge im Zusammenhang mit der Werkzeugsammlung mkvtoolnix ich schon einmal geschrieben habe. Hier soll es nun darum gehen, einen Video-Stream, der im Format M2TS, Kürzel für MPEG2 Transport Stream, vorliegt, in eine MKV-Datei zu konvertieren. Das ganze sollte (von mir ungetestet) statt mit M2TS- auch mit AVCHD-Dateien funktionieren.
Statt „konvertieren“ sollte man besser „umverpacken“ sagen. Denn M2TS ist wie Matroska nur ein Container. Das heißt, wir müssen die darin enthaltenen Video- und Audio-Streams selbst gar nicht erneut kodieren. Wir kopieren sie einfach nur in die neue Verpackung. Weil die Streams – anders als mit einer Transkodier-Software wie Handbrake – 1:1 übernommen werden, bleibt die Konversion verlustfrei, und der Vorgang dauert auch keine Stunden, sondern nur Minuten.
Die M2TS-Stream-Datei(en) findet man in der Dateistruktur der Blueray-Disk unter BDMV/STREAM. Mit Hilfe von Werkzeugen wie ffmpeg oder mencoder lässt sich eine solche Stream-Datei via Kommandozeile verlustfrei ins Matroska-Format konvertieren.
Halten wir uns hier an die Allzweckwaffe ffmpeg. Build gibt es sowohl für Windows als auch für OS-X (ffmpegx), und bei Linux ist ffmpeg in der Regel einfach per Paketverwaltung zu installieren:
# sudo apt-get install ffmpeg
# ffmpeg -i stream.m2ts -scodec copy -acodec copy -vcodec copy -f matroska video.mkv
# ffmpeg -ss 00:20:18 -t 00:10:32 -i stream.m2ts -scodec copy -acodec copy -vcodec copy -f matroska video.mkv
In der ersten Zeile wird also ffmpeg installiert (bei mir läuft, wie aufmerksame Menschen am Debian-„apt“ und dem „sudo“ erraten können, gerade Ubuntu). Dann folgt die eigentliche Konvertierung in zwei Varianten. Zeile 2 konvertiert die ganze Datei, Zeile 3 dagegen nur einen 10:32 Minuten langen Teil (der Parameter -t) ab Minute 20:18 (der Parameter -ss). Schnitt und Konvertierung werden in diesem Fall also in einem Schritt erledigt.
Die Bedeutung der übrigen Parameter kann man sich wohl selbst zusammenreimen: „-vcodec“ steht für den zu verwendenen Video-Codec, „-acodec“ für Audio, „-scodec“ für Subtitel. Mit „copy“ sorgen wir dafür, dass diese Datenströme kopiert und nicht konvertiert werden. Der Parameter „-f“ bestimmt das Dateifomat der Ausgabe, hier also „Matroska“.
Danach liegt unser Video in Matroska-Verpackung vor. Es lässt sich nun auch von Software-Playern abspielen, die keine M2TS-Dateien abspielen, und mit mkvmerge kann man es weiter bearbeiten.
Hey,
mit ffmpeg läufts wie ein Länderspiel. (Win7 x64)
Danke für den Beitrag, hat schnell und sehr gut geholfen.
Und wie funktioniert das unter Windows ?
Was muss ich denn da machen ?
Ich würde mir ein für Windows kompiliertes ffmpeg besorgen, als Quelle wird diese hier häufig empfohlen. Die Static-Version – je nach eigenem system 32bit oder 64bit – sollte dann direct aus der Windows-Kosole ausführbar sein. Die Windows-Konsole bekam man – wenn ich mich recht erinnere – mit Start -> Ausführen und dort cmd.exe eintippen. (Ungetestet von mir.)
Hallo,
ich habe mehrere m2ts Dateien wenn ich nun:
ffmpeg -i *.m2ts -scodec copy -acodec copy -vcodec copy -f matroska video.mkv
eingebe erhalte ich:
Unable to find a suitable output format for ‚00002.m2ts‘
Hallo,
ich erhalte ebenfalls diese Fehlermeldung:
[NULL @ 0000000005642f20] Unable to find a suitable output format for ‚ffmpeg‘
ffmpeg: Invalid argument
Woran kann das liegen?
Danke.
Dieser Beitrag hat schon ein paar Jahre auf dem Buckel. Bei Ubuntu (und Debian) wird ffmpeg inzwischen durch avconf (eine Abspaltung des ffmpeg-Projektes) ersetzt und kann gar nicht mehr installiert werden (das soll sich wohl in 15.04 wieder ändern). Statt dessen muss man libav-tools installieren. Sodann lassen sich die ffmpeg …-Befehlszeilen mit der Anweisung avconv … absetzen. Zu der Fehlermeldung von Michael: Ich würde per ffmpeg -formats bzw. avconv -formats prüfen, ob Matroska überhaupt zu den unterstützten Formaten gehört und wenn nicht, mich dann auf die Suche nach einer Version von ffmpeg oder avconv machen, bei der die Unterstützung für mein Wunschformat einkompiliert ist.
Hallo zusammen, ich bin Neuling in der Linux Welt und hoffe jemand kann mir helfen.Installiert ist Ubuntu 12.04.Ich möchte MKVToolNix (7.8.0) installieren. Ubuntu bietet nur 5.x an.
Kann mir als Laie, schrittweise ein Fachmann erklären welche Befehle ich im Terminal machen muss um die Datei mkvtoolnix-7.8.0.tar.xz zu installieren / compilieren.
Danke vorab.
Georg
Vielen vielen Dank für den Beitrag, hat mir echt geholfen meine Files besser zu konvertieren.
Hmh leider werden bei diesem Beispiel hier scheinbar nicht alle Tonspuren kopiert.
Das sollte aber auch berücksichtigt werden denke ich.
Ich denke so sollte es auch mit allen Tonspuren funktionieren. Ob es aber noch verlustfrei ist kann ich derzeit nicht ermitteln, da ich nicht wüsste wie :).
# ffmpeg -i stream.m2ts -scodec copy -map 0 -acodec copy -vcodec copy -f matroska video.mkv
@Rg: So sollte es funktionieren, und auch weiterhin verlustfrei.
Warum ohne -map nicht alle Audiostreams überführt werden? Weil ffmpeg -i zunächst mal nur jeweils eine Video- und Audiospur mitnimmt, und zwar jeweils diejenige, die die beste Qualität verspricht (bei verschiedensprachigen Audiospuren ist dieser Qualitäts-Ansatz natürlich nicht überzeugend).
Wie auch immer, mit -map kann man einzelne Spuren auswählen – oder mit -map=0 wie in Deinem Beispiel eben alle auswählen. Mehr zu den umfassenden Möglichkeiten der map-Option steht im ffmpeg-Wiki: https://trac.ffmpeg.org/wiki/Map