table des matières   --> suivant   <-- précédent   dernière modification le 22 novembre 2002

5. Sous-titres

Sur un DVD, les sous-titres sont enregistrés sous forme d'images qui sont affichées sur la vidéo par votre lecteur. De cette façon, les auteurs ont un large choix pour les langues (et cela facilite le sous-titrage dans les langues asiatiques). Pour nous, cela peut être, ou non, un problème, en fonction du fait que nous les voulions directement incrustés dans l'image, ou dans un fichier séparé.

5.1. Convertir les sous-titres en format texte

La plupart du temps, vous ne voulez pas être forcés de voir les sous-titres. Ce n'est pas possible si vous incluez les sous-titres dans l'image pendant le codage. Vous devez extraire les sous-titres du DVD dans un fichier séparé que l'utilisateur pourra (ou non) utiliser. Je vais décrire comment convertir les sous-titres DVD dans un format texte très utilisé. Les sous-titres en texte peuvent facilement être redimensionnés par le lecteur (en choississant une police appropriée) et ils prennent vraiment peu de place (la plupart du temps moins de 100 Ko).

Pour cela, vous devez avoir transcode et ses sources. Vous avez besoin de tccat et tcextract de transcode et des fichiers situés dans transcode/contrib/subrip (contenu dans les sources de transcode).

5.1.1. Compiler les utilitaires

Malheureusement, aucun paquetage (RPM, deb) n'inclue subrip à ma connaissance, donc vous aurez à le compiler et l'installer vous-même. Mais c'est plutôt facile.

  1. Assurez-vous d'avoir gocr et ispell installés sur votre système. Ils sont compris dans la plupart des distributions modernes. Mais si la vôtre n'a pas gocr alors allez sur son site.
  2. Allez dans le répertoire des sources de subrip (cd transcode/contrib/subrip) et tapez make.
  3. Copiez les trois programmes srttool, subtitle2pgm et pgm2txt dans un répertoire contenu dans votre PATH.
  4. Vous pouvez modifier le script pgm2txt si votre version de gocr ne supporte pas l'option -p: à la fin, il y a deux lignes contenant -p ${DBPATH}. Retirez-les simplement (après avoir consulté la page de manuel de gocr).

5.1.2. Extraire les sous-titres

Ici, je suppose que vous avez copié votre DVD avec vobcopy -m, ce qui signifie que vous en avez une copie miroir incluant les fichiers .IFO. Si ce n'est pas le cas, vous devrez adapter les sources.

Tout d'abord, voyons quels sous-titres sont disponibles. On peut utiliser mplayer pour cela :
mplayer -dvd-device /space/st-tng/disc1/ -dvd 1 -vo null -ao null -frames 0 -v 2>&1 | grep sid
ce qui demande à mplayer de donner plein d'informations à propos des sources et de ne rien jouer. Ca devrait donner la liste des sous-titres:
[open] subtitle ( sid ): 0 language: da
[open] subtitle ( sid ): 1 language: de
[open] subtitle ( sid ): 2 language: en
[open] subtitle ( sid ): 3 language: es
[open] subtitle ( sid ): 4 language: fr
[open] subtitle ( sid ): 5 language: it
[open] subtitle ( sid ): 6 language: nl
[open] subtitle ( sid ): 7 language: no
[open] subtitle ( sid ): 8 language: sv
[open] subtitle ( sid ): 9 language: en

Maintenant que nous avons le sid (subtitle ID) correspondant à la langue voulue, on peut utiliser les outils de transcode pour extraire le flux des sous-titres:
tccat -i /space/st-tng/dic1/ -T 1 -L | tcextract -x ps1 -t vob -a 0x22 > subs-en
Le -a 0x21 est le numéro du sous-titre en hexadécimal: 0x20 + sid. Ici, on veut les sous-titres en anglais.

5.1.2. Convertir le flux

Ok, on a le flux non traité, mais que pouvons-nous en faire ? Tout d'abord, nous devons convertir chaque entrée de sous-titre en image. Ceci peut être réalisé facilement avec
subtitle2pgm -o english -c 255,255,0,255 < subs-en
Il y a cependant un truc. Avec -c vous pouvez spécifiez les niveaux de gris utilisés dans la conversion. L'idée est de faciliter le travail de gocr autant que faire ce peut. Vous aurez donc peut-être à jouer avec les paramètres - mais c'est également facile. J'ai pris les exemples suivants de mon DVD de Star Trek - The Next Generation :
Comme vous pouvez le voir, vous avez besoin d'une image qui ne contienne pas de caractères contourés.

subtitle2pgm crée plein d'images - une pour chaque sous-titre - et un fichier de contrôle, nommé english.srtx dans mon cas, qui contient la durée de chaque sous-titre. La prochaine étape est de laisser gocr reconnaître le texte:
pgm2txt english
Attention - gocr vous demandera souvent de lui apprendre les caractères qu'il n'aura pas reconnus. C'est normal. Une fois le travail fini, vous pouvez utiliser ispell sur les fichiers texte créés:
ispell -d american english*txt
Adaptez à la langue voulue, évidemment.

La dernière étape est d'utiliser srttool pour inclure le texte dans le fichier .srtx :
srttool -s -w < english.srtx > english.srt

Voilà, vous avez un sous-titre qui marche. Vous pouvez les utiliser avec, par exemple,
mplayer -sub english.srt mymovie.avi


table des matières   --> suivant   <-- précédent  Ce guide a été écrit par Moritz Bunkus et traduit par Massis Sirapian