Hallo,
ich wollte über ein Shell-Skript nur die Audio-Streams aus einer Matroska-Datei speichern lassen. Das ganze soll unabhängig davon funktionieren wieviele Audiostreams die Datei hat. Ich will das also nicht manuell auslesen und eingeben müssen. Damit kann ich mir erst einmal die IDs der Audiodateien ausgeben lassen:
mediainfo --Inform="Audio;%ID%|" aaa.mkv
und etwas erweitert um das Trennungszeichen | am Ende wegzuschneiden
out=$(mediainfo --Inform="Audio;%ID%|" aaa.mkv) ; echo ${out%?}
Die Ausgabe könnte dann z. B. so aussehen (man kann als Trennungszeichen auch jedes andere Zeichen nehmen):
2|3
Hier sind also die Stream-ID 2 und 3 Audiostreams. Nun möchte ich das ganze mit mkvextract demuxen. Bei mkvextract geht das so:
mkvextract input.mkv tracks 1:audio1.m4a 2:audio2.m4a
Zum einen ist die Nummerierung unterschiedlich, Mediainfo beginnt bei 1 (meist das Video) und mkvextract bei 0 (auch meist das Video). Hauptprobelm für mich ist aber: wie bastel ich die MKVExtract-Zeile so zusammen, dass aus der Ausgabe der IDs die Kommandozeile wird? Könnte man die Ausgabe der IDs so umformen, dass eine ID-Nummer pro Zeile steht und dann das ganze Zeilenweise in die MKVExtract-Kommandozeile einfügen lassen?
Friedrich