Carpo

Le Forum des carpocapsiens
Nous sommes actuellement le 24 Janvier 2022, 04:35

Le fuseau horaire est UTC




Forum verrouillé Ce sujet est verrouillé, vous ne pouvez rien publier ou éditer.  [ 1 message ] 
Auteur Message
Message Publié : 10 Mai 2003, 23:54 
Hors-ligne
Modérateur
Avatar de l’utilisateur

Inscription : 11 Février 2003, 13:40
Message(s) : 875
Localisation : Epinay-sur-Seine
EXTRACTION ET LECTURE DES SOUS TITRES
AVEC MENCODER ET MPLAYER


Préambule :

FFmpegX permet maintenant d'extraire les sous-titres dans un fichier au format VOBsub. Quand vous demandez à FFmpegX de créer un fichier pour les sous-titres via le menu file, une fois le traitement terminé, vous vous apercevez en fait qu'il n'y a pas un mais deux fichiers. Le premier porte l'extension .idx et le second .sub .

Mais saviez-vous que ce format de fichier peut contenir plusieurs langues pour les sous-titres.

Imaginez seulement un instant, vous avez la possibilité d'avoir dans le même fichier les sous-titres en anglais et en allemand par exemple. A la lecture, il n'y a plus qu'à choisir la version désirée.

Hélas, vous avez tous remarqué que Mplayer OS X ne nous donnait pas la possibilité d'ouvrir ce fichier. La version 2 béta 4 ne corrige toujours pas cette lacune.

Je vais donc vous donner la solution. Tout ce passe directement en formatant la ligne de commande dans un éditeur de texte par exemple, puis par copier/coller dans le Terminal.

1) Extraction des sous-titres : méthode simple

C'est la méthode utilisé par FFmpegX. Vous sélectionnez la langue des sous-titres, file dans le petit menu déroulant et vous cliquez sur Extract. Vous obtenez deux fichiers contenant l'un les timecodes (.idx) et l'autre les images des sous-titres (.sub). C'est la méthode simple. Si vous ne changez pas le nom dans le champ save as et que vous sélectionner une autre langue, vous écraserez systématiquement vos précédents fichiers si vous relancez un traitement.

Mais pour mieux comprendre la suite, je vais vous expliquer comment FFmpegX fonctionne. Quand vous cliquez sur Extract, la ligne de commande n'est composée que d'une seule option. Cette option est -vobsubout.

La page de MAN nous indique : -vobsubout <nomdebase>. Spécifie le nomdebase pour les fichiers .idx et .sub de destination. Cela désactive le rendu des sous-titres dans le film encodé et le redirige vers les fichiers de sous-titre VOBsub.

Donc pour extraire uniquement les sous-titres d'un DVD, il suffit d'envoyer au Terminal cette ligne de commande :[list]/usr/bin/mencoder -dvd 1 -dvd-device /Users/thiery/Desktop/Film/ -ovc frameno -nosound -o /dev/null -sid 2 -vobsubout /Users/thiery/Desktop/testst -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO[/list]Petite explication :
Comme d'habitude je pars d'un DVD rippé avec DVD Backup. Le rip se trouve donc dans le dossier Film qui se trouve sur le Bureau.
    -dvd <id titre> : Indication du titre à encoder.
    -dvd-device : C'est un DVD que l'on encode ou à partir d'un rip identique à la structure du DVD.
    /Users/thiery/Desktop/Film/ : Localisation du rip du DVD. Si vous encodez directement à parti du DVD, il faut remplacer la localisation par /dev/rdiskx ou x prend la valeur donnée par la commande mount dans le Terminal.
    -ovc frameno : la source vidéo n'est pas encodée.
    -nosound : la source audio n'est pas encodée.
    -o /dev/null : aucun fichier .avi n'est créé en sortie.
    -sid <id> : spécifie la langue pour les sous-titres. -sid commence à 0. Voir le tutoriel de Donald pour l'explication
    -vobsubout : décrit ci-dessus.
    -ifo <chemin> : localisation du fichier .ifo. Indique le fichier à utiliser pour charger la palette et la taille des trames des sous-titres VOBSUB.
Si vous lancez cette ligne de commande depuis le Terminal, mencoder crée un fichier testst.idx et un fichier testst.sub sur votre bureau. Le traitement est plus ou moins long. Tout dépend de votre configuration et de la durée du film. De toute façon, vous voyez l'avancement en temps réel.

2) Extraction des sous-titres : méthode avancée

Nous avons vu la méthode simple. Celle-ci est largement suffisante la plupart du temps. Mais il existe une option qui permet d'insérer plusieurs langues de sous-titres dans le même fichier de sortie. Cette option est : -vobsuboutindex . Explication : spécifie l'index des sous-titres dans les fichiers de sortie. (par défaut : 0).

La théorie par la pratique. Reprennons notre ligne de commande et ajoutons cette option. La ligne de commande devient :[list]/usr/bin/mencoder -dvd 1 -dvd-device /Users/thiery/Desktop/Film/ -ovc frameno -nosound -o /dev/null -sid 2 -vobsubout testst /Users/thiery/Desktop/ -vobsuboutindex 0 -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO[/list]Et voilà, vous venez d'extraire vos sous-titres dans la première couche. Celle-ci est à l'index 0.

Admettons maintenant, comme je le disais au début, qu'en plus des sous-titres anglais vous vouliez les sous-titres allemand. La manipulation est toute simple. D'abord, il faut localiser son numéro d'ordre, et l'extraire toujours dans le même fichier. Par contre vous devez lui donner un autre index. Puisque précédemment l'index était 0 , maintenant il faut mettre 1.

Ce qui donne :
    /usr/bin/mencoder -dvd 1 -dvd-device /Users/thiery/Desktop/Film/ -ovc frameno -nosound -o /dev/null -sid 3 -vobsubout /Users/thiery/Desktop/testst -vobsuboutindex 1 -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO
C'est pas sorcier, et vous pouvez extraire autant de langue que vous voulez. A chaque fois, il faut préciser la langue désirée avec -sid, et changer l'index pour -vobsouboutindex.

Admettons, que dès le début vous savez ce que vous voulez faire, et que vous voulez les sous-titres en anglais et en allemand. Pas de problème. Combiner directement les deux lignes en les séparant par un point-virgule ";".
Ce qui donne :[list]/usr/bin/mencoder -dvd 1 -dvd-device /Users/thiery/Desktop/Film/ -ovc frameno -nosound -o /dev/null -sid 2 -vobsubout /Users/thiery/Desktop/testst -vobsuboutindex 0 -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO;/usr/bin/mencoder -dvd 1 -dvd-device /Users/thiery/Desktop/Film/ -ovc frameno -nosound -o /dev/null -sid 3 -vobsubout /Users/thiery/Desktop/testst -vobsuboutindex 1 -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO[/list]Mais attention, le fichier .sub va augmenter de taille en fonction du nombre de langues. Donc, il faut faire très attention à cette information avant d'encoder votre film pour le mettre sur un CD. La place que vont prendre les deux fichiers, est autant de place de perdu pour le film lui-même. Et par conséquence, il faudra diminuer le bitrate vidéo, pour que les film et les sous-titres rentrent sur un CD.

3) Extraction des sous-titres pour plusieurs CD

Maintenant je suis sûr que vous vous demandez : mais comment faire pour spliter mes sous-titres puisque je veux faire deux CD?
Là la seule solution qui me vient à l'esprit et qui est réalisable est : l'encodage avec une coupure à un chapitre donné.

Admettons que votre DVD comporte 14 chapitres. Sensiblement la moitié en temps se situe à la fin du septième chapitre. La manipulation est simple. Il faut ajouter dans la ligne l'information concernant les chapitres à prendre en compte. La ligne de commande devient donc :[list]/usr/bin/mencoder -dvd 1 -dvd-device /Users/thiery/Desktop/Film/ -chapter 1-7 -ovc frameno -nosound -o /dev/null -sid 2 -vobsubout /Users/thiery/Desktop/testst1 -vobsuboutindex 0 -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO[/list]Pour le second CD, vous devez juste changer le nom du fichier de sortie. Pour le premier CD, c'est testst1 , le second peut être testst2 . Un deuxième fichier de sous-titres va être créé. Par contre pour celui-ci, les sous-titres commencent à partir du chapitre 8. La ligne de commande pour le deuxième fichier devient donc :[list]/usr/bin/mencoder -dvd 1 -dvd-device /Users/thiery/Desktop/Film/ -chapter 1-7 -ovc frameno -nosound -o /dev/null -sid 2 -vobsubout /Users/thiery/Desktop/testst2 -vobsuboutindex 0 -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO[/list]Et pareil, rien ne vous empêche de rajouter autant de sous-titres que vous le désirez. Il suffit de reprendre les deux étapes en changeant juste l'index.

4) Détermination du bitrate vidéo

Maintenant, voyons comment faire pour déterminer le bitrate vidéo pour un seul CD de 700Mo. L'essai que j'ai fait montre que mon fichier .sub fait 7,5Mo et le .idx fait 92Ko. N'oubliez pas aussi d'inclure le fichier .ifo pour conserver la palette de couleur. Je désire graver mon DivX sur un seul CD. Rien de plus simple. Il suffit d'enlever 8Mo à la valeur de 700, et calculer le bitrate pour 692Mo. Vous ouvrez FFmpegX. Vous sélectionner 1 CD de 80mn en mode-1. Vous rentrez manuellement la durée de votre film et la place restante sur votre CD soit 792Mo. Reste plus qu'à cliquer sur Calc rate, et le tour est joué.

Pour deux CD, et bien il faut faire comme au-dessus. Evidemment l'encodage doit être fait pour les mêmes chapitres. Pas question d'encoder le film en un seul morceau et spliter l'avi final en deux à la fin. Par contre sur chaque CD, il faut copier le fichier .ifo .

5) Lecture avec Mplayer

Maintenant que nous avons vu comment extraire les sous-titres, il ne reste plus qu'à regarder notre film en plein écran et avec les sous-titres que l'on désire.

Oui mais voilà, Mplayer OS X 2 est incapable d'ouvrir ce fichu de fichier .sub . Normal, il faut ouvrir le .idx . Tient d'ailleurs, que contient-il ce fichier. Il contient tout simplement le timecode et les références aux images du fichier .sub .

Exemple :
    # VobSub index file, v7 (do not modify this line!)
    #
    # Generated by MPlayer CVS-030128-17:21-3.1
    # See <URL:http://www.mplayerhq.hu/> for more information about MPlayer
    # See <URL:http://vobsub.edensrising.com/> for more information about Vobsub
    #
    size: 720x576
    palette: 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, b15528, b7d41f, 7b2a0e, 0aaae6, 2911b5, b15528, cfa80c, daff0a

    # Language index in use
    langidx: 0

    id: de, index: 0
    timestamp: 00:02:02:239, filepos: 000000000
    timestamp: 00:02:04:519, filepos: 000000800
    timestamp: 00:02:07:079, filepos: 000001800
    timestamp: 00:02:34:800, filepos: 000002800
    timestamp: 00:02:36:680, filepos: 000003000
Donc comment faire pour lire un DivX avec des sous tritres en format VOBsub?

Encore une fois, il faut utiliser la ligne de commande, et la plus simple est :
    /usr/bin/mplayer /Users/thiery/Film/film.avi
Cette ligne permet de lancer le film film.avi et ouvre juste la fenêtre de viewer mplayer. Maintenant il faut lui dire de lire les sous-titres. Le view qui est disponible avec FFmpegX envoie cette ligne de commande :
    /usr/bin/mplayer -vobsub /Users/thiery/film/film /Users/thiery/Film/film.avi
Si vous avez stipuler la localisation du fichier .ifo, ce dernier est précisé aussi. Ce qui donne :
    /usr/bin/mplayer -vobsub /Users/thiery/Film/film -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO /Users/thiery/Film/film.avi
Je rappel, ceci est la ligne de commande de FFmpegX. Donc si vous avez créé un fichier de sous-titre à partir de FFmpegX, seul cette ligne de commande suffit. Maintenant, si vous avez extrait plusieurs versions de sous-titres grâce à la technique décrite ci-dessus, seule celle qui est en index 0 sera prise en compte. Pour pouvoir lire la version que l'on désire, il faut rajouter une commande à cette ligne.

En effet, nous avons placés différents index. Il faut donc déterminer quel index nous voulons. La commande associée est : -vobsubid <valeur> .

Donc pour lire l'index 0, la ligne citée plus haute fonctionne, mais on peut tout de même mettre cette commande. Ce qui donne :
    /usr/bin/mplayer -vobsub /Users/thiery/Film/film -vobsubid 0 -ifo /Users/thiery/Desktop/Film/VTS_01_0.IFO /Users/thiery/Film/film.avi
Si vous voulez la deuxième langue, il suffit de mettre 1 à la place de 0 après -vobsubid .

C'est aussi simple que cela.

Des questions, des remarques, n'hésitez pas. Je me ferai un plaisir de vous répondre.

Thiery

_________________
G5 2x2,5GHz - 1Go - 250Go - SuperDrive - 30"
PowerBook 1GHz - 256Mo - 60Go - Combo -
iPod G2 20Go - Canon PIXMA IP3000 / CanonScan 8400F / EOS 300D - DD LACIE 200Go - iSight
Modérateur du Carpo's Forum


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Forum verrouillé Ce sujet est verrouillé, vous ne pouvez rien publier ou éditer.  [ 1 message ] 

Le fuseau horaire est UTC


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de :
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.