Extraire les sous-titres d’un DVD mal foutu
Cet article provient de mon ancien site Internet.
Background
Je possède quelques DVD et j’ai pris l’habitude de les extraire et de les
encoder sur mon ordinateur afin d’éviter d’avoir à les trimballer à chaque
déplacement. Pour cela, j’utilise le
couple mplayer
/mencoder
et ça fonctionne très bien.
En général…
Et là, c’est le drame !
Tout allait bien dans le meilleur des mondes jusqu’à ce que je tombe sur ça.
Et là, on se dit que ça risque de poser un petit soucis
à mencoder
vu qu’il se base sur le sid
pour
identifier la piste à extraire :-/
Et effectivement, je n’ai pas réussi à extraire les sous-titre français. Cela
dit, c’était peut-être réalisable, mais comme je ne maîtrise pas le couple
mplayer
/mencoder
à 100% bah je n’ai pas trouvé de
solutions (j’ai bien tenté quelques bidouilles à base de slang
et
de IFO, mais en vain…)
La seule technique que j’ai trouvé pour avoir les sous-titres français, c’est
de les changer via la touche j
en mode interactif (c’est déjà
pas mal, mais totalement inutilisable dans un script d’extraction).
Ma solution
Du coup, je me suis tourné vers un autre poids lourd du
domaine : transcode
.
Voici donc la procédure à suivre :
1 2 3 | mplayer -dvd-device POINT_DE_MONTAGE dvd://TITRE -identify tccat -i POINT_DE_MONTAGE -T TITRE,-1 | tcextract -x ps1 -t vob -a 0xN > subs subtitle2vobsub -o subtitles -i CHEMIN_JUSQU_AU_FICHIER_IFO_CORRESPONDANT < subs |
Identification
La première commande m’a permis de repérer un truc fort utile pour la suite. Au début, rien de bien nouveau.
Mais peu de temps après le début de la lecture du chapitre j’ai vu apparaître ça.
Hum, il y aurait donc six pistes de sous-titres. Bien, alors examinons cela !
Pour ce faire, j’ai lancé le DVD (sans le casser bien sûr, haha -___-"…)
et j’ai testé les différentes pistes avec la fameuse
touche j
. Au final, j’ai :
- La 0 et la 1 qui ne sous-titre que les génériques (super utile…) ;
- La 2 et la 3 qui sont les sous-titres français tant recherché \o/ ;
- La 4 et la 5 qui sont les sous-titres en néerlandais.
La seule chose qui différencie la piste 2 et 3, c’est la taille de la police utilisée (idem pour 0 et 1 et pour 4 et 5). Bien ! Maintenant que l’identification est faite, passons à l’extraction.
Extraction
Il faut commencer par monter le DVD (via mount, pmount ou votre explorateur de fichier). Maintenant, voyons de plus près comment fonctionne cette commande (enfin, ces deux commandes serait plus juste).
La première commande est relative explicite. Le seul point un peu mystérieux c’est le -1 : il sert à extraire tous les chapitres d’un titre.
La seconde commande mérite un peu plus d’explications. Le ps1
est
le « codec » utilisé pour extraire les sous-titres (comment je le sais ? En
bien parce que je RFTM !). Le vob
c’est tout bêtement le type de
fichier sur lequel je bosse (DVD donc). Et enfin, la fameuse constante
magique 0xN
ou N est égal à 20 + l’ID de la piste à extraire
(0x22
ou 0x23
dans mon cas).
Bon, maintenant que l’on a nos sous-titres, il ne reste plus qu’à les convertir. Je ne sais même pas si le format dans lequel je les ai récupérés est exploitable, mais de toutes façons j’ai l’habitude de bosser avec des .idx et des .sub (qui font un joli vobsub une fois mis ensemble).
Conversion
Bon bah là, je pense que c’est trivial donc je ne vais pas m’attarder dessus.
On choisit le nom des fichiers de sortie (subtitles.idx
et subtitles.sub
dans mon cas) et on indique bien le
fichier IFO correspondant au VOB sur lequel
on bosse depuis le début.