Objectif : extraire un fichier de sous-titres d'un fichier mkv et le convertir en srt.
ffmpeg -i mon_fichier.mkv
Stream #0:XX...
. Par exemple :Stream #0:9(fre): Subtitle: hdmv_pgs_subtitle
C'est le flux de sous-titres que je veux extraire. C'est le 9ème, et c'est un flux de sous-titres au format image.
Note :
Subtitle: subrip
signifie que le flux de sous-titres est au format texte;Subtitle: hdmv_pgs_subtitle
signifie que le flux de sous-titres est au format image.Comme mon flux contient des sous-titres au format image, je dois demander à ffmpeg de simplement extraire (copy
) le flux de sous-titres numéro 9 (-map 0:9
) dans un fichier nommé sub.sup
:
ffmpeg -i mon_fichier.mkv -c copy -map 0:9 sub.sup
Note : pour extraire un flux de sous-titres au format texte, la commande est identique à ceci près qu'il faut indiquer un format de sortie adéquat (ex: sub.ass ou sub.srt). En effet, le format de sortie est déterminé par ffmpeg selon l'extension du fichier de sortie.
Dernière étape, je dois convertir ce fichier de sous-titres au format image (sub.sup), en sous-titres au format texte (sub.srt). Pour cela, je peux m'amuser avec mkvtoolnix, ou bien je peux aller sur ce site :
Convert
;Edit : la conversion du fichier de sous-titres au format image en sous-titres au format texte implique le traitement du premier par un outil de reconnaissance de caractères (OCR). C'est pour ça que le choix du site web m'a paru le plus rapide à utiliser. Sinon il faut choisir le bon outil de OCR pour mkvtoolnix et faire des tests...
Valable surtout pour les séries.
En organisant les fichiers vidéos et les sous-titres de cette façon :
Ma_Série\
|- Episode_01.mp4
|- Episode_02.mp4
|- Episode_03.mp4
|- Episode_04.mp4
|- Subtitles\
|- Episode_01_FR.srt
|- Episode_02_FR.srt
|- Episode_03_FR.srt
|- Episode_04_FR.srt
Dans les préférences de VLC > Video > Subtitles/OSD, il suffit de vérifier que le champs subtitle auto-detection path contient le répertoire ./Subtitles
. Les fichiers de sous-titres de chaque épisode se chargeront automatiquement à la lecture (plus besoin de les situer à côté des fichiers vidéo).
De plus, si l'option subtitle auto-detection fuzziness est réglée sur la valeur 3, cela signifie que les fichiers de sous-titres peuvent s'écrire ainsi :
Nom_fichier_vidéo[.]*.srt
Donc je peux charger plusieurs fichiers de sous-titres pour la même vidéo. Exemple :
Fichier vidéo : Episode_01.mp4
Fichier sous-titres 1 : Episode_01_FR.srt
Fichier sous-titres 1 : Episode_01_EN.srt
Même si dans ce cas, je conseille plutôt d'ajouter un répertoire par langue de sous-titres (ex : Subtitles-fr, Subtitles-en, etc).