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?
In der Syntax steht -map 1:a:24
, 1
für den Index der Eingabedatei. Die Zählung beginnt bei 0
, bezieht sich also 1
auf die 2. Eingabedatei, aber der Befehl hat nur eine Eingabe. a
steht für Stream Type, und in diesem Fall ist es Audio – v
steht für Video, s
für Untertitel, d
für Daten. 24
reprä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:1
Sie 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 copy
weggelassen wird, alle Streams neu kodiert werden - normalerweise nicht das, was Sie wollen.