web-dev-qa-db-fra.com

Comment extraire les sous-titres d'une vidéo en utilisant ffmpeg?

J'essaie d'extraire le sous-titre de la vidéo en tant que fichier .srt. J'ai utilisé la commande suivante:

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

Mais, j'ai eu une erreur en tant qu'option non reconnue codec:s:0:1 Alors, pouvez-vous me dire la commande exacte et comment extraire un sous-titre en tant que fichier .srt en vidéo?

31
vijay

Simple:

ffmpeg -i Movie.mkv -map 0:s:0 subs.srt
  • - i : URL du fichier d'entrée/chemin.
  • - map : désignez un ou plusieurs flux d'entrée en tant que source pour le fichier de sortie.
  • s: 0 : sélectionnez le flux de sous-titres.
48
jm3

-codec:s:0:1 est incorrect. Si vous utilisez -codec:s:0, ffmpeg utilisera le codec indiqué pour le premier flux de sous-titres transmis à la sortie. Si vous utilisez -codec:s:1, il l'utilisera pour le second flux de sous-titres, etc.

Vous pouvez également utiliser -codec:s pour sélectionner tous les flux de sous-titres de sortie ou -codec:2 pour sélectionner le troisième flux de sortie, quel que soit son contenu.

Vous êtes probablement dérouté parce que l'option -map se comporte différemment: vous devez sélectionner l'entrée à partir de laquelle le flux sélectionné provient. (Donc, -map 0:s:0 prendrait le premier flux de sous-titres de la première entrée et le transmettrait à la sortie). Cependant, -map permet de sélectionner les flux que vous souhaitez extraire des entrées; alors que la plupart des autres options qui utilisent le mappage de flux sont destinées aux flux une fois sélectionnés (il n’est donc pas nécessaire de spécifier le fichier d’entrée auquel ils appartiennent), car ils sont transmis à la sortie.

8
evilsoup