Numerierung der Streams in Matroska und MP4

  • Hallo,


    ich hab mir hier unter Ubuntu mal ein kleines Skript gebastelt um automatisch Matroskadateien zu demuxen. Ich hatte ursprünglich mit Mediainfo die Anzahl der Audio- und Subtitlestreams ausgelesen und dann daraus ein passendes Demux-Skript gebastelt, welches ausgeführt wird. Dabei trat bei den UT ein Problem auf (was wohl theoretisch auch beim Audio passieren könnte): Mediainfo scheint fehlende Nummern "aufzufüllen".


    Angenommen ursprünglich hatte ein Film folgende Streams


    Code
    1. 01 video
    2. 02 audio
    3. 03 untertitel 1
    4. 04 untertitel 2
    5. 05 untertitel 3


    Dann muxe ich das neu ohne UT 2. In Mediainfo hat dann UT 1 weiterhin die gleiche ID wie vorher, UT 3 erhält die ID von UT 1 +1. Das führte zu Fehlern, denn mkvextract will das anders und mkvinfo zeigt das auch anders an. Hier haben UT1 und UT3 weiter die gleiche ID und die ID für UT2 fehlt in der neuen Datei schlicht. Hab das dann statt mit Mediainfo mit mkvextract gemacht, was aber etwas mühsamer ist.


    Meine Frage nun: Gibt es das auch bei MP4 (oder anderen Container-Formaten)? Ich will mir wieder ein (etwas weniger komplexes) Demux-Skript für MP4 anlegen, leider hilft hier als Analysewerkzeug logischerweise mkvinfo nicht weiter. Mediainfo zählt ja wie oben schon gesagt falsch.

    _________________________


    Zitat

    Zieht ein Bienenschwarm aus, so wird er herrenlos, wenn nicht der Eigentümer ihn unverzüglich verfolgt oder wenn der Eigentümer die Verfolgung aufgibt.


    § 961 BGB [Eigentumsverlust bei Bienenschwärmen]


    :D

  • Zitat

    Dann muxe ich das neu ohne UT 2.

    Wie sieht denn da der Aufruf aus?

    Je nach Aufruf sollte die Stream/Track ID gleich bleiben, aber die StreamOrder anders sein.

    Zitat

    Mediainfo zählt ja wie oben schon gesagt falsch.

    IDs sollten nicht gezählt werden, sondern aus dem Container ausgelesen werden.

    Die StreamOrder sollte sich ändern.


    Zitat

    Gibt es das auch bei MP4 (oder anderen Container-Formaten)?

    Das es IDs gibt die je nach Remux aufruf erhalten bleiben können: Klar. :)


    Code
    1. MP4Box -set-track-id 10:21 file.mp4

    würde z.B. die ID des Tracks mit ID 10 von 10 auf 21 ändern.

    Ja, ich weiß das ist kein Remuxing, das sollte auch nur zeigen, dass man die ID ändern kann ohne, dass sich die StreamOrder ändert.

    Und 'Ja', es gibt auch muxing-Aufrufe, bei denen man die Track ID beim Mulitplexen ändern und somit auch beibehalten kann unabhängig von der StreamOrder. ;)


    ------

    Wenn ich remuxen würde in einem Skript allgemein eigentlich nur zwei Kriterien für mich:

    a. entweder ich will bestimmte Sprachen haben, dann remuxe ich basierend auf den Sprach-Tags

    b. ich will immer den x-ten Audio/Video/Untertitel Stream haben, dann remuxe ich basierend auf der StreamOrder (bzw. er Stream order by typ)

    -> Spontan würde ich sagen: Schau Dir das lieber mit FFmpeg als mit mkvinfo&mediainfo an, vermute dass ist zugänglicher. (+ geht i.d.R. auch unabhängig vom ContainerTyp)


    Cu Selur