ATTENTION ! Ce guide n'est pas fait pour les âmes sensibles. Il parle beaucoup de compilation, d'installation de logiciels, d'utilisation de la ligne de commande. Si vous ne savez pas faire un
Toujours là ? Super ! Vous êtes sur le point d'embarquer pour un voyage dans un monde merveilleux...
Retour à la table des matières
Voici une liste des codecs vidéos supportés :
Encore une liste, cette fois pour les codecs audio:
Note: Avant de télécharger un logiciel, vérifiez si votre distribution ne l'a pas déjà. J'utilise Debian Woody (testing) et ai découvert plein de logiciels déjà disponibles sous formes de paquetages.
1. Introduction
Vous avez donc acheté un DVD flambant neuf. Vous pensez qu'il assure vraiment et voulez être sûr d'avoir une copie de ce film quoiqu'il arrive.
Mais comment pouvez-vous le passer de ce gros DVD à un si petit CD ? Et avec une bonne qualité, s'il-vous-plaît ? Lisez juste la suite.configure; make; make install
alors lisez d'autres documents et apprenez à le faire. Si vous ne voulez pas faire cet effort, alors installez Windows et utilisez l'un de ces superbes utilitaires d'extraction de DVD. Je ne m'aventurerais pas dans l'éternel débat "Linux contre Windows". Il s'avère que l'opération sous Linux est plutôt difficile.
2. Logiciels requis
Laissez-moi vous présenter les outils dont vous aurez besoin.
Je vous présenterai deux méthodes de transcodage d'un DVD - en utilisant MEncoder
et transcode. Néanmoins, vous avez besoin de certains fichiers quelle que soit la méthode..IFO
. libdvdread est souvent utilisé pour parcourir ces fichiers et extraire les informations nécessaires.2.1. Un mot sur les codecs
Dans un monde idéal, il y aurait un et un seul codec - le meilleur. Mais notre monde est loin d'être idéal. Par conséquence, il y a une large panoplie de codecs audio et vidéo parmi lesquels il faudra choisir. Je vais expliquer pour commencer les différents types de codecs :
Aujourd'hui, la plupart des codecs sont livrés avec une version native pour Linux (comme XviD,
DivX 4/5 et d'autres).
Ce guide tente de se concentrer sur deux codecs : XviD et lavc.
La raison de cela est que les deux offrent une excellente qualité, les deux sont rapides et vous avez juste besoin d'un décodeur compatible MPEG4 (comme DivX 5 ou XviD) sous Windows pour la lecture. La lecture sous Linux ne présente aucun problème -
MPlayer ou Xine lise aisément les fichiers codés avec DivX 4/5, XviD et
lavc.divx.dll
et quelques autres) et a besoin de avifile.libdivxdecore.so
et libdivxencore.so
. Les sources ne sont pas accessibles (closed source). Pour Windows, il y a plusieurs versions disponibles et seule la version commerciale supporte toutes les options de codage comme les B-frames *,
GMC*
ou le quarter PEL*. La version gratuite peut tout de même être utilisée pour regarder tous les fichiers, même ceux créés avec la version commerciale. Malheureusement, il n'y a que la version gratuite disponible sous Linux, sans toutes ces belles options.
DivXNetworks pense qu'il fournira une solution commerciale également pour Linux. Mais ne vous attendez pas à ce que ce codec soit disponible bientôt.DivX
écrit à l'envers) est une implémentation en Open Source (sources ouvertes) de MPEG4 qui est vraiment bonne pour la compression et la qualité de l'image. Le support des caractéristiques avancées de MPEG4 (B-frames*,
GMC*)
est en cours ou a déjà été implémenté.
J'espère que tout ceci éclaire un peu les choses.
2.2. Bibliothèques / codecs usuels
Je ne rentrerai pas trop dans le détail dans ce chapitre. Il y a plus de documentation sur l'installation incluse dans chaque paquetage. Reportez-vous y si vous avez des problèmes. Remarquez aussi que MPlayer a des exigences plutôt fortes concernant la version de gcc, binutils et d'autres composants centraux de votre système.
Cf. la documentation d'installation de MPlayer.
libdvdcss-0.0.3.ogle3.tar.gz
(les numéros de version peuvent différer car ces codes sont toujours en développement). Dé-tar-gz-ez-le, compilez-le, et installez-le dans /usr/local
apt-get install libdvdread2 libdvdread2-dev
devrait suffire.
Pour la compilation, vous aurez peut-être besoin d'une version spéciale de nasm
que vous pouvez récupérer
ici.cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login
Quand on vous demande un mot de passe, tapez juste Entrée.cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
cd xvidcore/build/generic
make -f Makefile.linux
xvidcore/src/divx4.h
dans /usr/local/include/decore.h
et dans /usr/local/include/encore2.h
. Assurez-vous de faire une copie de sauvegarde des fichiers que vous écraserez !libxvidcore.so
et libcore.a
dans
/usr/local/lib/
2.3. MPlayer
Vous avez besoin de MPlayer. Peu importe si vous utiliserez MEncoder
ou transcode par la suite - vous en aurez de toute façon besoin. Alors téléchargez MPlayer sur
http://www.mplayerhq.hu/. Je préfère la version CVS car elle a souvent des caractéristiques que n'ont pas les releases officielles ! En fait, je fonde ce guide sur les caractéristiques qui ont été incorporées dans la version CVS il y a quelques jours (on est le 30 avril 2002). Faites comme moi - soyez courageux et prenez la version CVS.
Si vous voulez coder avec MEncoder je vous suggère également de prendre une version de libavcodec pour le codage. Vous avez juste besoin de le télécharger si vous utilisez une version CVS de MPlayer. Les releases sont livrées avec un libavcodec pré-empaqueté. Ces instructions sont extraites de la documentation de MPlayer:
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg
login
. Tapez Entrée quand on vous demande un mot de passe.
cvs
-d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co
ffmpeg
Note sur la compilation : Assurez-vous de ne pas inclure le support XviD.
A la place, incluez le support pour libavcodec. Les instructions pour l'installtion sont fournies dans les docs de MPlayer. Oui, vous avez bien lu :
compilez transcode avec XviD et MPlayer
sans XviD mais avec libavcodec. La raison est que MPlayer ne peut supporter à la fois les deux codecs car les deux utilisent des variables qui portent le même nom.
2.4. transcode
Récupérez transcode sur son
site. Assurez-vous de le compiler avec le support XviD
et avec le support pour le post-traitement avec les fonctions de MPlayer. A nouveau, je vous conseille de choisir la version CVS.
En outre, allez télécharger dvd::rip, une excellente interface en Gtk+ pour transcode. Prenez-le ici. Les instructions pour l'installation sont incluses.
Retour à la table des matières
Avant de faire autre chose, pensez à votre zone. Tous les lecteurs vendus de nos jours ont une protection RPC mode 2 - ce qui veut dire que vous pouvez changer votre zone cinq fois avant qu'elle ne se bloque. Vous pouvez avoir plus d'informations pour apprendre à effacer le code de zone de votre lecteur en lisant le Digital Digest. Pourquoi précisé-je tout cela ?? Les méthodes d'extraction décrites ci-dessous supposent que lecteur possède le bon code de zone (c'est-à-dire le même que le DVD à extraire), ou pas de code de zone du tout. Tous les messages d'erreur sont assez sybillins, et ce n'est souvent pas clair que vous avez un problème de zonage quand l'extraction échoue. Gardez donc cela à l'esprit.
Tout d'abord, testez le DVD. Lancez MPlayer et regardez le premier titre :
Maintenant que vous avez une idée de ce à quoi ressemble l'entrelacement, vous devriez être capable de décider vous-même si votre DVD contient un film entrelacé ou non.
Dans la suite, je supposerai que :
Il y a plusieurs façons d'extraire des VOBs. Je vous en présenterai deux : en utilisant un utilitaire sur la ligne de commande (vobcopy) et en utilisant l'interface graphique de transcode, dvd::rip. Vous n'aurez pas à faire les deux :-)
Note de l'auteur (Robos): vobcopy a du mal à suivre les angles. Vous aurez peut-être des scènes dupliquées avec Matrix, par exemple. Je planche dessus.
Une autre note de Robos: Il y a un autre utilitaire nommé
dvdbackup
qui peut aussi copier des DVDs.
Fermez ce dialogue. Ouvrez un nouveau projet (
Passez à l'onglet Rip
Title et appuyez sur le bouton
Le reste pour dvd::rip sera décrit plus tard dans le chapitre 4.
Retour à la table des matières
Voici une liste de scénarios habituels:
Après avoir lancé dvd::rip vous extrayez les titres que vous voulez transcoder sur votre disque dur. Référez-vous au chapitre
3 pour une description plus détaillée.
transcode utilise trois étapes pour amener l'image à sa taille finale:
il rogne d'abord l'image sans la redimensionner, ensuite il la redimensionne, et finalement, il rogne une nouvelle fois. Toutes ces étapes peuvent être sautées en sélectionnant 0 pour le rognage et en laissant les hauteur et largeur originales pour le redimensionnement. Chaque fenêtre montre le résultat de ces trois étapes. Si vous voulez voir quelle taille font réellement les images, cliquez juste dessus, et une fenêtre pop-up s'ouvrira avec l'image correspondante.
Vous avez probablement remarqué la liste d'options sous les trois fenêtres de pré-visualisation.
dvd::rip propose un large choix de pré-séléctions. Séléctionner simplement l'un des choix vous donne un bon début. Vous pouvez toujours changer manuellement les valeurs après avoir choisi une pré-séléction. Toutes les pré-séléctions nommées "autoadjust..." tentent de deviner la bonne région à rogner. Après avoir choisi une pré-séléction, appuyez sur le bouton
Les choix
Vous souvenez-vous que je vous avais demandé de vérifier si la vidéo est entrelacée ou non ? On en a besoin maintenant. Si votre vidéo n'est pas entrelacée, alors laissez les options
Un autre filtre de désentrelacement est fourni par un plugin externe (ne vous inquiétez pas, vous l'avez déjà installlé avec transcode).
Regardez en bas à droite. Il y a une entrée nommée
dvd::rip essaie d'auto-détecter votre framerate. Si il a échoué, vous pouvez le corriger ici.
Les options audio sont assez explicites. Vous choisissez soit de re-coder l'audio en MP3 avec un bitrate spécifié ou vous laissez le son original en AC3 sans re-codage. Le son AC3 offre l'effet surround et tous ces avantages mais prend plus de place que le son MP3. C'est vraiment à vous de choisir. Si vous utilisez le MP3, assurez-vous de placer
En haut à droite, vous pouvez entrer la valeur du bitrate. Vous pouvez facilement choisir la taille du fichier final en séléctionnant le nombre et la taille des CDs que vous allez utiliser. Vous pouvez également modifier le
Quand vous avez fini, cliquez sur
C'est maintenant le bon moment pour aller vous socialiser :-)
Dans dvd::rip appuyez
Finalement, sachez que transcode, à partir de la version
0.6.0pre6-20020529, supporte libavcodec via un module d'export encore expérimental que j'ai écrit. Vous pouvez l'activer avec
Maintenant appelez MEncoder pour coder l'audio :
Décomposons la ligne de commande :
Voici la ligne de commande:
Allez maintenant vous chercher une bonne bière et un bon livre.
Retour à la table des matières
Pour cela, vous devez avoir transcode et ses sources. Vous avez besoin de
tccat et tcextract de transcode et des fichiers situés dans
Tout d'abord, voyons quels sous-titres sont disponibles. On peut utiliser mplayer pour cela :
Maintenant que nous avons le sid (subtitle ID) correspondant à la langue voulue, on peut utiliser les outils de transcode pour extraire le flux des sous-titres:
La dernière étape est d'utiliser srttool pour inclure le texte dans le fichier
Voilà, vous avez un sous-titre qui marche. Vous pouvez les utiliser avec, par exemple,
Retour à la table des matières
Retour à la table des matières
Retour à la table des matières
Avec CBR le codeur utilise le même nombre de bits pour chaque
frame, sans tenir compte de ce qu'il aurait réellement fallu. Ceci a pour inconvénient
que, par exemple, des images complètement noires ou un silence complet dans la bande son
utiliseront un nombre de bits superflu alors que des images ou frame audio contenant beaucoup
d'élements auraient pu profiter de ces bits.
VBR utilise autant de bits qu'il le faut. Ainsi une image noire prendra très peu
de bits et une image complexe aura ce qu'il lui faut. Alors que ceci donne la meilleure qualité,
la taille finale ne peut pas du tout être prédite.
C'est là qu'ABR intervient. Vous spécifiez un bitrate moyen que vous voulez
atteindre et le codeur distribue les bits qu'il a de disponible. Les bits qu'il épargne sur les images noires, il les utilisera sur les images plus complexes. C'est un compromis
entre la qualité et la prédictabilité de la taille finale.
Ceci est une explication rapide d'un MPEG "GOP", or, "Group Of Pictures".
GOP:
La situation pour les frames B est la suivante : "je ne connaîs pas ce bloc" (INTRA
mode), "Je connaîs ce bloc à partir du frame I ou P précédent (backward mode)",
"ce bloc ressemble au bloc dans le frame suivant (forward mode)" ou
"ce bloc ressemble à un mélange entre les blocs des frames précédent et suivant (bidirectional mode)".
Les GOPs MPEG1 sont toujours de la forme "IBBPBBPBBPBB" (c'est l'ordre dans lequel les frames
sont affichés, pas nécessairement l'ordre dans lequel ils ont été codés/sauvés).
Les GOPs MPEG2 GOPs ressemblent à cela aussi. Ils peuvent tout aussi bien contenir trois frames B.
Le codec DivX5 MPEG4 utilise seulement "IBPBPBPBPB" parce que c'est plus facile à implémenter
et parce que la reconnaissance des frames B dans les codecs MPEG4 est relativement récent. Vous pouvez vous attendre à voir plus de frames B à l'avenir.
Retour à la table des matières
Retour à la table des matières
Cette version française est traduite par Massis Sirapian.
Ceci est la première version de ce guide. Faites part de vos remarques - qu'avez-vous aimé ? Pas aimé ? Sur quel point faudrait-il plus d'informations ? Veuillez aussi corriger les erreurs. Et n'hésitez pas à tenir l'auteur au courant d'éventuels programmes / outils / scripts/ documentations qu'il aurait oubliés. L'auteur original peut être contacté par mail : moritz@bunkus.org ; pour la traduction française massis.sirapian@netcourrier.com
Copyright (c) 2002 Moritz Bunkus.
Retour à la table des matières
2.5. Récupérer des RPMs
Je connaîs au moins deux endroits où vous pouvez trouver des RPMs pour les logiciels mentionnés plus haut :
3. Extraire les VOBs
Cette partie est assez facile. Tout ce dont vous avez besoin est de l'espace de libre (beaucoup d'espace libre en fait). En fonction de ce que vous voulez transcoder, vous devrez avoir 10 Go de libre. Si vous ne claquez pas trop d'argent pour de nouveaux disques, ils ne sont vraiment pas chers en ce moment (150€ pour un disque de 80 Go).mplayer -dvd 1
. Vous aimez ? Cool. Assurez-vous de vous souvenir si l'image est entrelacée ou non (voir ci-dessous). Fermez MPlayer.3.1. Vidéo entrelacée
Ce que voyez à la télévision n'est pas du 25 frames par seconde. En fait, vous voyez 50 demi-frames par seconde (je parle du PAL - NTSC est à 29,97 fps
soit près de 60 demi-frames par seconde). Un frame contient les lignes impaires, l'autre, les lignes paires. De cette façon, vous aurez les 25 fps. Le problème, c'est que ces demi-frames sont pris à des instants différents. Si vous avez un mouvement horizontal rapide, vous verrez qu'un objet (ou une personne) est à un endroit pour les lignes impaires et à un autre pour les lignes paires. Ce sont des artefacts dont vous voulez vous passer pour votre vidéo finale. Jetez donc un coup d'oeil à
cette image entrelacée extraite de mon DVD d'Ally McBeal. Avec les filtres appropriés, vous pouvez éliminer l'effet d'entrelacement (appelé dés-entrelacement... quelle surprise ;)). Voici la même image désentrelacée.
Remplacez donc ces chemins par ceux qui correspondent à votre système./dvd
. Il y a une entrée dans /etc/fstab
pour /dvd
./space
.3.2. ...Utiliser la ligne de commande
Lancez vobcopy. Il copiera automatiquement tous les VOBS qui correspondent au titre contenant le plus de chapitres sur votre disque dur.
Ceci copiera les VOBs du DVD, les décryptera (c'est là où on a besoin de libdvdcss) et les écrira dans le répertoire courant (que vous pouvez modifier avec, par exemple, mount /dvd
vobcopy -i /dvd -m
-o /space
). Ils seront nommés selon le titre du DVD (par exemple, j'ai ALLY_MCBEAL_DISC21-1.vob
,
ALLY_MCBEAL_DISC21-2.vob
etc.). L'option -m
demande à
vobcopy de créer un miroir du contenu du DVD, en incluant les fichiers
.IFO
- utiles car vous pouvez alors utiliser la copie locale avec MPlayer/MEncoder ou transcode comme si c'était le vrai DVD. Cela prendra du temps. Soyez patient.3.3. ...utiliser dvd::rip
dvd::rip peut faire le même travail pour vous.
Lancez dvd::rip en tapant dvdrip
. Vous verrez la fenêtre principale. Choisissez Edit / Preferences
et dvd::rip affichera le preferences
dialog. Vous devez entrez vos chemins ici. Le premier est le chemin vers le device DVD et non le mount point (point de montage). C'est souvent /dev/dvd
qui est un lien symbolique vers le vrai device, par exemple /dev/hdc
.File / New Project
).
Il commencera par l'onglet storage. Entrez à nouveau les bons chemins. Remarquez que les autres champs sont modifiés quand vous changez le titre du projet.Read DVD Table of Contents
.
Après quelques secondes, la liste en-dessous se remplira avec les titres présents sur le DVD. Séléctionnez le titre que vous voulez extraire (vous pouvez en choisir plusieurs en maintenant la touche CTRL
appuyée et en cliquant dessus). Choisissez la langue et l'angle. Laissez l'option Specify Chapter Mode
sur
No
. Dernière étape : appuyez sur Rip selected
Title(s)/Chapter(s)
. Soyez patient à nouveau. Buvez du lait. Ayez une agréable conversation avec votre copine.
4. Transcoder un DVD en AVI
Ici, vous avez deux choix - c'est soit transcode soit
MEncoder. Les deux ont des avantages et inconvénients. En voici une petite liste qui est vraie au moins pour les versions CVS du 28 avril 2002 :
avisync
.4.1. Aspect ratios
Avant de commencer, laissez-moi vous rappeler les aspect ratios les plus utilisés. Les DVDs sont toujours codés en 720x576 (5:4) même si l'image sera redimensionnée lors de l'affichage. Les formats habituels sont le 4:3 = 1.33
pour la télé, 16:9 = 1.78 pour les films de cinéma normaux et 2.35:1 pour le Cinémascope.
Ne vous en faites pas si vous ne comprenez pas tout du premier coup. Jetez un coup d'oeil aux options de rognage et redimensionnement de dvd::rip pour une approche plus intuitive.
4.2. Utiliser dvd::rip
Utiliser dvd::rip est de loin la meilleure méthode et la plus facile pour faire vos AVIs. Comme dit précédemment, il utilise largement transcode.4.2.1. Rognage et zoom
Maintenant, passez à l'onglet Clip & Zoom. C'est ici que vous réglez toutes les options de rognage ("clipping") et de dimensionnement de l'image. Tout d'abord, choisissez une image de travail: entrez simplement un numéro de frame (comme 200)
dans la ligne d'entrée Grab Preview Frame
et appuyez sur Grab
Frame from ripped VOB
. Après quelques secondes, les trois vues en dessous montrent le frame que vous avez choisi.Apply Preset Values
. Ajustez ensuite les valeurs jusqu'à ce que cela vous satisfasse.big frame
, medium frame
et small
frame
font référence à la taille finale de l'image.
big
garde presque la résolution DVD, medium
vise entre 500 et 600 de largeur et small
à peu près 350.Use fast resizing
a un grand impact sur le traitement de l'image mais il faut que les hauteur et largeur soient divisibles par 32. Ne vous en faites pas, dvd::rip vous dira si vous ne pouvez pas utiliser le redimensionnement rapide. Notez également que même s'il est possible d'élargir l'image je vous recommande fortement de ne pas le faire. Il y a plusieurs inconvénients : le codeur a besoin de beaucoup plus de bits pour atteindre la même qualité que vous auriez obtenue en codant avec une taille inférieure et en le redimensionnant à la lecture, et vous pourriez même obtenir des images déformées (Peter Schuller m'a fait part d'un tel cas). Redimensionnez toujours en réduisant la taille.
4.2.2. Choisir les paramètres de codage
Nous avons fini avec cet onglet. Ouvrez l'onglet Transcode. Pour commencer, décidez quel codec vidéo vous allez utiliser. Si vous avez installé DivX5 for Linux alors vous pouvez l'utiliser, mais je vous recommande d'utiliser XviD. Si vous avez téléchargé XviD par CVS alors l'option à choisir est xvidcvs
(évidemment). Si transcode s'arrête en cours de route pour d'obscures raisons, vous pouvez essayer xvid
.deinterlacing
et antialias
à off. Sinon choisissez 3 - Zoom To Full Frame
. C'est le plus lent mais aussi le meilleur désentrelaceur. Encore une fois, voici l'exemple entrelacée de Ally McBeal. Vous pouvez voir le résultat de 3 - Zoom To Full Frame
avec
la première image désentrelacée.transcode options
. Toutes les options entrées ici sont simplement passées à transcode. On peut l'utiliser pour le désentrelacement. Voici la même image que précédemment
désentrelacée avec un autre désentrelaceur. Ce désentrelaceur est plus rapide que l'option 3 - Zoom To Full Frame
. Si vous voulez l'utiliser, alors placez deinterlace
sur off
et entrez -J dilyuvmmx
dans la ligne d'entrée.Use YUV internal
devrait toujours être sur yes
à moins que le codec de sortie ne supporte pas les modes YUV.
XviD les supporte. Cette option accélère considérablement le codage. DivX
multipass
devrait être sur yes
également à moins que vous ne vouliez réaliser une prévisualisation. Pour les résultats finaux, choisissez toujours un codage en 2 passes. Même si ça s'appelle DivX multipass
ça marche aussi très bien avec XviD.MP3 Quality
sur 2
. Selon la documentation de lame (lame est utilisé pour la compression MP3) des paramètres de qualité supérieurs comme 1
ou
0 - best but slower
sont largement plus lents mais ne produisent pas une qualité supérieure de façon significative. L'option volume rescale
permet une normalisation du son sans recourir à un programme externe.
Target Size
ou le Video Bitrate
.
4.2.3. Générer une prévisualisation rapide
La plupart du temps, vous devriez créer un petit échantillon avec dvd::rip.
Vous pouvez le faire en fournissant un Frame Range
(intervalle de frames). Je prends en général 30 secondes qui font 750 frames à 25 fps (<nombre de secondes> *
<fps> = <nombre de frames à coder>) et commence quelque part dans le film (comme à 200, 300 frames). De bonnes valeurs sont par exemple 200 - 950
. Vous pouvez également donner à transcode un bas niveau de priorité (donc un haut niveau de "nice") de façon à ce qu'il n'utilise que les temps morts. Si vous voulez votre prévisualisation tout de suite maintenant, vous pouvez désactiver provisoirement l'option DivX
Multipass
. N'oubliez pas de le réactiver après !Transcode
. Après quelques minutes votre AVI/MPEG sera prêt. Jetez-y un coup d'oeil (par exemple mplayer my-new-file.avi
). C'est le moment de voir si le désentrelacement a marché comme prévu et de vérifier que le son et la vidéo sont parfaitement synchrones. Si c'est le cas, c'est bon. Si ce n'est pas le cas, lisez la suite:
4.2.4. Eviter la désynchronisation audio/vidéo
Si l'audio et la vidéo ne sont pas synchrones dans votre prévisualisation (ou quand vous lisez le DVD lui-même) vous pouvez fournir à transcode un décalage de frames pour la synchronisation a/v. Il vous faut préciser le paramètre -D nr
dans l'entrée transcode options
dans l'onglet Transcode
. nr
est le nombre de frames de décalage de l'audio. Ce nombre peut être négatif. Un frame est long de 40ms à 25fps. De façon plus générale, un frame dure (1000 / fps)ms. Pour mon DVD d'Ally McBeal DVD j'ai besoin d'une correction de -2 qui correspond à -80msecs:
-D -2
. Recrééz une vidéo de prévisualisation (sans toucher aux autres paramètres a priori) et vérifiez l'audio à nouveau. Si besoin, recommencez l'opération jusqu'à entière satisfaction.
4.2.5. Créer le film en entier
Quand la prévisualisation est bonne vous pouvez commencer votre transcodage. Assurez-vous que DivX Multipass
est sur on si vous l'aviez désactivé pour l'échantillon. Cliquez soit sur Transcode
soit sur Transcode
+ Split
si vous voulez que vos fichiers soient automatiquement coupés à la taille spécifiée au niveau de Video Bitrate Calculation
.4.2.6. Pour utilisateurs confirmés : les options de transcode sur la ligne de commande
Ce chapitre explique les options sur la ligne de commande de transcode, utilisées par dvd::rip. Ce n'est pas critique pour l'opération de transcodage, donc vous pouvez tout à fait le sauter. Je le fournis pour ceux qui veulent mieux comprendre ce que font dvd::rip et transcode.CTRL-t
pour voir à quoi ressemblent les commandes exécutées par dvd::rip. Concentrons-nous sur le dernier groupe de commandes, Transcode command
. Voici un exemple pour mon DVD de Star Trek: The Next Generation sans ces commandes de mkdir
et de cd
:
Jetons un coup d'oeil à la première ligne et à ses paramètres :
transcode -i /space/tng-biggoodbye/vob/004 -w 4357,250,100
-a 1 -b 128,0,0 -s 3.311 -V -f 25 -B 12,10,8 -R 1 -x vob,null -o /dev/null
-y xvidcvs,null
transcode -i /space/tng-biggoodbye/vob/004 -w 4357,250,100
-a 1 -b 128,0,0 -s 3.311 -V -f 25 -B 12,10,8 -R 2 -x vob
-o /space/tng-biggoodbye/avi/004/tng-biggoodbye-004.avi -y xvidcvs
La seconde ligne de commandes n'est pas si différente. Seules les options qui ignoraient les sorties sont modifiées (comme -i /space/tng-biggoodbye/vob/004
précise évidemment à
transcode où se trouvent les fichiers. Cela peut être un fichier, un device, ou un répertoire contenant les fichiers.-w 4357,250,100
fixe les paramètres du codage vidéo: bit rate,
intervalle maximal de key frame et crispness.-a 1
séléctionne la piste audio numéro 1 (en commençant à 0).-b 128,0,0
fixe les paramètres du codage audio pour lame: bit rate, VBR et quality. Regardez la page de manuel de lame
pour une explication de ces paramètres -V
et -q.-s 3.311
précise à lame de normaliser l'audio à la volée.-V
demande à transcode de traiter l'image dans l'espace des couleurs YUV. Sans cette option -V
les images seraient converties dans l'espace des couleurs RGB. Remarquez que certains filtres externes ne fonctionnent qu'avec l'un des deux espaces. Le traitement YUV accélère énormément l'opération.-f 25
fixe le framerate.-B 12,10,8
fixe les options de redimensionnement rapide: l'image sera réduite à hauteur - 12 * 8
lignes et à largeur - 10 * 8
colonnes.-R 1
est le marqueur pour la première (des deux) passe de codage.-x vob,null
- l'entrée vidéo vient de fichiers VOB et l'audio sera ignorée (on n'en a pas besoin pour la première passe de toute façon).
-o /dev/null
- On n'a pas besoin de la vidéo non plus, donc on s'en débarasse.-y xvidcvs,null
- La vidéo sortie utilise XviD pour la vidéo et l'audio est ignorée.-o real-file-name
et
-y xvidcvs
). Pour une référence plus complète, jetez un coup d'oeil aux pages de manuel de transcode et de lame.-y
ffmpeg4
(souvenez-vous: libavcodec fait partie de ffmpeg)
à la place de votre codec précédent. dvd::rip ne le supporte pas encore (il n'est pas dans la liste des codecs séléctionnables).
4.3. Utiliser MEncoder
Comme mentionné ci-dessus, il n'y a pas d'interface graphique pour MEncoder pour l'instant.
Je ne fournirais donc pas de captures d'écran et vous aurez à tout taper à la main. Cette opération est appelée "codage en trois passes".
4.3.1. Coder l'audio
La première étape est de coder uniquement l'audio. Assurez-vous de savoir quelle langue vous voulez utiliser - vous avez besoin soit de l'audio id (qui est 128 pour le premier flux, 129 pour le deuxième, etc.), soit du code du pays en deux lettres (comme en
pour l'anglais ou fr
pour le français). Vous pouvez en savoir plus sur ces codes en lançant MPlayer en mode verbeux:
mplayer -dvd 1 -v
. Ca devrait produire plein d'informations. Cherchez des lignes qui ressemblent à :
[open] audio stream: 0 audio format: ac3 language: en aid: 128
[open] audio stream: 1 audio format: ac3 language: de aid: 129
[open] audio stream: 2 audio format: ac3 language: es aid: 130
Ici, on a trois flux audio: anglais, allemand, espagnol et leur IDs.
nice -+19 cat /space/*vob | nice-+19 mencoder -ovc frameno
-o frameno.avi -oac mp3lame -lameopts abr:br=128 -alang de -
Voici une explication des arguments utilisés sur la ligne de commande :
Attendez un peu et vous aurez votre audio. MEncoder vous suggère même des bitrate vidéo:nice -+19
- Donne à MEncoder la plus basse priorité pour qu'il ne vous gêne pas dans votre travail.-ovc frameno
- Le codec de sortie vidéo est frameno
ce qui signifie qu'aucune donnée vidéo n'est traitée ou écrite.
-o frameno.avi
- Ecrit le résultat dans le fichier nommé
frameno.avi
. L'audio doit être écrit dans un fichier nommé ainsi car MEncoder lira l'audio à partir de ce seul fichier lors de l'étape suivante.-oac mp3lame
- Le codec de sortie audio est la bibliothèque de codage lame.-lameopts abr:br=128
- options pour -alang de
-aid 129
.
Recommended video bitrate for 650MB CD: 1845
Recommended video bitrate for 700MB CD: 1992
Recommended video bitrate for 800MB CD: 2287
Comme vous pouvez le voir, ces valeurs sont plutôt importantes - c'est parce qu'un épisode d'Ally
McBeal ne dure que 41 minutes. Je mettrais donc 2 épisodes par CD et donnerais un bitrate video d'environ 1000.
4.3.2. Générer une prévisualisation (première passe)
Il faut maintenant décider quel codec vidéo vous allez utiliser. Je suppose qu'on veut un AVI avec l'un des codeurs DivX. MEncoder supporte DivX 4 ou
DivX 5 (pareil sous Windows, en fait, vous avez soit la version 4 soit la 5) de même qu'il supporte XviD ou lavc. Même si la plupart d'entre vous n'ont pas entendu parler de libavcodec ou du ffmpeg-project, il serait judicieux d'utiliser lavc qui est largement supérieur à DivX 4 ou 5 et au moins aussi bon que XviD. Je ne donnerai donc que des exemples pour lavc puisque vous n'aurez même pas besoin de codecs spéciaux pour la lecture :
MPlayer les lit parfaitement (naturellement), et sous Windows, vous avez juste besoin d'un lecteur DivX 5 (la version gratuite est largement suiffisante). Allons-y.
Mettez tout ensemble pour obtenir une ligne de commande qui ressemble à :-oac copy
- MEncoder a besoin de l'information audio issue de la première passe pour éviter la désynchronisation audio/video.
Vous ne devez pas utiliser -nosound
, même si je le suggèrais dans les versions précédentes de ce guide. Si vous voulez des détails techniques, allez voir la mailing-liste de MPlayer.-o /dev/null
- la sortie de la première passe est inutile, donc on s'en débarasse.-ovc lavc
- le codec de sortie vidéo est lavc.-lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vqmin=2:vqmax=31:vpass=1
-
libavcodec supporte en fait une poignée de codecs video différents.
Avec vcodec=mpeg4
on choisit un codeur compatible MPEG4.
vbitrate=1000
est le bitrate désiré. vhq
(very high quality=très haute qualité) dit au codeur de passer beaucoup de temps à optimiser les résultats. Ca vaut le coup. vpass=1
dit finalement au codeur qu'il s'agit uniquement de la première passe. Les options
vqmin
et vqmax
disent au codec à quel point il doit compresser la video (au minimum et au maximum). Garder les valeurs par défaut (voir man mencoder
) restreint beaucoup les bitrates réalisables, donc je préconise une plage plus grande. Je ne suis pas un expert en quantification. Si je me trompe, dites-le moi.-vop scale=640:480
- réduit l'image à 640 par 480 pixels. J'ai lu dans la mailing-liste qu'une nouvelle option a été ajoutée pour calculer automatiquement la hauteur à partir de la largeur (ou l'inverse) de façon à respecter l'aspect ratio. Je ne l'ai pas testée moi-même, mais ça devrait ressembler à cela : -vop scale -xy 640
. Remarquez que même s'il est possible d'élargir l'image, je vous recommande fortement de ne pas le faire. Il y a plusieurs inconvénients : le codeur a besoin de beaucoup plus de bits pour atteindre la même qualité que vous auriez obtenue en codant avec une taille inférieure et en le redimensionnant à la lecture, et vous pourriez même obtenir des images déformées (Peter Schuller m'a fait part d'un tel cas). Redimensionnez toujours en réduisant la taille.-npp lb
.-ss 0:20
fixe le début à la 20è seconde dans le film,
et -endpos 0:30
dit que nous voulons traiter 30 secondes.
Ce paramètre est mal nommé puisque ce n'est pas la position de fin mais bien la durée qu'on donne.
nice -+19 mencoder -oac copy -o /dev/null -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=1000:vhq:vpass=1 -vop scale=640:480 -npp lb
-ss 0:20 -endpos 0:30 /space/first.vob
4.3.3. Générer une prévisualisation (seconde passe)
A ce stade, on peut garder la plupart des commandes précédentes. Bien sûr, nous changeons vpass=1
en vpass=2
pour dire au codeur qu'il s'agit de la seconde passe cette fois-ci. Evidemment, nous voulons sauvegarder la sortie finale et remplaçons -o /dev/null
par quelque chose de plus utile, par exemple -o ally-preview.avi
.
nice -+19 mencoder -oac copy -o ally-preview.avi -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=1000:vhq:vpass=2 -vop scale=640:480 -npp lb
-ss 0:20 -endpos 0:30 /space/first.vob
Quand MEncoder a fini, regardez votre échantillon. Ajustez les paramètres si nécessaire. Recommencez la prévisualisation jusqu'à entière satisfaction.
4.3.4. Générer l'AVI final (les deux passes)
La commande pour le fichier final n'utilise plus les options -ss
et -endpos
. Malheureusement MEncoder ne peut gérer plusieurs fichiers en entrée sur la ligne de commande. C'est pourquoi il faut utiliser la commande cat
.
Tapez juste :
cat /space/*vob | nice -+19 mencoder -oac copy -o /dev/null -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=1000:vhq:vpass=1:vqmin=2:vqmax=31 -vop scale=640:480
-npp lb -
cat /space/*vob | nice -+19 mencoder -oac copy -o ally.avi -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=1000:vhq:vpass=2:vqmin=2:vqmax=31 -vop scale=640:480
-npp lb -
Remarquez que -ss
ne semble pas marcher avec la variante cat *vob |
mencoder...
. Donc pour la prévisualisation, spécifiez simplement le premier vob comme dernier argument sur la ligne de commande (cf. ci-dessus).
5. Sous-titres
Sur un DVD, les sous-titres sont enregistrés sous forme d'images qui sont affichées sur la vidéo par votre lecteur. De cette façon, les auteurs ont un large choix pour les langues (et cela facilite le sous-titrage dans les langues asiatiques). Pour nous, cela peut être, ou non, un problème, en fonction du fait que nous les voulions directement incrustés dans l'image, ou dans un fichier séparé.
5.1. Convertir les sous-titres en format texte
La plupart du temps, vous ne voulez pas être forcés de voir les sous-titres.
Ce n'est pas possible si vous incluez les sous-titres dans l'image pendant le codage. Vous devez extraire les sous-titres du DVD dans un fichier séparé que l'utilisateur pourra (ou non) utiliser. Je vais décrire comment convertir les sous-titres DVD dans un format texte très utilisé. Les sous-titres en texte peuvent facilement être redimensionnés par le lecteur (en choississant une police appropriée) et ils prennent vraiment peu de place (la plupart du temps moins de 100 Ko).transcode/contrib/subrip
(contenu dans les sources de transcode).
5.1.1. Compiler les utilitaires
Malheureusement, aucun paquetage (RPM, deb) n'inclue
subrip à ma connaissance, donc vous aurez à le compiler et l'installer vous-même. Mais c'est plutôt facile.
cd
transcode/contrib/subrip
) et tapez make
.srttool
, subtitle2pgm
et pgm2txt
dans un répertoire contenu dans votre PATH
.pgm2txt
si votre version de gocr ne supporte pas l'option -p
: à la fin, il y a deux lignes contenant -p ${DBPATH}
. Retirez-les simplement (après avoir consulté la page de manuel de gocr).5.1.2. Extraire les sous-titres
Ici, je suppose que vous avez copié votre DVD avec vobcopy -m
, ce qui signifie que vous en avez une copie miroir incluant les fichiers .IFO
. Si ce n'est pas le cas, vous devrez adapter les sources.mplayer -dvd-device /space/st-tng/disc1/ -dvd 1
-vo null -ao null -frames 0 -v 2>&1 | grep sid
ce qui demande à
mplayer de donner plein d'informations à propos des sources et de ne rien jouer. Ca devrait donner la liste des sous-titres:
[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: entccat -i /space/st-tng/dic1/ -T 1 -L | tcextract -x ps1 -t vob
-a 0x22 > subs-en
Le -a 0x21
est le numéro du sous-titre en hexadécimal: 0x20 + sid. Ici, on veut les sous-titres en anglais.
5.1.2. Convertir le flux
Ok, on a le flux non traité, mais que pouvons-nous en faire ? Tout d'abord, nous devons convertir chaque entrée de sous-titre en image. Ceci peut être réalisé facilement avec subtitle2pgm -o english -c 255,255,0,255 < subs-en
Il y a cependant un truc. Avec -c
vous pouvez spécifiez les niveaux de gris utilisés dans la conversion. L'idée est de faciliter le travail de gocr autant que faire ce peut. Vous aurez donc peut-être à jouer avec les paramètres - mais c'est également facile. J'ai pris les exemples suivants de mon DVD de Star Trek -
The Next Generation :
Comme vous pouvez le voir, vous avez besoin d'une image qui ne contienne pas de caractères contourés.-c 0,255,255,255
- C'est de toute évidence mauvais.-c 255,0,255,255
- Ca semble bon.-c 255,255,0,255
- On ne veut pas de celui-ci.-c 255,255,255,0
- On ne veut pas de celui-là non plus.subtitle2pgm
crée plein d'images - une pour chaque sous-titre -
et un fichier de contrôle, nommé english.srtx
dans mon cas, qui contient la durée de chaque sous-titre. La prochaine étape est de laisser gocr reconnaître
le texte:
pgm2txt english
Attention - gocr vous demandera souvent de lui apprendre les caractères qu'il n'aura pas reconnus. C'est normal. Une fois le travail fini, vous pouvez utiliser ispell
sur les fichiers texte créés:
ispell -d american english*txt
Adaptez à la langue voulue, évidemment..srtx
:
srttool -s -w < english.srtx > english.srt
mplayer -sub english.srt mymovie.avi
6. Quelques trucs en plus
Voici quelques points supplémentaires qu'on peut rencontrer lors de la création d'une vidéo.
6.1. Corriger la désynchronisation audio
Ceci ne marche pas avec les AVIs qui utilisent des MP3 VBR/ABR. Cette étape utilise avisync
qui fait partie du paquetage transcode.avisync
est facile à utiliser : précisez juste un fichier entrée
(-i name.avi
), un fichier sortie (-o newname.avi
) et le décalage de synchronisation en frames (-n count
). Extrait de l'aide de avisync
: count>0: la bande audio commence avec la frame audio 'count'.
count<0: 'count' frames audio sont rajoutées au début de l'AVI
. Un exemple :
avisync -i ally-not-synched.avi -o ally-synched.avi -n -2
6.2. Couper un AVI
Ceci ne marche pas avec les AVIs qui utilisent des MP3 VBR/ABR. Cette étape utilise avisplit
qui fait partie du paquetage transcode. Utilisez-le uniquement avec des AVIs générés par transcode.avisplit
est facile à utiliser : précisez juste un fichier d'entrée
(-i name.avi
) et où il devrait être coupé. Vous pouvez le couper après une taille donnée (-s size_in_megs
), après un certain nombre de frames
(-f f1-f2
) ou après un certain nombre de secondes (-t s1-s2
).
Un exemple :
avisplit -i ally-big-file.avi -o ally -s 700
Ceci produira des fichiers nommés ally-0000.avi, ally-0001.avi
etc.
qui feront chacun 100megs au plus.6.3. Extraire l'audio des VOBs/MPEGs/AVIs
MPlayer peut être utilisé pour extraire facilement le son. L'option -vo null
dit à MPlayer de ne pas montrer la vidéo.
Je n'énumère pas toutes les options possibles. La plupart du temps, utilisez mplayer -vo null -nogui -alang de -dumpaudio
-dumpfile lang-de.ac3 *vob
Pour extraire la bande son allemande dans un fichier intitulé lang-de.ac3
.mplayer -vo null -nogui -aid 128 -ao pcm
-aofile lang-de.wav *vob
Pour extraire la piste audio no. 128,
transformer le son AC3 en PCM et écrire le résultat dans lang-de.wav
.mplayer -vo null -nogui -dumpaudio
-dumpfile audio.mp2 myvideo.mpg
Pour extraire la bande son dans le fichier audio.mp2
.mplayer -vo null -nogui -ao pcm -aofile audio.wav
myvideo.avi
Pour extraire l'audio, le convertir en PCM et écrire le .WAV résultant dans audio.wav
.-dumpaudio -dumpfile
newaudio.extension
si vous voulez extraire le son sans lui appliquer de transformation et -ao pcm -aofile newaudio.wav
si vous voulez le WAV lui-même.
6.4. Utilisez des fichiers sons séparés
Parfois vous voudrez utiliser un autre fichier son avec votre vidéo.
MPlayer rend la chose facile à réaliser : mplayer -audiofile
anotherlang.mp3 myvideo.avi
joue la vidéo de myvideo.avi
et le son de anotherlang.mp3
. Pas mal de lecteurs multimédia pour Windows savent aussi lire les fichiers audio externes. De cette façon, vous pouvez fournir différentes langues grâce à des fichiers séparés. Une combinaison souvent utilisée est d'avoir la bande son en anglais incluse dans la vidéo et de fournir les pistes audio supplémentaires dans des fichiers séparés.
6.5. Un éditeur visuel d'AVIs : avidemux
Si vous avez déjà fait de l'édition vidéo sous Windows, vous connaissez probablement l'excellent éditeur en OpenSource VirtualDub. Un éditeur en OpenSource, pour Linux, vise à fournir les mêmes fonctionnalités ; c'est avidemux.
Vous pouvez l'utiliser pour couper facilement un film à un endroit donné, pour appliquer des filtres, pour re-coder des films, et plein d'autres choses. Je vous suggère d'y jeter un coup d'oeil même si la ligne de commande vous est aussi naturelle qu'elle l'est pour moi.
7 Liens
7.1. Bibliothèques, codecs
7.2. Lecteurs média
7.3. Codeurs
7.4. Autres documentations
MPlayer et transcode sont livrés avec des pages de manuel Unix standards: man mplayer
, man mencoder
et
man transcode
affichent ces pages. En outre, en passant
-h
or --help
comme seul paramètre à l'un de ces programmes,
vous obtiendrez la liste des options disponibles sur la ligne de commande (liste qui peut ne pas être
complète).
7.5. Mailing listes
Je vous recommande chaudement de chercher/parcourir les mailing lists pour trouver une information précise
et de vous y inscrire vous-même. Il y a beaucoup d'informations disponibles qui n'ont pas été incluses
dans la documentation de base ou la référence des options sur la ligne de commande.
8. Glossaire
8.1. CBR, VBR et ABR
Ces trois acronymes signifient Constant Bit Rate (bit rate constant), Variable
Bit Rate (bit rate variable) et Average Bit Rate (bit rate moyen).8.2. Global Motion Compensation (GMC)
Global motion compensation (GMC) (Compensation globale de mouvements) permet de zoomer (en rapprochant la caméra)
et de se translater (en déplaçant la camera), si les objets restent de même nature et
change uniquement de taille et de position à l'image. Il est conseillé d'activer GMC
pour compresser des documentaires animaliers ou des films contenant beaucoup de paysages.8.3. Letterboxing
Peut-être avez-vous remarqué que la vidéo est parfois entourée de bandes noires
avant le codage. Ce procédé est appelé le letterboxing. Il permet d'aider certains lecteurs
à maintenir un rapport correct d'aspect. D'autres utilisent les bandes noires
pour afficher les sous-titres. L'inconvénient est que ces bandes noires élargissent
l'image et demandent donc plus de bande passante pour le coder même si des bandes complètement
noires ne devraient pas nécessiter beaucoup de place - mais la transition entre l'image et la bande noire nécessite beaucoup de bits qui pourraient être utilisés ailleurs.
8.4. P/I/B-Frames, GOPs
Ceci est extrait et traduit du forum de doom9
:
I frame:
P frame:
B frame:
Pour chaque macrobloc dans un frame P le codeur décide si il connaît déjà
ce bloc à partir du frame précédent ou s'il est complètement nouveau.
Dans le premier cas, il code seulement la différence (INTER mode). Dans le
second cas, il code le macrobloc entier (INTRA mode).8.5. Quarter Pixel (QP)
Le Quarter pel ou quarter pixel influence la précision du filtrage des macro
blocs. DivX 4 marche avec un pel et demi (1.5, 1.5); 1.25, 1.75, etc. sont possibles
depuis DivX 5. La division conventionnelle de l'image en macroblocs repose
sur des entiers - 16x16 or 8x8 - en utilisant une information supplémentaire
sur ce qui est appelé blocs virtuels. Ceci permet de reproduire le mouvement d'objets
de façon beaucoup plus réaliste.
9. Historique
A faire :
23 août 2002:
-nosound
en -oac copy
.-m
pour la ligne de commande de vobcopy.vqmin=1
en
vqmin=2
car lavc peut produire des fichiers corrompus avec 1.
3 juin 2002:
3 juin 2002:
mencoder ... /space/*vob
en cat /space/*vob |
mencoder ... -
pour le traitement audio (merci à E. Kevin
Hall).export_ffmpeg4
.
5 mai 2002:
3 mai 2002:
vpass=1
qui devait être vpass=2
à plusieurs endroits (merci à Markus Liebl)
2 mai 2002:
vqmin
et vqmax
to
pour libavcodec (merci à Peter Schuller)
1er mai 2002:
30 avril 2002:
10 About
Ce guide (original en anglais) a été écrit par Moritz Bunkus. C'est un étudiant de 24 ans en informatique au Technical University Braunschweig (Allemagne). D'après lui, il a pas mal de temps de libre :-)
Vous pouvez copier, redistribuer et/ou modifier ce document selon les
termes de la Licence de Documentation Libre GNU, Version 1.2 ou toute
autre version ultérieure publiée par la Free Software Foundation.