Streams in HEVC H.265 MKV-Datei entfernen?

Ich habe mehrere MKV-Dateien mit Videos, die a la HEVC/H.265 codiert sind. Ich möchte über die Windows-Befehlszeile eine neue MKV-Datei erstellen und alle außer bestimmten Untertitelspuren und Audiospuren Datei für Datei entfernen, da ich nicht mehrere fremdsprachige Tonspuren und Untertitel beibehalten muss Spuren.

Nehmen wir an, ich habe ffprobe verwendet , um herauszufinden, welche Streams in einer bestimmten MKV-Datei enthalten sind. Außerdem möchte ich die erste und dritte Audiospur sowie die 24. und 25. Untertitelspur aus dieser Datei behalten. Ich habe https://stackoverflow.com/questions/63302454/map-metadata-stream-by-filter-in-ffmpeg als Referenz verwendet.

Ich habe versucht, das mit zu tun

ffmpeg -i INPUTFILE.MKV -map 0:0 -map 1:1 -map 1:3 -map 1:a:24 -map 1:a:25 OUTPUTFILE.MKV

was fehlschlägt. Wie soll ich den Befehl schreiben?

Antworten (1)

In der Syntax steht -map 1:a:24, 1für den Index der Eingabedatei. Die Zählung beginnt bei 0, bezieht sich also 1auf die 2. Eingabedatei, aber der Befehl hat nur eine Eingabe. asteht für Stream Type, und in diesem Fall ist es Audio – vsteht für Video, sfür Untertitel, dfür Daten. 24repräsentiert die 25. (0-indiziert, erinnern Sie sich) Audiospur. Wenn Ihr Befehl eine Eingabedatei mit drei Video-, drei Audio- und drei Untertitel-Streams in der folgenden Reihenfolge hat: V A S A V S V A S, dann wird das 2. Video -map 0:v:1Sie können mit einem absoluten Index darauf verweisen, indem Sie verwenden -map 0:4. Bei der absoluten Indizierung gibt es keinen Streamtypbezeichner.

Angenommen, die Stream-Nummerierung in Ihrer Beschreibung ist korrekt, verwenden Sie

ffmpeg -i IN.MKV -map 0:0 -map 0:a:0 -map 0:a:2 -map 0:s:23 -map 0:s:24 -c copy OUT.MKV

Beachten Sie, dass wenn -c copyweggelassen wird, alle Streams neu kodiert werden - normalerweise nicht das, was Sie wollen.