CONVERTION
vtt <> srt
ffmpeg -i foo.vtt foo.srt
idx/sub <> srt
Avec le logiciel SubExtractor. Télécharger la version portable.
EXTRAIRE DES SOUS-TITRES
fichiers mkv
Il faut mkvtoolnix (télécharger) pour identifier le fichier sous-titre à extraire, puis mkvextract pour l'extraire.
Si le fichier S_TEXT est introuvable, cela signifie que les sous-titres sont incrustés dans l'image, et ne peuvent donc pas être extraits.
Sinon c'est possible de le faire avec Aegisub. Il faut ouvrir Aegisub > Fichier > Ouvrir des sous-titres > choisir la vidéo, et si elle n'apparaît pas, choisir la bonne liste de formats en bas de la fenêtre... Ensuite vous voilà avec seulement les sous-titres, que l'on peut enregistrer au format ass.
MKV Toolnix.
Demuxer le fichier MKV.
Repérer la piste audio de la langue choisie.
Repérer le numéro des fichiers .idx et .sub correspondant à la langue du sous-titrage choisi.
Ensuite muxer (MKV Merge) : le fichier H264 (possible de vérifier le nombre d'images par seconde en utilisant d'abord un lecteur qui l'indique ou Ripp-it. Par défaut ce sera 25.
Ajouter le fichier .ass et les fichiers aac et idx choisis.
Enfin et c'est le plus important, sur la page suivante de MKV Merge (Attachements), ajouter le fichier .sub correspondant à la langue de sous-titrage avec le code mime Text/Plain.
Cela devrait donner quelque chose comme
???.h264
???.aac
???.ass
???.idx
+ attachement ???.sub
Le fichier de sorti peut-être enregistré en .mkv ou .avi sans que ça change quoi que ce soit.
MKV_Toolnix n'extrait que des fichiers illisibles (type " Nay, answer me.›‚*C¶u«çƒfª ¤¡ž Stand and unfold yourself.›‚5C¶u¤çƒoÉ ¡— )
Si MKVExtractGUI-1.6.4.1 Wizard-1.2 : refuse d'extraire
Solution : recopier l'exe MKVExtractGUI-1.6.4.1 dans le dossier Toolnix en écrasant le MKVExtractGui exe de ce dossier.
Fichier ogg comportant plusieurs pite audio:
ouverture dans virtualdubmod , menu FLUX > liste des Flux
dans ce menu on y trouve toutes les pistes y compris les sous titres, ensuite clic sur DEMUX pour séparer toute les pistes.
plus simple
http://www.tutoriels-animes.com/creer-bivx-ajouter-plusieurs-bandes-sonores-video.html
j'ai trouvé ce petit logiciel très pratique mkvtools :http://www.emmgunn.com/mokgvm2dvd/mokgvmhome.html
Resynchroniser un sous titre en ligne : http://www.why42.eu/mys/fr_move.php
Il est possible d'utiliser virtualdub mod pour les anciennes versions de MKV.
Un petit clic sur l'onglet Streams, puis sur le sous menu stream list et en dessous de(s) la piste(s) audio il y aura les sous titres, un autre clic sur savewave et voilà.
il faut telecharger {mkvtoolnix-7.5.0-setup} ensuite telecharger {MKVExtractGUI-2.2.2.9} et surtout pas {gMKVExtractGUI.v1.6.0} car il ne marche pas
fichiers avi
Subrip permet d'extraire des sous-titres des fichiers avi, mais c'est très long:
1 - sélectionner français dans "guy language".
2 - Fichier > Ouvrir fichiers Vidéos HardSubbés > Sélectioner l'Avi concerné.
3 - Utiliser la touche lecture jusqu'à arriver au sous-titre de la plus grande taille possible. A ce moment touche pause.
4 - Clic droit pour définir la zone d'image concernée par les sous-titres.
- Si les sous-titres sont "hard-subés" (devant un fond noir), choisir une large zone.
- Si les sous-titres sont incrustés dans l'image, choisir une zone de 4 à 5 lettres seulement, sur la ligne du bas, au centre d'un sous titre.
5 - Cliquer sur la touche X2 : Utiliser la barre de défilement pour voir les caractères
6 - Cliquer le plus possible au centre d'une lettre puis cliquer le plus possible sur un contour.
7 - Recliquer sur la touche X2 pour voir l'image en entier. Cocher la case Contour
8 - Cliquer sur la touche Rev.
9 - Cliquer sur la touche Lancer
10 - Si la fenêtre "Nouveau caractère(s)" s'ouvre sur une image sans sous-titre, cliquer sur la touche Ignorer cette Image
11 - Si la fenêtre "Nouveau caractère(s)" s'ouvre sur une image avec sous-titres, cliquer sur la touche Enter manually
12 - Saisir le texte dans le carré blanc, copiez le (ctrl C) avant de cliquer sur la touche Done
13 -
--> Si la fenêtre "Nouveau caractère(s)" s'ouvre sur une autre image avec les même sous-titres : clic sur la touche Comme le dernier s . t.
--> Si la fenêtre "Processus interrompu pour l'item du s. t." s'ouvre directement pour une autre image avec les même sous-titres : copier le texte dans le carré blanc (ctrl v), avant de cliquer sur la touche Done.
Continuer ainsi jusqu'à la fin du film (prévoir la journée).
14 - Dans la fenêtre sous-titres, Fichier > Enregistrer sous > Sauvegarder en UniCode au lieu de ANSI? > Yes > Nom du fichier > Enregistrer ( "Nom du fichier avi à sous-titrer".srt )
15 - Ouvrez le fichier sauvegardé dans notepad, vous obtenez quelque chose comme:
1 00:00:15,120 --> 00:00:16,800 Sous-titre n°1 2 00:00:17,120 --> 00:00:19,800 Sous-titre n°1 ... 11 00:00:41,440 --> 00:00:41,800 Sous-titre n°3
Qu'il faudra transformer en quelque chose comme ça:
1 00:00:15,120 --> 00:00:19,800 Sous-titre n°1 3 00:00:33,360 --> 00:00:37,160 Sous-titre n°2 8 00:00:40,240 --> 00:00:41,800 Sous-titre n°3
C'est à dire transformer une même ligne de sous-titre détectée plusieurs fois, en un seul sous-titre.
Avec en temps : le début du premier affichage et la fin du dernier affichage, afin que les sous-titres ne clignotent pas.
Supprimer les lignes de type: [ Skipped item nr. xx ]
Ne pas se soucier "des trous" dans la numérotation, tant que la chronologie est respectée, ça fonctionne.
Par contre, il faut respecter la structure du fichier, la façon dont les temps sont notés, les interlignes.
16 - Si vous voulez vraiment chipoter, vous pouvez aussi mettre des lignes en gras ou en italique, comme ceci:
- En gras:
1
00:00:15,120 --> 00:00:19,800
<b>Sous-titre n°1</b>
- En italique:
3
00:00:33,360 --> 00:00:36,600
<i>Sous-titre n°2</i>
- En gras et italique:
8
00:00:40,240 --> 00:00:41,800
<b><i>Sous-titre n°3</i></b>
INSÉRER DES SOUS-TITRES
fichiers .mkv
Avec mkvtoolnix. Téléchargez-le puis installez-le et lancez MKVMerge GUI
1 - Cliquez sur le bouton add puis selectionnez votre mkv, recliquez sur add pour ajouter votre sous-titre au format .srt
2 - Vous apercevez les pistes audio, vidéo et sous-titres qui composerons votre MKV. Sélectionnez la ligne des sous-titres.
3 - Sélectionnez fre (French) pour la langue des sous-titres.
4 - Mettez Default track flag sur yes. Pour choisir ce sous-titre par défaut
5 - Choisissez votre répertoire de sortie.
6 - L’opération dure quelques minutes
SYNCHRONISER DES SOUS-TITRES VOST
Synchroniser un fr.srt avec un vo.srt
BUT : Utiliser la référence des sous titres en anglais pour synchroniser les sous titres en français.
Les sous-titres en français du film AVA_FILM. Nous avons les sous titres en anglais de AVA_FILM parfaitement synchronisés (fichier AVA_FILM_en.srt). Nous avons trouvé par ailleurs les sous-titres en français (fichier AVA_FILM_fr.srt), mais complètement désynchronisés quand on essaye de regarder AVA_FILM avec.
But du jeu, créer un fichier de sous titres en français aussi bien synchronisés que les sous titres en anglais. Bien sûr sans avoir à lire la moitié des dialogues avant de voir le film, ni à visionner la vidéo avec un chrono... Inconvénient, il faut utiliser les lignes de commandes unix.
Pour ce faire, quatre scripts (à télécharger ici au format zip) :
srt_auto_adjust.bash (*)
srt_cale_debut.bash (*)
srt_conv_temps.bash (**)
srt_move_temps.bash (***)
Seuls les scripts (*) sont à utiliser, (***) est appelé par les précédents et (**) est fourni en bonus.
1) Méthode 1
a) Verifier que les deux fichiers de sous-titres correspondent : c-a-d que le premier dialogue FILM_vo.srt est la traduction du premier dialogue FILM_fr.srt, idem pour le dernier dialogue.
b) exécuter le premier script :
./srt_cale_debut.bash FILM_fr.srt FILM_vo.srt
c) exécuter le deuxième script une première fois pour le ratio :
./srt_auto_adjust.bash FILM_fr.srt FILM_vo.srt
Pour le calcul de ratio, le premier paragraphe et le dernier paragraphe des deux fichiers doivent correspondre.
-.04268388814214428833
d) executer à nouveau le deuxième script pour caler les sous-titres suivant le ratio calculé :
./srt_auto_adjust.bash FILM_fr.srt -.04268388814214428833 > FILM_frOK.srt
Le deuxième argument n'est pas un fichier, donc c'est le ratio temps_fr/temps_ok
Ne pas oublier de rajouter les CRLF dans le fichier final si l'original en contenait avec la commande ( sed 's/$/^M/' ), ^M étant obtenu par Ctrl+V puis Ctrl+M
e) on vérifie la nécessité d'appliquer les CRLF ou non
file FILM_frOK.srt
FILM_frOK.srt: ISO-8859 text, with CRLF line terminators
L'original comportait des CRLF en fin de ligne, on les remets pour être conforme à l'original :
sed 's/$/^M/' FILM_frOK.srt > FILM_frOK_CRLF.srt
C'est fini...
2) Méthode 2 : avec srt_cale_debut.bash et srt_auto_adjust.bash
La désynchronisation de sous-titres est rarement linéaire (décalage en temps du premier sous titre et du dernier sous titre soit le même. Si c'est le cas, le programme srt_move_temps suffit, sinon srt_auto_adjust.bash est nécessaire.
La procédure se fait en deux temps (*) :
a) On demande au script de calculer le ratio temporel, décalage non linéaire entre les deux sources.
srt_auto_adjust.bash fichier_srt_a_recaler fichier_srt_bien_calé
b) On demande au script d'appliquer ce ratio sur les sous titres à recaler
srt_auto_adjust.bash fichier_srt_a_recaler ratio
(*) Cette procédure a un pré-requis : les deux fichiers doivent démarrer au même time mark. C'est rarement le cas, aussi il est souvent nécessaire de décaler le fichier à re-synchroniser (en français dans notre cas) pour qu'il démarre au même time mark que le fichier référence (en anglais dans notre cas).
Ce qui permet de vérifier également que les premiers sous titres des deux fichiers correspondent, c-a-d que le premier dialogue est identique dans les deux cas (en anglais et en français dans notre exemple). En effet, il arrive que la version anglaise (ou version originale) soit pour les sourds et mal entendants, dans ce cas il y a plus de sous-titre pour décrire la musique, l'ambiance... Si c'est le cas, il faut supprimer avec un éditeur les lignes des premiers et des derniers sous titres qui ne sont pas les traductions lues dans l'autre fichier de sous-titres.
exemple : Pour le vérifier via ligne de commande ou via un éditeur de texte quelconque...
$ head -3 AVA_FILM_en.srt
1 00:02:45,123 --> 00:02:48,208"some words" $ head -3 AVA_FILM_fr.srt100:02:36,640 --> 00:02:39,598"quelques mots"
On constate que le premier démarre à 2 mn, 45 s et 123 millisecondes, alors que le deuxième démarre à 2 mn, 36 s et 640 millisecondes...
c) Pour caler le démarrage, on utilisera d'abord le script srt_cale_debut.bash. Ce script peut être utilisé systématiquement puisqu'il vérifie par lui même la nécessité ou non de recaler les deux fichiers de sous-titres entre eux.
exemple :
./srt_cale_debut.bash AVA_FILM_fr.srt AVA_FILM_eng.srt
S'il y a un décalage, le premier fichier sera remplacé par un fichier avec le bon time mark.
Une fois fait, on peut utiliser srt_auto_adjust.bash :
./srt_auto_adjust.bash AVA_FILM_frCALE_CRLF.srt AVA_FILM_en.srt
Pour le calcul de ratio, le premier paragraphe et le dernier paragraphe des deux fichiers doivent correspondre.
-.04268388814214428833
Dans notre exemple, le ratio a appliquer est donc -0,04268388814214428833.
./srt_auto_adjust.bash AVA_FILM_frCALE_CRLF.srt -.04268388814214428833 > AVA_FILM_frOK.srt
Le deuxième argument n'est pas un fichier, donc c'est le ratio temps_fr/temps_ok
Ne pas oublier de rajouter les CRLF dans le fichier final si l'original en contenait avec la commande ( sed 's/$/^M/' ), ^M étant obtenu par Ctrl+V puis Ctrl+M
On fait ce que l'on nous dit de faire :
sed 's/$/^M/' AVA_FILM_frOK.srt > AVA_FILM_frOK_CRLF.srt
Il est maintenant possible à l'aide du fichier obtenu AVA_FILM_frOK_CRLF.srt de regarder le film avec les sous titres français correctement synchronisés.
3) Annexe 1 : srt_conv_temps.bash
Ce script permet de manipuler les valeurs temporelles (time mark) des fichiers sous titres (srt). Il permet de passer d'une marque HH:MM:SS,mmm en millisecondes et inversement.
srt_conv_temps.bash chaine_a_convertir(HH:MM:SS,mmm) ou en_milli
Il nous est utile pour calculer en milliseconde le décalage entre nos deux sources.
exemple :
$ ./srt_conv_temps.bash 00:02:45,123 165123 $ ./srt_conv_temps.bash 00:02:36,640 156640
La différence entre les deux est donc de 165123 - 156640 = 8483 millisecondes
4) Annexe 2 : srt_move_temps.bash
Ce script permet de décaler du même délai temporel l'ensemble des sous titres d'un fichier srt.
La procédure est simple :
exécuter : srt_move_temps.bash fichier_srt_a_recaler temps_en_milli
Où "temps_en_milli" est le décalage en milliseconde à prendre en compte (ce décalage peut être négatif).
exemple :
$ ./srt_move_temps.bash AVA_FILM_fr.srt 8483 > AVA_FILM_frCALE.srt
Ne pas oublier de rajouter les CRLF dans le fichier final si l'original en contenait avec la commande ( sed 's/$/^M/' ), ^M étant obtenu par Ctrl+V puis Ctrl+M
Le script nous rappel de rajouter le code de fin de ligne CR+LF s'il était présent initialement (peut être vérifié avec la commande en ligne "file AVA_FILM_fr.srt").
$ sed 's/$/^M/' AVA_FILM_frCALE.srt > AVA_FILM_frCALE_CRLF.srt
On verifie que l'on a bien le même démarrage :
$ head -2 AVA_FILM_en.srt 1 00:02:45,123 --> 00:02:48,208 $ head -2 AVA_FILM_frCALE_CRLF.srt 1 00:02:45,123 --> 00:02:48,081
On peut maintenant utiliser srt_auto_adjust.bash
astuce trouvée sur janvd.free.fr
SubSync
SubSync divise la vidéo et les sous-titres en petits bouts de 10ms et pour chaque division, détermine s’il y a présence de dialogues (audio). Puis il réaligne les timecodes des sous-titres avec ces moments de dialogues.
brew install ffmpeg pip install git+https://github.com/smacke/subsync
Puis :
subsync video.mp4 -i unsynchronized.srt > synchronized.srt
ou
subsync video.mp4 -i unsynchronized.srt -o synchronized.srt
TELECHARGER DES SOUS-TITRES
youtube-dl
Avant de télécharger la vidéo, dans un terminal, saisir la commande:
youtube-dl --list-subs url_de_la_vidéo
Une liste des langues disponibles est affichée :
[youtube] 'référence de la vidéo': Available subtitles for video: en
Télécharger la vidéo avec les sous-titres (exemple avec l'anglais) avec cette commande:
youtube-dl --write-sub --sub-lang 'en' url_de_la_vidéo
CREER DES SOUS-TITRES AVEC AEGISUB
https://framalibre.org/content/aegisub