Ich habe viele Dateien mit mehreren Audio-und Untertitelsprachen, aber die Track-Nummern sind nicht konsistent (der englische Audio-Stream ist nicht immer der erste), so mit einem Befehl wie:Mapping Streams nach Sprache in FFmpeg
ffmpeg -i "input.mkv" -map 0 -map -0:a:1 -c:v copy -c:a copy "output.mkv"
liefert nicht die erwarteten Ergebnisse. Nach der Suche um entdeckte ich, war es möglich, Ströme mit diesem Befehl basierend auf Sprache zur Karte:
ffmpeg -i "input.mkv" -map 0 -map -0:m:language:eng -c:v copy -c:a copy "output.mkv"
jedoch -map -0:m:language:eng
alle Titel mit der englischen Sprache Flagge entfernen. Um die Untertitelspuren beizubehalten, können Sie -map 0:s
verwenden. Dies ist eine gute Lösung. Ich möchte jedoch wissen, ob es möglich ist, nur Audio-Streams basierend auf der Sprache zuzuordnen.
Dieser Befehl kopiert den Stream des Videostreams * und nicht-englischen Untertitel. * Es sei denn, das Video ist als Englisch markiert, was es normalerweise nicht ist. Meine Abhilfe vermeidet dies. – Mulvya
Hmm Ihre Lösung wird keine Anhänge zuordnen, aber wie machen Sie das, ohne -map 0 zu verwenden oder die ID jedes einzelnen Anhangstreams anzugeben? Das erste Workaround, das Sie gepostet haben, bestand darin, eine temporäre Datei zu erstellen, wodurch der Prozess länger dauerte. Auch wenn du '-map 0: v' nicht verwendest, nachdem die englischen Streams entfernt wurden, wird das Video nicht entfernt, wenn es die englische Flagge hat? ? – ffmpeg123
Geänderte Problemumgehung zum Beibehalten von Daten- und Anhangstreams. Ihr ursprünglicher Zweck, IIRC, bestand darin, nur englische Audio-Streams zu entfernen. Mein Workaround macht das und lässt alles andere durch. – Mulvya