Retrouvez cet article dans : Linux Pratique 40

La boîte à outils
Notre approche concorde avec la " tools philosophy " ou " philosophie des outils " du monde Linux. Dans un premier temps, nous définissons la série de tâches à accomplir pour notre travail. Ensuite, nous cherchons l'outil le plus approprié pour chaque tâche. Pour finir, il ne nous reste qu'à combiner les outils en question pour obtenir le résultat voulu. Concrètement, nous souhaitons :- afficher le contenu (la table des matières, l'index) du DVD ;
- copier l'ensemble du DVD sur le disque dur ;
- visionner les pistes du DVDÂ ;
- encoder les pistes audio et vidéo sélectionnées ;
- éventuellement, couper le fichier encodé résultant en deux, afin qu'il tienne sur deux CD.
lsdvd ;vobcopy ;Mplayer ;mencoder ;avisplit(contenu dans la suitetranscode).
$ sudo apt-get install lsdvd vobcopy mplayer-686 mencoder-686 transcodePremière remarque : dans l'exemple donné, il vous faudra opter pour la version de MPlayer et de Mencoder qui correspond à votre processeur. Deuxième remarque : activez les archives PLF (ou similaires) pour Dapper, sinon vous aurez du mal !
L'embarras du choix
À présent que votre boîte à outils contient tout ce qu'il vous faut, vous pouvez vous mettre au travail. Commencez par afficher le contenu du DVD, c'est-à -dire sa table des matières. Insérez le DVD dans le lecteur et tapez ceci :$ lsdvdSelon le nombre de titres du DVD,
libdvdread: Using libdvdcss version 1.2.9 for DVD access Disc Title: HIGH_FIDELITY Title: 01, Length: 01:49:02.250 Chapters: 30, Cells: 32, Audio streams: 03, Subpictures: 07 Title: 02, Length: 00:00:00.090 Chapters: 02, Cells: 01, Audio streams: 03, Subpictures: 07 (...) Title: 27, Length: 00:00:00.090 Chapters: 08, Cells: 01, Audio streams: 03, Subpictures: 07 Longest track: 01Notez que la dernière indication nous affiche le titre le plus long. Ce n'est pas forcément le plat de résistance, mais il y a de grandes chances. Dans le cas présent, vérifions si la piste 01 correspond bien au film et non à l'interview " bonus " du réalisateur, voire la version commentée en voix off :
$ mplayer dvd://1Vous aurez remarqué que votre vidéo s'ouvre dans une fenêtre par-dessus le terminal de commandes, totalement dépourvue de boutons d'action. Pour vous éviter de vous perdre dans les informations données par

Le stade du miroir
Il est tout à fait possible d'encoder votre DVD directement à partir du lecteur. En revanche, sachez que l'opération dure un certain temps : comptez une bonne matinée sur une machine raisonnablement récente ; environ 4h sur un PIV 2.4 GHz avec 512 Mo de RAM. Il est donc préférable, dans un premier temps, de transférer le contenu intégral du DVD sur votre disque dur, afin de ne pas trop solliciter le lecteur DVD. Remarque : à partir d'ici, il faut prendre en compte la dimension légale de notre entreprise...Créez un répertoire de travail dans votre répertoire utilisateur. Peu importe le nom que vous lui donnez (ici, je l'appellerai $ vobcopy -mCette commande effectue une copie conforme du contenu de votre DVD dans le répertoire courant. L'option
$ vobcopy -i /dev/hdc -m
ou encore :
$ vobcopy -i /media/cdrom0 -mL'opération prend plusieurs minutes. Au final,
$ du -sh HIGH_FIDELITY 7,9G   HIGH_FIDELITY/Rien ne vous empêche de laisser le répertoire en l'état. Vous pouvez ainsi vous contenter de votre copie conforme non encodée. Retirez le DVD et invoquez la commande suivante pour le visionner à partir du disque dur :
$ mplayer -dvd-device HIGH_FIDELITY dvd://1L'option
Le choix des langues
La prochaine étape consiste à choisir les langues : celle de la piste audio et celle des sous-titres. Chaque DVD propose un certain nombre de langues au choix, il nous faut donc commencer par vérifier ce qui est effectivement disponible. MPlayer est capable de nous renseigner sur tout cela, à condition de le lancer en mode " verbeux ". Pour cibler notre recherche, nous allons d'abord demander à MPlayer d'afficher uniquement les pistes audio disponibles moyennant l'astuce suivante :$ mplayer -dvd-device HIGH_FIDELITY/ dvd://1 -vo null -frames 0 2>&1 -v | grep aid [open] audio stream: 0 audio format: ac3 (5.1) language: en aid: 128 [open] audio stream: 1 audio format: ac3 (5.1) language: es aid: 129 [open] audio stream: 2 audio format: ac3 (5.1) language: fr aid: 130Ceci signifie que nous avons le choix entre trois langues : l'anglais, l'espagnol et le français. Chaque langue est suivie de son " AID " (Audio IDentifier) respectif, en l'occurrence 128 pour l'anglais, 129 pour l'espagnol et 130 pour le français. Pour les sous-titres, nous allons procéder de manière analogue, à la différence près que nous recherchons le SID ou " Subtitle IDentifier " :
 $ mplayer -dvd-device HIGH_FIDELITY/ dvd://1 -vo null -frames 0 2>&1 -v | grep sid [open] subtitle ( sid ): 0 language: en [open] subtitle ( sid ): 1 language: es [open] subtitle ( sid ): 2 language: fr [open] subtitle ( sid ): 3 language: pt [open] subtitle ( sid ): 4 language: nl [open] subtitle ( sid ): 5 language: pl [open] subtitle ( sid ): 6 language: bgNous remarquons ici qu'outre les trois langues de l'audio, nous disposons d'un choix de langues supplémentaires pour les sous-titres. Chaque langue est ici précédée de son SID respectif, le choix allant de 0 à 6. La première chose à faire est de tester ces valeurs. Admettons que je souhaite voir le film en version originale anglaise avec des sous-titres en français, je dois lancer MPlayer avec les options suivantes :
$ mplayer -dvd-device HIGH_FIDELITY dvd://1 -aid 128 -sid 2Vous avez saisi le principe. Si, pour des raisons qui vous appartiennent, vous préférez voir le film en espagnol sous-titré bulgare, il vous suffira de faire ceci :
$ mplayer -dvd-device HIGH_FIDELITY dvd://1 -aid 129 -sid 6Remarque : je vous conseille de ne pas oublier cette étape. En effet, les codes AID et SID des films ne correspondent pas toujours à ce qu'il y a effectivement sur la piste !
Un peu de découpe
La prochaine étape nécessitera de sortir les ciseaux. En effet, la majeure partie des films sur DVD est dotée d'une bordure noire plus ou moins importante. Cette bordure ne nous gêne peut-être pas pour visionner le film, mais il faut savoir que chacun des pixels noirs de cette bordure sera encodé. Nous prendrons donc soin de nous en débarrasser pour gagner de la place. Avant de découper, il faut savoir où placer les ciseaux. Lancez MPlayer avec l'option de détection de bordures :$ mplayer -dvd-device HIGH_FIDELITY dvd://1 -vf cropdetectLe film se lance au ralenti avec une pléthore d'informations qui s'affichent en arrière-plan dans votre terminal. Avancez un peu dans le film, jusqu'à ce que les informations affichées se stabilisent, c'est-à -dire soient identiques entre elles, comme ceci :
crop area: X: 9..709Â Y: 11..554Â (-vf crop=688:528:16:20)2.3% 106 0 crop area: X: 9..709Â Y: 11..554Â (-vf crop=688:528:16:20)2.3% 107 0 crop area: X: 9..709Â Y: 11..554Â (-vf crop=688:528:16:20)2.3% 108 0L'option
-vf crop=688:528:16:20.Testons cette option :
$ mplayer -dvd-device HIGH_FIDELITY dvd://1 -aid 128 -sid 2 -vf crop=688:528:16:20En effet, les bordures noires ont disparu, et ça fait tout de suite plus propre.
Jamais deux sans trois
Il ne nous reste qu'à nous occuper de l'encodage proprement dit, que nous effectuerons en trois passes : une pour l'audio, deux pour la vidéo. Nous pourrions certes procéder plus rapidement, mais puisque nous disposons de temps et de cycles CPU à souhait, autant en profiter et viser la meilleure qualité d'encodage possible. Commençons par encoder l'audio :$ mencoder -dvd-device HIGH_FIDELITY/ dvd://1 -aid 128 -sid 2 -oac mp3lame -lameopts mode=2:cbr:br=128:vol=0 -ovc frameno -o frameno.aviL'option
Pos:  0.9s    22f ( 0%) 0.00fps Trem:  0min  0mb A-V:0.084 [0:127] Skipping frame! Pos:  1.2s    32f ( 0%) 0.00fps Trem:  0min  0mb A-V:0.083 [0:128] Skipping frame! Pos:  2.0s    51f ( 0%) 0.00fps Trem:  0min  0mb A-V:0.081 [0:128] Skipping frame! Pos:4253.5s 106340f (65%) 189.32fps Trem:  4min 103mb A-V:0.045 [0:128]]La dernière ligne nous informe de la progression totale de l'opération, traduite en secondes. Sachant qu'1h compte 3600s., nous jetons un coup d’œil à la pochette de notre DVD et nous calculons que 109 minutes, c'est un peu moins de 7000s (6542 très exactement). Et voici ce que cela donne :
Writing index... Writing header... ODML: Aspect information not (yet?) available or unspecified, not writing vprp header. Recommended video bitrate for 650MB CD: 691 Recommended video bitrate for 700MB CD: 755 Recommended video bitrate for 800MB CD: 884 Recommended video bitrate for 2 x 650MB CD: 1525 Recommended video bitrate for 2 x 700MB CD: 1653 Recommended video bitrate for 2 x 800MB CD: 1910 Video stream: 0.800 kbit/s (100 B/s) size: 654208 bytes 6542.080 secs 163555 frames Audio stream: 128.000 kbit/s (16000 B/s) size: 104673408 bytes 6542.088 secsLes lignes "Â
$ mencoder -dvd-device HIGH_FIDELITY/ dvd://1 -aid 128 -sid 2 -vf crop=688:528:16:20 -oac copy -o /dev/null -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1400:vhq:autoaspect:vpass=1Certaines options vous sont déjà familières. L'option
$ mencoder -dvd-device HIGH_FIDELITY/ dvd://1 -aid 128 -sid 2 -vf crop=688:528:16:20 -oac copy -o High_Fidelity.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1400:vhq:autoaspect:vpass=2Vous aurez peut-être remarqué que la commande invoquée pour cette deuxième passe est identique à la première, à deux détails près. D'une part,
Couper la poire en deux
Nous avons enfin obtenu un fichier$ mplayer High_Fidelity.aviSi nous souhaitons graver le résultat sur CD, nous ne sommes pas encore tout à fait au bout de nos peines !
$ ls -lh High_Fidelity.avi -rw-r--r-- 1 kikinovak kikinovak 1,4G 2006-10-01 13:06 High_Fidelity.aviPour couper ce fichier en deux, utilisons
$ avisplit -i High_Fidelity.avi -o High_Fidelity -s 699 [avilib] V: 25.000 fps, codec=FMP4, frames=163552, width=688, height=528 [avilib] A: 48000 Hz, format=0x2000, bits=16, channels=2, bitrate=384 kbps, [avilib] 13085 chunks, 314021376 bytes, CBR [High_Fidelity-0000.avi] (000000-080912), size 698.2 MB. (V/A) (3236520/3237000)ms [High_Fidelity-0001.avi] (080914-163551), size 697.2 MB. vid=6542080.00 ms aud=6542112.00 msVous l'aurez deviné : l'option
$ ls -lh High_Fidelity* -rw-r--r-- 1 kikinovak kikinovak 699M 2006-10-01 13:39 High_Fidelity-0000.avi -rw-r--r-- 1 kikinovak kikinovak 698M 2006-10-01 13:40 High_Fidelity-0001.avi -rw-r--r-- 1 kikinovak kikinovak 1,4G 2006-10-01 13:06 High_Fidelity.aviIl ne reste plus qu'Ã graver les deux fichiers
Et maintenant ?
La méthode d'encodage présentée dans cet article est une méthode possible parmi une ribambelle d'autres. Certains la trouveront inutilement compliquée, d'autres reculeront avec horreur devant les simplifications que je me suis permises. Considérez-la comme une tentative de trouver un juste milieu, une entrée en matière utilisable au quotidien. À ceux qui souhaitent approfondir la question, je conseille de lire :- la page de manuel la plus longue de la planète (à ce que je sache) :
man mplayer ; - le manuel de Mencoder (pas mal non plus) :
man mencoder ; - la documentation tout aussi détaillée sur le site : http://www.mplayerhq.hu/DOCS/HTML/en/index.html (la documentation en version anglaise est la plus actuelle).
Retrouvez cet article dans : Linux Pratique 40





Laissez une réponse
Vous devez avoir ouvert une session pour écrire un commentaire.