Wie kann ich mit ffmpeg Untertitel aus Videos extrahieren?


34

Ich versuche, Untertitel aus dem Video als .srtDatei zu extrahieren. Ich habe den folgenden Befehl verwendet:

FFMPEG -i mytestmovie.mkv -vn -an -codec:s:0.1 srt sub.srt

Aber ich habe eine Fehlermeldung als nicht erkannte Option erhalten. codec:s:0:1 Können Sie mir also den genauen Befehl und das Extrahieren eines Untertitels als .srtDatei in einem Video mitteilen ?


umair: sagst du mir in der Eingabeaufforderung
— vijay

Ich habe das gleiche Problem. Hast du das irgendwann zum Laufen gebracht?
— Maxime Labelle

Antworten:


51

Einfach:

ffmpeg -i Movie.mkv -map 0:s:0 subs.srt
  • -i : URL / Pfad der Eingabedatei.
  • -map : Bestimmen Sie einen oder mehrere Eingabestreams als Quelle für die Ausgabedatei.
  • s: 0 : Wählen Sie den Untertitel-Stream aus.

2
Das hat bei mir mit einer MP4-Datei mit eingebetteten Untertiteln geklappt.
— Rubens Mariuzzo

11
Dies würde die erste Untertitelspur herunterladen. Wenn mehrere vorhanden sind, 0:s:1laden Sie mit den zweiten, 0:s:2den dritten und so weiter herunter.
— Fabien Snauwaert

5
@ jm3 Würdest du zufällig eine Möglichkeit kennen, alle Untertitelströme automatisch aus einer Datei zu extrahieren und sie nach ihrer Sprachkennung zu benennen (z. B. eng, fre, dut usw.)?
— Fr.

Warum ist es so langsam, wenn es aus einem großen MKV-Container (~ 4 gb) extrahiert wird?
— Benutzer25

Um mehrere Untertitel gleichzeitig zu extrahieren, müssen Sie die -mapParameter für jede Datei duplizieren . Auch enthalten , -c copyso dass es nur die Datei extrahiert , ohne zu versuchen , sie zu verarbeiten: ffmpeg -i Movie.mkv -c copy -map 0:s:0 subs.01.srt -c copy -map 0:s:1 subs.02.srt. Auf jeden Fall wird es lange dauern, da ffmpeg die gesamte Videodatei lesen muss, um alle Teile der Untertitelströme zu finden.
— Radek Pech

8

-codec:s:0:1ist falsch. Wenn Sie -codec:s:0dann ffmpeg verwenden, wird der angegebene Codec für den ersten Untertitel-Stream verwendet, der an die Ausgabe übergeben wird. Wenn Sie dann ffmpeg verwenden, -codec:s:1wird er für den zweiten Untertitel-Stream verwendet, usw.

Sie können auch verwenden -codec:s, um alle Ausgabe-Untertitelströme oder -codec:2den dritten Ausgabestream auszuwählen, unabhängig davon, um welchen Stream es sich handelt.

Sie sind wahrscheinlich verwirrt, weil sich die -mapOption anders verhält. Dort müssen Sie auswählen, von welchem ​​Eingang der ausgewählte Stream stammt. ( -map 0:s:0würde also den ersten Untertitelstrom von der ersten Eingabe nehmen und ihn der Ausgabe zuführen). Hier können Sie -mapjedoch auswählen, welche Streams Sie von den Eingaben abrufen möchten. Während die meisten anderen Optionen, die die Stream-Zuordnung verwenden, für die Streams verwendet werden, nachdem sie ausgewählt wurden (sodass nicht angegeben werden muss, aus welcher Eingabedatei sie stammen), wenn sie an die Ausgabe übergeben werden.


evilsoup: ich würde den folgenden Befehl verwenden E: \ FFMpeg_Latest> ffmpeg -i E: \ Routine \ routine.mkv -vn -an -map 0: s: 0 srt E: \ Routine \ sub.srt, es scheint ein Fehler i Konnte kein passendes Ausgabeformat für 'srt' finden, können Sie mir den Befehl zum Extrahieren eines Untertitels im Video
— mitteilen

2
Versuchen Sie: ffmpeg -i E:\Routine\routine.mkv -map 0:s:0 E:\Routine\sub.srt(ffmpeg sollte erkennen, dass Sie srt Untertitel aus dem Namen der Ausgabedatei möchten)
— Evilsoup

Ich habe benutzt: ffmpeg -i film.mp4 -vn -an -codec:s srt film.srtdas sollte alle Untertitel in die srt-Datei kopieren.
— Stuart

@Stuart extrahiert nicht alle Untertitel
— user25

1
@evilsoup -codec:sist gleich, -codec:s:0so dass nicht alle Untertitel ausgewählt werden ... es wird die erste
— Textspur
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.