mkvextract

  • Ich werde irgendwie nicht richtig schlau aus mkvextract help

    Code
    1. mkvextract -h


    Wie extrahiere ich den Videostream h.264 (oder anderes) und den Audiostream AC3 (oder anderes) aus einer MKV in der Kommandozeile? Oder am besten einfach alle Spuren die die MKV beinhaltet.
    (mkvextractGUI gibt es nicht für Raspbian)
    Kann mir jmd. helfen?

  • Zuerst alle Spuren auflisten:

    Code
    1. mkvmerge -i "datei.mkv"


    Beispiel-Rückgabe:

    Code
    1. File 'datei.mkv': container: MatroskaTrack ID 0: video (MPEG-4p10/AVC/h.264)Track ID 1: audio (AC-3/E-AC-3)


    Die TrackIDs merken für mkvextract:

    Code
    1. mkvextract tracks "datei.mkv" "0:ausgabe1.264" "1:ausgabe2.ac3"


    Eine integrierte Funktion, um alle Spuren zu extrahieren, gibt es nicht.

  • Kurze Antwort:


    Code
    1. mkvextract tracks clip.mkv


    (P.S.: Wenn man keine einzelnen Tracks wählt, werden alle extrahiert, oder?!)


    Etwas ausführlicher:



    Welcher Track welche Nummer hat, sollte man vorher mit mkvinfo erfahren können. Ob man einzelne Tracks "roh" extrahieren sollte, hängt von deren Format ab.

  • Wäre dann sicherlich mal ein Verbesserungsvorschlag, zumindest u.U. ein "*" für die Tracknummer und evtl. (wenn überhaupt) eine Dateimaske für automatische Namensgebung... vielleicht gibts den ja schon.
    _


    Hmm, klingt so, als ob Mosu das gar nicht will und das Interpretieren von JSON für eine super Lösung hält. Viel zu kompliziert für jemanden, der noch nicht mal Batch auswendig kann...

  • Fänd ich auch gut, vllt. muss man mbunkus nochmal fragen, habe ihn schon mal angeschrieben wg. ner mkvmerge sache, hat mir prima geholfen. vllt. nochmal nerven ;)
    Extrahieren aller Spuren, Namengebung wäre mir da auch egal, Track1.ac3... , Track2.srt... usw. oder in der Art.

    Code
    1. mkvextract tracks all video.mkv


    :ja:

  • Wie könnte denn eine Batch aussehen, wenn ich mehrere MKV habe, Spur 0 und 1 jeweils immer?



    [Edit]
    Habs, so funktionierts:

    Code
    1. for file in *.mkv; do mkvextract tracks "$file" 0:"$file".track1.264 1:"$file".track2.ac3; done
    2. oder
    3. find -type f -name '*.mkv' -exec mkvextract tracks {} 0:{}.track1.264 1:{}.track2.ac3 \;