Ich habe versucht, nicht benötigte Audio-Streams aus einer MKV-Datei (Matroska) zu entfernen. Ich möchte dies tun, um zu vermeiden, dass Sie den gewünschten Stream in Windows Media Player manuell auswählen müssen.
Die Eingabedatei enthält die folgenden ffmpeg-Informationen:
Stream #0.0: Video: mpeg4, yuv420p, 704x396 [PAR 1:1 DAR 16:9], 29.98 tbr, 1k tbn, 29.98 tbc
Stream #0.1(eng): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.2(jpn): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.3(eng): Subtitle: 0x0000
Stream #0.4(eng): Subtitle: 0x0000
Stream #0.5: Attachment: 0x0000
Stream #0.6: Attachment: 0x0000
Da ich die Streams 0, 1 und 3 (sub) haben möchte, sieht mein Befehl ffmpeg folgendermaßen aus:
ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:3 -vcodec copy -acodec libmp3lame -newsubtitle test.mkv
was seltsamerweise den Fehler gibt:
At least one output file must be specified
Untertitel entfernen:
ffmpeg -i input.mkv -map 0:0 -map 0:1 -vcodec copy -acodec libmp3lame test.mkv
gibt mir das:
Number of stream maps must match number of output streams
Ich verstehe anscheinend nicht wirklich, wie die Option "Karte" funktioniert. Würde mir jemand helfen, es herauszufinden?
--atracks
gäbe es keine Option mehr, stattdessen sollte man entweder--audio-tracks
oder verwenden--video-tracks
.Versuchen Sie
-f
, das angegebene Format zu erzwingen:quelle
Hier gibt es wirklich zwei verschiedene Probleme:
In der ersten Befehlszeile ist die Reihenfolge der Parameter möglicherweise falsch. Ich denke, der
-newaudio
Schalter muss am Ende sein, nach dem Namen der Ausgabedatei.In der zweiten Befehlszeile, "Entfernen der Untertitel", müssen Sie die Untertitel mit dem
-sn
Schalter entfernen , da die Eingabedatei Untertitel enthält . Ansonsten scheint FFmpeg mindestens eine Angabe in der-map
Liste haben zu wollen.quelle
In Ihrem ersten Befehl haben Sie nicht angegeben, dass test.mkv Ihre Ausgabedatei ist. Sieht so aus, als müssten Sie diesen Teil so ändern, dass er
... -c copy test.mkv
dem Codec ähnelt oder ihn angibt... -c:s copy test.mkv
.Und
-newsubtitle
ich bin mir nicht sicher, was diese Flagge da drin macht. Wenn Sie jedoch eine Untertiteldatei haben, die Sie hinzufügen möchten, sollten Sie in der Lage sein, ein anderes Eingabe-Flag auszuführen-i input.srt
. Siehe dazu diesen Link .Bei Ihrem zweiten Befehl scheinen Sie zu versuchen, den Videostream zuzuordnen und zu kopieren. Vielleicht möchten Sie versuchen, die
-vcodec copy
Anweisung zu entfernen , und sie sollte einfach funktionieren. :)quelle
l
Stream-Bezeichner .