DVD vers AVI : Mencoder

17 Sep. 2006
Auteur : Hyacinthe MENIET
Responsable : TrustRobot
Score ( voter ) :
Connexes : Même auteur | Même responsable | Historique
Certains d'entre vous l'ignorent peut-être, mais le génialissime lecteur vidéo mplayer est livré avec un non moins excellent riper/encoder de DVD en avi : Mencoder. Il s'agit d'un outil, en ligne de commande, puissant et pratique. Notez enfin, que Mencoder n'a pas besoin que vous ripiez, votre DVD sur le disque dur, tout se fait à la volée. Réservez juste l'espace pour contenir votre/vos cd-rom(s) (2 Go pour être large).

1. Pré-requis :

2. Rip de DVD et encodage en avi :

Mencoder utilise libavcodec, un codec compatible MPEG-4, au même titre que Divx 5 ou Xvid, il est généralement plus performant pour une meilleure qualité d'image que les 2 derniers, quand votre player le supporte. Sous Linux, aucun soucis, la plus part des lecteurs multimédia, savent lire les fichiers ainsi encodé, mais sous Windows rien n'est garantit.

2.1 Identifier le(s) vob(s) intéressant(s) :

Petit rappel, un DVD est généralement au format UDF sur une piste unique, il contient 3 type de fichiers, les .IFO, les .BUK et les .VOB. Les .IFO contiennent les infos de navigations (chapitres, langues ...), chaque .VOB contient un bout ou l'intégralité du film. Enfin les .BUK, sont des sauvegardes de ces fichiers. Avant de lancer l'encodage, il vous faut déterminer quel vobs encoder. Pour cela, lancer, par exemple :
mplayer dvd://1 -dvd-device /dev/hdc
en supposant que votre lecteur soit, sur /dev/hdc, bien-sûr. Mplayer va donc essayer de lire le titre 1 (qui peut être fomé de plusieurs vob). Si ce n'est pas lui qui contient votre film, passez au 2, puis 3 etc. Chez moi, c'était le 5, j'obtiens entre autres, ceci :
Joue DVD title 5 Lecture de la structure du disque, veuillez patienter... Il y a 14 titres sur ce DVD. Il y a 17 chapitres sur ce titre DVD. Il y a 1 séquences sur ce titre DVD.
C'est le bon. Quand vous êtes, satisfait fermez mplayer. Pour la suite, nous avons besoin de quelques informations supplémentaires, localisez la ligne suivante :
L'aspect du film est 1,77:1 - pré-redimensionnement à l'aspect correct.
Ce qui signifie que mon film, est en 16/9, pour le 4/3 ça aurait été 1,33.

2.2 Rip et encodage :

Nous allons employer la méthode, 3-passes, cette méthode permet l'estimation du bitrate vidéo recommandé de façon à tenir sur un CD. De plus, l'audio n'est encodé qu'une fois, au contraire du mode 2-passes, que nous ne verrons pas.

2.2.1 Audio sans sous-titre :

Le fichier généré doit s'appeler frameno.avi, s'il en existe un dans le répertoire courant, supprimez-le auparavant, par :
rm frameno.avi
Puis lancez le rip : $ mencoder dvd://5 -ovc frameno -o frameno.avi -oac mp3lame -lameopts abr:br=128 -alang fr selon la puissance de votre processeur, votre machine devrait mouliner un petit moment. Quand il a finit, mencoder vous affiche-les infos suivantes :
Bitrate vidéo recommandé pour 650MB CD: 690 Bitrate vidéo recommandé pour 700MB CD: 753 Bitrate vidéo recommandé pour 800MB CD: 878 Bitrate vidéo recommandé pour 2 x 650MB CD: 1506 Bitrate vidéo recommandé pour 2 x 700MB CD: 1632 Bitrate vidéo recommandé pour 2 x 800MB CD: 1883 Flux vidéo: 0,800 kbit/s (100 bps) taille: 667616 octets 6676,160 secs 166908 trames Flux audio: 112,936 kbit/s (14116 bps) taille: 94254360 octets 6676,680 secs
qui sont assez explicites, notament le bitrate (753 pour une compression sur un CD de 700 Mo). Ces infos seront utilisées dans la suite. Mencoder génère un fichier frameno.avi.

2.2.2 Audio avec sous-titre :

Si vous avez des fichiers soustitres.idx soustitres.sub dans le répertoire courant, supprimez-les par :
rm soustitres.idx soustitres.sub
Mencoder peut extraire des sous titres, d'un film, dans un fichier au format vobsub, il s'agit, en fait, d'une paire de fichier .idx et .sub. On spécifie le nom des fichiers avec l'argument -vobsubout et l'index des sous-titres dans le fichier final avec -vobsuboutindex. Si l'entrée n'est pas un DVD vous pouvez utiliser -ifo pour indiquer le fichier .ifo requis pour construire le fichier .idx final. Si l'entrée n'est pas un DVD et que vous n'avez pas de fichier .ifo vous aurez besoin d'utiliser l'option -vobsubid pour lui permettre de savoir quel id langue placer dans le fichier .idx. Concrètement pour un DVD 3-passes. Commencez par identifier l'index des sous titre, pour cela tapez :
mplayer -dvd-device /dev/hdc dvd://5 -vo null -frames 0 -v 2>&1 | grep sid
fermez mplayer, si votre film a des sous-titres il devrait afficher :
[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
Pour récupérer, la bande sonore anglaise et les sous-titres en français : $ mencoder dvd://5 -vobsubout soustitres -vobsuboutindex 0 -sid 4 -o frameno.avi -ovc frameno -oac mp3lame -lameopts abr:br=128 -alang en selon la puissance de votre processeur, votre machine devrait mouliner un petit moment. Quand il a finit, mencoder vous affiche-les infos suivantes :
Bitrate vidéo recommandé pour 650MB CD: 690 Bitrate vidéo recommandé pour 700MB CD: 753 Bitrate vidéo recommandé pour 800MB CD: 878 Bitrate vidéo recommandé pour 2 x 650MB CD: 1506 Bitrate vidéo recommandé pour 2 x 700MB CD: 1632 Bitrate vidéo recommandé pour 2 x 800MB CD: 1883 Flux vidéo: 0,800 kbit/s (100 bps) taille: 667616 octets 6676,160 secs 166908 trames Flux audio: 112,936 kbit/s (14116 bps) taille: 94254360 octets 6676,680 secs
qui sont assez explicites, notament le bitrate (753 pour une compression sur un CD de 700 Mo). Ces infos seront utilisées dans la suite. Finissez par : $ mencoder dvd://5 -oac copy -ovc divx4 -divx4opts pass=1 $ mencoder dvd://5 -oac copy -ovc divx4 -divx4opts pass=2 -vobsubout sous-titres -vobsuboutindex 1 -sid 4 Cela va générer 3 fichiers frameno.avi, sous-titres.idx et sous-titres.sub. Si vous aviez un fichier mpeg ça tient en une ligne : $ mencoder film.mpg -ifo film.ifo -vobsubout soustitres -vobsuboutindex 0 -vobsuboutid fr -sid 1 Cela va générer également 3 fichiers frameno.avi, soustitres.idx et soustitres.sub.

2.2.3 Première passe vidéo :

Mon film étant en 16/9 et souhaitant le compresser sur 2 CD de 700 Mo, je tape la ligne suivante : $ mencoder dvd://5 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1632:vhq:vqmin=2:vlelim= -4:vcelim=9:lumi_mask=0.05:dark_mask=0.01:vpass=1 -vop scale=640:480,crop=716:572:2:2 -oac copy -o /dev/null Si j'avais choisi, un autre taux de compression, il aurait fallu adapter la valeur de vbitrate, et si mon film avait été en 4/3, j'aurais mis scale=600:450. C'est le moment de sortir votre cafetière.

2.2.4 La seconde passe vidéo :

La seconde passe est en tout point identique, à ceci près que vpass=2 et -o film.avi à la place de -o /dev/null, donc recopiez la ligne que vous avez précédemment tapée et modifiez ces 2 paramètres, concrètement chez moi j'ai mis : $ mencoder dvd://5 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1632:vhq:vqmin=2:vlelim= -4:vcelim=9:lumi_mask=0.05:dark_mask=0.01:vpass=2 -vop scale=640:480,crop=716:572:2:2 -oac copy -o film.avi Après quelques tasses de café, j'obtiens un fichier film.avi (j'aurais pu l'appeler moi.avi, évitez simplement les accents et les espaces). Ce fichier pèse : 896 Mo pour 1H45, l'image est nette et la synchronisation image/son, parfaite. Le fichier à graver est film.avi. Si vous avez des sous titres, vous devrez également graver : sous-titres.idx et sous-titres.sub. Pour lire votre fichier avec les sous-titres se sera :
mplayer -vobsub sous-titres film.avi

3. Utilisation avancée de mencoder :

3.1 Réparer l'index d'un avi :

Il suffit de copier le flux vidéo et audio et de régénérer un index, mencoder sait le faire très facilement :
mencoder -idx bad.avi -ovc copy -oac copy -o good.avi

3.2 Assembler plusieurs avi :

Cela ne marche qu'avec des avi, utilisant les mêmes codecs, résolution, débit et qu'au moins l'un deux ne soit pas endommagé, n'hésitez pas à réparer les défectueux avant :
cat 1.avi 2.avi 3.avi | mencoder -noidx -ovc copy -oac copy -o film.avi -

3.3 Couper un avi en 2 :

Je vais couper mon film de 1H45, en 2 en générant 2 fichiers de respectivement 1H et 45 mn. Pour cela, j'utilise à nouveau mencoder : $ mencoder -endpos 1:00:00 film.avi -o first_half.avi -oac copy -ovc copy mencoder -ss 1:00:00 film.avi -o second_half.avi -oac copy -ovc copy le fichier film.avi n'est pas effacé. J'obtiens 2 fichiers : first_half.avi (474 Mo) et second_half.avi (421 Mo)

3.4 Encoder en xvid ou en divx :

Mencoder, peux également encoder en xvid et même en divx. Même si ces deux formats sont moins performants que libavcodec (divx étant le moins performant), ils vous permettront, d'échanger vos réalisations avec des utilisateurs de Windows. Supposons que vous ayez un fichier monFilm.mpg et que vous souhaitiez en faire, un monFilm_divx.avi (encodage en divx), tapez ceci : mencoder -oac mp3lame -ovc divx4 -xvidencopts bitrate=200 -vop scale=352:288 monFilm.mpg -o monFilm_divx.avi Si vous souhaitez en faire un monFilm_xvid.avi (encodage en xvid), tapez ceci : mencoder -oac mp3lame -ovc xvid -xvidencopts bitrate=200 -vop scale=352:288 monFilm.mpg -o monFilm_xvid.avi Précisons que le fichier original peut être dans n'importe quel format, supporté par Mplayer (libavcodec, mpeg-1, mpeg-2 ...). Notez enfin, qu'un bitrate plus élevé donne de meilleures images, mais un fichier plus gros et qu'une fenêtre plus grande procure un meilleur confort visuel, mais un fichier plus gros également.

4. Conclusion :

Ce document n'a pas la prétention d'être exhaustif, la documentation officielle du site de mplayer le complète admirablement. Pour être complet, suivez le lien qui suit pour savoir comment graver votre cd sous Linux