Set of command-line tools to work with Matroska files Matroska is a new multimedia container format, based on EBML (Extensible Binary Meta Language), which is a kind of binary XML. These tools allow to manipulate Matroska files.
mögliche Eingabeformate von mkvmerge lassen sich so anzeigen:
# mkvmerge -l
So werden eine Videospur und eine Tonspur in einen Matroska-Container gemuxt:
# mkvmerge --title "Film Name" -o neuer_Film.mkv Film_ohne_Ton.avi Tonspur.ac3
# mkvmerge --default-language ger --aspect-ratio 1:16:9 -o neuer_Film.mkv Film_ohne_Ton.mkv Tonspur.mp3
# mkvmerge --default-language ger --display-dimensions 1:1024x576 -o neuer_Film.mkv Film_ohne_Ton.avi Tonspur.m4a
So wird ein Film aus einem unerwünschten Container (hier AVI) in einen Matroska-Container gemuxt:
# mkvmerge -o Film.mkv Film_mit_falschem_Container.mpg
Mit mkvinfo funktioniert das natürlich nur bei MKV-Dateien!
# mkvinfo Film.mkv
Audio- und Videospur aus einer MKV-Datei unverändert extrahieren
# mkvextract tracks Film.mkv 1:Film_stumm.mkv 2:Film_tonspur
Die grafische Oberfläche von mkvmerge heißt mmg.
# mplayer FILM_videospur.mkv -vo null -ao null -identify -frames 0 -nocache 2>/dev/null | fgrep ID_LENGTH ID_LENGTH=572.52
# mplayer FILM_audiospur -vo null -ao null -identify -frames 0 -nocache 2>/dev/null | fgrep ID_LENGTH ID_LENGTH=596.49
# mkvmerge --identify Film_out_of_sync.mkv File 'Film_out_of_sync.mkv': container: Matroska Track ID 1: video (V_MPEG4/ISO/AVC) Track ID 2: audio (A_AAC)
Track ID der Audio-Spur ermitteln:
# mkvmerge --identify Film_out_of_sync.mkv | awk '/Track ID/&&/audio/ {sub(":",""); print $3}'
2
# mkvmerge -y 2:0,572.52/596.49 -o Film_in_sync.mkv Film_out_of_sync.mkv
oder
# mkvmerge -y 2:0,24/25 -o Film_in_sync.mkv Film_out_of_sync.mkv
oder
# mkvmerge -y 2:0,0.96 -o Film_in_sync.mkv Film_out_of_sync.mkv
Der Parameter “-y“ ermöglicht ein Verschiebung zwischen Audio- und Videospur. Ihm müssen 3 Werte übergeben werden:
Wir werden die Laufzeit der Tonspur anpassen und geben deshalb die Track ID der Tonspur (in diesem Fall „2“) an. Hinter dem Doppelpunkt wird eine „0“ angegeben, wenn die Audio- und die Videospur zur selben Zeit starten sollen, gibt es hier nur eine Verschiebung zwischen den Spuren, dann genügt hier die entsprechende Zeitverschiebung, mehr Parameter sind dann nicht nötig.
In diesem Beispiel ist es aber etwas komplizierter, hier muss noch ein weiterer Parameter durch Komma getrennt angegeben werden. Ich habe einen 1080p-Film mit 24 Bildern pro Sekunde in ein 576-Zeilen-Film (AVC-DVD-Profil / Level 3.0) transcodiert.
Das hat zur Folge, dass jetzt 25 Bilder statt 24 Bilder pro Sekunde abgespielt werden (das ist normal so, siehe Film-Lauflängen-Problematik/PAL-Beschleunigung), daraus ergibt sich eine um ca. 4% schnellere Videospur. Allerdings ist die Tonspur immer noch genauso lang wie vorher…
Deshalb muss hier noch ein Wert für den Laufzeitunterschied angegeben werden, in diesem Fall ist das „24/25“. Man kann hier einen Bruch oder auch eine Fließkommazahl („0.96“) angeben. Der Bruch kann auch aus den gemessenen Laufzeiten, der beiden separaten Spuren bestehen: „572.52/596.49“.
Man vermeidet Probleme, wenn man die Tonspur, die für einen Film gedacht ist, nicht in einen AAC-Container, sondern in einen MP4-Container verpackt!
Zum Beispiel so:
# faac -w --tns -q 160 -o Tonspur.m4a Tonspur.wav