- SubRip
-
SubRip est un logiciel de reconnaissance de caractères pour Windows qui extrait les sous-titres et leur synchronisation de vidéos ou de DVD. Il les enregistre au sein d'un simple fichier texte. Subrip est aussi le nom du format de fichier associé à ce logiciel. Le fichier de sous-titres est nommé avec l'extension
.srt
. Ce format est utilisé par la plupart des logiciels de lecture vidéo ainsi que les logiciels d'édition de sous-titres.En pratique, SubRip est le premier programme à avoir été configuré pour détecter correctement les sous-titres dans un fichier vidéo. Les bons codecs vidéo (DGMPGDec pour DVD) doivent être installés avec AviSynth. SubRip est configuré pour afficher une image avec des sous-titres, incluant la couleur, la forme la zone de sous-titres et toutes manipulations d'image requises (Dilatation, ajustement de contraste). Après essai, l'extraction est alors faite automatiquement pendant la lecture entière du fichier.
Le format du temps utilisé est heures
:
minutes:
secondes,
millisecondes ; le champ des secondes a une précision de trois chiffres après la virgule. Le caractère de séparation des décimales est la virgule, puisque le programme a été écrit en France, et le caractère de fin de ligne est la paire CRLF. Les sous-titres sont numérotés, en commençant par 1.Le portage de SubRip sur Linux est difficile car il a été écrit en Delphi, mais SubRip fonctionne bien sous Linux avec Wine.
Sommaire
Versions
SubRip a été écrit par le développeur français Brain, en 1999. La première version, SubRip 0.5 beta, est sortie le 3 mars 2000. Toutes les versions consécutives seront déclarées comme Beta. Sa dernière version était SubRip 0.97 beta publié le 8 septembre 2001. Brain stoppa le développement, et après plusieurs demandes de support pour GNU/Linux, sortit le code source de SubRip sous la licence GPL. SubRip est écrit en Delphi 5. Le site original est maintenant inaccessible, mais une copie est visible sur Internet Archive.
Après sept semaines, T.V. Zuggy et Guimli sortirent leur propre version du programme : SubRip 0.98. SubRip version 1.50 Beta 3 sortit le 5 janvier 2006. Le code a été transcrit vers Delphi 2005 (après des passages par Delphi 7). La dernière version est la 1.50 beta 4. Le code est en majorité issu du travail de ai4spam qui annonça en octobre 2006 qu'il arrêterait après une dernière sortie beta.
Champs
Un sous-titre dans un fichier SRT consiste en cela :
numéro du sous-titre Temps de départ --> temps de fin Texte du sous-titre (peut être sur plusieurs lignes) [ligne vide]
L'Unicode et des balises HTML simples comme
<i>
,<b>
et<font>
dans les sous-titres sont supportés par la majorité des lecteurs vidéos, mais VLC et certains éditeurs de sous-titres (SubResync, Subtitle Workshop) ne comprennent pas très bien ces balises. Il n'y a aucune spécification formelle pour le format.srt
.Exemple de fichier SRT
1 00:00:20,000 --> 00:00:24,400 En réponse à l'augmentation de la criminalité dans certains quartiers, 2 00:00:24,600 --> 00:00:27,800 Le gouvernement se félicite pour les prochaines élections...
MPlayer tolère le numéro manquant, comme dans l'exemple suivant :
00:00:00,000 --> 00:00:00,999 Je connais ça... 00:00:01,000 --> 00:00:01,999 C'est un système Unix!
Conversion
Voici un exemple de script en Python qui convertit les sous-titres SubRip (
.srt
) dans le format MicroDVD (.sub
):import sys,string,re framerate = 23.976 if(len(sys.argv)<2): print 'usage: %s input'%(sys.argv[0]) sys.exit(0) name = sys.argv[1] if name[-4:] == '.srt': name = name[:-4] infile = '%s.srt'%(name) outfile = '%s.sub'%(name) fin = open(infile,'r') fout = open(outfile,'w') subtitle_count = 1 read_mode = 0 read_buffer = [] html_re = re.compile(r'<.*?>') for line in fin: line = line.strip() if (read_mode == 0) and (string.find(line,str(subtitle_count)) >=0 ): read_mode = 1 continue if (read_mode == 1): starttime = 60*60*int(line[:2]) + 60*int(line[3:5]) + int(line[6:8]) + int(line[9:12])/1000.0 stoptime = 60*60*int(line[17:2+17]) + 60*int(line[3+17:5+17]) + int(line[6+17:8+17]) + int(line[9+17:12+17])/1000.0 read_mode = 2 continue if (read_mode == 2): if (line == ''): read_mode = 0 write_str = '{%d}{%d}%s%s'%(starttime*framerate,stoptime*framerate,'|'.join(read_buffer),'\n') write_str = html_re.sub('',write_str) fout.write(write_str) read_buffer = [] subtitle_count += 1 continue read_buffer += [line] fin.close() fout.close()
Voir aussi
Liens externes
Wikimedia Foundation. 2010.