Encodage avec <application>MEncoder</application> Pour avoir la liste complète des options disponibles de MEncoder et des exemples, voir la page de man. Pour une série d'exemples pratiques et de guides détaillés sur l'utilisation des nombreux paramètres d'encodage, lisez les encoding-tips (en anglais) qui ont été collectés sur de nombreuses threads de la liste de diffusion mplayer-users. Cherchez dans les archives pour trouver les discussions à propos de tous les aspects et problèmes relatifs à l'encodage avec MEncoder. Encodage MPEG-4 ("DivX") 2 passes le nom vient du fait que cette méthode encode le fichier deux fois. Le premier encodage (du mode deux passes) créé quelques fichiers temporaires (*.log) avec une taille de quelques méga-octets, ne les détruisez pas tout de suite (vous pouvez effacer l'AVI). Lors de la seconde passe, le fichier de sortie 2-passes est créé, en utilisant les données bitrate des fichiers temporaires. Le fichier résultant aura une image de bien meilleure qualité. Si c'est la première fois que vous entendez parler de ça, vous devriez consulter les guides disponibles sur le Net. copie de la piste audio Encodage 2-passes d'un DVD en AVI MPEG-4 ("DivX") pendant la copie de la piste audio. mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o film.avi mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o film.avi encodage de la piste audio Encodage 2-passes d'un DVD en AVI MPEG-4 ("DivX") pendant la conversion de la piste audio en MP3. mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -lameopts vbr=3 -o film.avi mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac mp3lame -lameopts vbr=3 -o film.avi Encodage au format MPEG MEncoder peut créer des fichiers au format MPEG (MPEG-PS). Ceci n'est probablement utile qu'avec le codec mpeg1video de libavcodec, car les lecteurs - excepté MPlayer - attendent de la vidéo MPEG-1, et de l'audio MPEG-1 layer 2 (MP2) dans les fichiers MPEG. Cette fonction n'est pas vraiment utile actuellement, car elle a probablement de nombreux bogues, mais, plus important encore, parce qu'actuellement MEncoder ne peut pas encoder l'audio MPEG-1 layer 2 (MP2), qui est attendu par tous les autres lecteurs dans les fichiers MPEG. Pour changer le format de sortie de MEncoder, utilisez l'option . Exemple: mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy autres options media.avi -o sortie.mpg Redimensionnement des films Souvent le besoin de redimensionner les images d'un film se fait sentir. Les raisons peuvent être multiples: diminuer la taille du fichier, la bande passante du réseau, etc. La plupart des gens redimensionnent même en convertissant des DVDs ou SVCDs en AVI DivX. Si vous désirez redimensionner, lisez la section Préserver le ratio d'aspect. Le processus de zoom est géré par le filtre vidéo scale: . Sa qualité peut être réglée avec l'option . Si elle n'est pas spécifiée, MEncoder utilisera 2: bicubique. Utilisation: mencoder entree.mpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -o sortie.avi Copie de flux MEncoder peut gérer les flux entrant de deux façons: les encoder ou les copier Cette section parle de la copie. Flux vidéo (option ): on peut faire des choses sympa :) comme, placer (pas convertir) de la vidéo FLI ou VIVO ou MPEG1 dans un fichier AVI ! Bien sûr seul MPlayer peut lire de tels fichiers :) et ça n'a probablement aucun intérêt. Concrètement: copier des flux vidéo peut être utile par exemple quand seul le flux audio doit être encodé (comme du PCM non-compressé en MP3). Flux audio (option ): très simple. Il est possible de prendre un fichier audio externe (MP3, WAV) et de le multiplexer dans le flux sortant. Utilisez l'option pour cela. Réparer les fichiers AVIs ayant un index défectueux Facile. Nous copions simplement les flux vidéo et audio, et MEncoder génère l'index. Bien sûr cela ne peut pas réparer les bogues possibles dans les flux vidéo et/ou audio. Il répare également les fichiers avec un entrelacement endommagé, ainsi l'option ne sera plus requise. Commande: mencoder -idx entree.avi -ovc copy -oac copy -o sortie.avi Assembler plusieurs fichiers AVI Un effet secondaire de la fonction de réparation d'AVI permet à MEncoder d'assembler 2 fichiers AVI (ou plus): Commande: cat 1.avi 2.avi > 3.avi mencoder -noidx -ovc copy -oac copy -o sortie.avi 3.avi Cela suppose que 1.avi et 2.avi utilisent les mêmes codecs, résolution, débit, etc. et qu'au moins 1.avi ne soit pas endommagé. Vous pouvez avoir besoin de réparer vos fichiers AVI d'entrée d'abord, comme décrit ci-dessus. Encodage avec la famille de codecs <systemitem class="library">libavcodec</systemitem> libavcodec permet un encodage simple dans de nombreux formats audio et vidéo intéressants. Vous pouvez encoder avec les codecs suivants (plus ou moins à jour): Nom codecDescription mjpeg Motion JPEG ljpeg Lossless JPEG (sans perte) h263 H.263 h263p H.263+ mpeg4 standard MPEG-4 ISO (DivX 5, compatible XVID) msmpeg4 variante pré-standard MPEG-4 de MS, v3 (alias DivX3) msmpeg4v2 pré-standard MPEG-4 par MS, v2 (utilisé dans les anciens fichiers asf) wmv1 Windows Media Video, version 1 (alias WMV7) wmv2 Windows Media Video, version 2 (alias WMV8) rv10 un vieux codec RealVideo mpeg1video video MPEG-1 mpeg2video video MPEG-2 huffyuv compression sans perte asv1 ASUS Video v1 asv2 ASUS Video v2 ffv1 codec vidéo sans perte de FFmpeg La première colonne contient le nom du codec qui devrait être passé après la config vcodec, comme: Un exemple, avec compression MJPEG: mencoder dvd://2 -o titre2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy Encodage à partir de multiples fichiers image (JPEG, PNG, TGA, SGI) MEncoder est capable de créer des fichiers à partir de un ou plusieurs fichiers JPEG, PNG ou TGA. Avec une simple copie de trame il peut créer des fichiers MJPEG (Motion JPEG), MPNG (Motion PNG) ou MTGA (Motion TGA). Explication du processus: MEncoder décode le(s) image(s) d'origine avec libjpeg (pour décoder des PNGs, il utilisera libpng). MEncoder envoie alors l'image décodée au compresseur vidéo choisi (DivX4, XviD, ffmpeg msmpeg4, etc.). Exemples Une explication de l'option peut être trouvée dans la page de man. Créer un fichier DivX4 à partir de tous les fichiers JPEG du répertoire courant: mencoder -mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o sortie.avi Créer un fichier MPEG-4 à partir de quelques fichiers JPEG du répertoire courant: mencoder mf://trame001.jpg,trame002.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o sortie.avi Créer un fichier Motion JPEG (MJPEG) à partir de tous les fichiers JPEG du répertoire courant: mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o sortie.avi Créer un fichier non-compressé à partir de tous les fichiers PNG du répertoire courant: mencoder mf:// -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o sortie.avi La largeur doit être un entier multiple de 4, c'est une limitation du format AVI RGB brut. Créer un fichier Motion PNG (MPNG) à partir de tous les fichiers PNG du répertoire courant: mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o sortie.avi Créer un fichier Motion TGA (MTGA) à partir de tous les fichiers TGA du répertoire courant: mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o sortie.avi Extraction des sous-titres DVD dans un fichier Vobsub MEncoder est capable d'extraire les sous-titres d'un DVD dans des fichiers au format VOBsub. Ils consistent en une paire de fichiers terminant par .idx et .sub et sont généralement compressés dans une seule archive .rar. MPlayer peut les lire avec les options et . Vous spécifiez le nom de base (c-à-d. sans extension .idx ou .sub) des fichiers de sortie avec et l'index pour ces sous-titres dans le fichier final avec . Si l'entrée n'est pas un DVD vous pouvez utiliser 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 pour lui permettre de savoir quel id langue placer dans le fichier .idx. Chaque étape ajoutera les sous-titres actifs dans les fichiers .idx et .sub déjà existants. Vous devrez donc les enlever avant de commencer. Copier deux sous-titres d'un DVD pendant l'encodage 2-passes rm subtitles.idx subtitles.sub mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -vobsubout subtitles -vobsuboutindex 0 -sid 2 mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -vobsubout subtitles -vobsuboutindex 1 -sid 5 Copier les sous-titres français depuis un fichier MPEG rm soustitres.idx soustitres.sub mencoder film.mpg -ifo film.ifo -vobsubout soustitres -vobsuboutindex 0 -vobsuboutid fr -sid 1 Préserver le ratio d'aspect Les fichiers des DVDs et des SVCDs (c-à-d MPEG1/2) contiennent une valeur de ratio d'aspect, qui décrit comment le lecteur devrait dimensionner le flux vidéo, pour que les personnages n'aient pas des "têtes d'oeuf" (ex. 480x480 + 4:3 = 640x480). De toute façon, quand vous encodez un fichier AVI (DivX), vous devez être conscients que les entêtes AVI ne stockent pas cette valeur. Redimensionner le film est assez infâme et coûteux en temps, il doit y avoir une meilleur solution ! Il y en a une. MPEG-4 a une fonction spécifique: le flux vidéo peut contenir le ratio d'aspect requis. Oui, tout comme les fichiers MPEG-1/2 (DVD, SVCD) et H.263. Malheureusement, il n'y a aucun lecteur vidéo qui supporte cet attribut. Excepté MPlayer. Cette fonction ne peut être utilisé qu'avec le codec mpeg4 de libavcodec. Gardez bien à l'esprit que même si MPlayer lit correctement le fichier créé, les autres lecteurs utiliseront un mauvais ratio d'aspect. Vous devriez vraiment couper les bandes noires au dessus et en dessous de l'image. Voir la page de man pour l'utilisation des filtres cropdetect et crop. Utilisation mencoder echantillon-svcd.mpg -ovc lavc -lavcopts vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -o sortie.avi Inter/intra matrices personnalisées Avec cette fonction de libavcodec vous pouvez utiliser des matrices personnalisées inter (trames-I/trames-clé) et intra (trames-P/trames prévues). Elle est supportée par de nombreux codecs: mpeg1video et mpeg2video fonctionnent. Une utilisation typique de cette fonction est d'utiliser les matrices recommandées par les spécifications KVCD. La matrice de quantification "Notch" de KVCD: Intra: 8 9 12 22 26 27 29 34 9 10 14 26 27 29 34 37 12 14 18 27 29 34 37 38 22 26 27 31 36 37 38 40 26 27 29 36 39 38 40 48 27 29 34 37 38 40 48 58 29 34 37 38 40 48 58 69 34 37 38 40 48 58 69 79 Inter: 16 18 20 22 24 26 28 30 18 20 22 24 26 28 30 32 20 22 24 26 28 30 32 34 22 24 26 30 32 32 34 36 24 26 28 32 34 34 36 38 26 28 30 32 34 36 38 40 28 30 32 34 36 38 42 42 30 32 34 36 38 40 42 44 Utilisation: $ mencoder entree.avi -o sortie.avi -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=... $ mencoder entree.avi -ovc lavc -lavcopts vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37, 12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27, 29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79 :inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26, 28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34, 36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg Créer un rip MPEG-4 ("DivX") de haute qualité à partir d'un DVD Une question fréquemment posée est "Comment faire le meilleur rip DVD possible ? Peut importe la taille du fichier, je veux simplement la meilleure qualité." Cette question est peut être un peu mal posée. Après tout, si vous ne vous souciez pas de la taille du fichier, pourquoi ne pas simplement copier le flux MPEG-2 du DVD entier ? Bien sûr, votre AVI finira par faire 5Go, mais si vous voulez la meilleure qualité et ne vous souciez pas de la taille, ceci est probablement votre meilleure option. En fait, la raison pour laquelle vous voulez convertir un DVD en MPEG-4 est que vous tenez réellement compte de la taille du fichier. Il est difficile de proposer une recette sur la façon de créer des rips DVD de très haute qualité. Il y a de nombreux facteurs à prendre en compte, et vous devriez comprendre ces détails, ou vous serez déçus par les résultats. Ci-dessous nous allons examiner quelques-uns de ces problèmes, et voir un exemple. Nous supposerons que vous utilisez libavcodec pour encoder la vidéo, bien que cette exemple théorique s'applique également à d'autres codecs. L'hypothèse principale de ce guide est que vous n'avez pas de contraintes de taille particulière et que perdre des octets en échange d'une meilleure qualitée ne vous dérange pas. Bien que la plupart des informations présentées ici soient utiles dans la plupart des cas, une partie peut vous poser problème si vous prévoyez une certaine taille, pour faire tenir une vidéo sur un CD par exemple. Quantiseur constant contre 2-passes Il y a trois approches possibles pour encoder une vidéo: débit constant (CBR), quantiseur constant, et deux-passes (ABR, ou débit moyen). Dans chacun de ces modes, libavcodec sépare les trames vidéos en macroblocs de 16x16 pixels et applique ensuite un quantiseur sur chaque macrobloc. Plus le quantiseur est bas, plus la qualité est bonne et le débit est gros. La méthode utilisée par libavcodec pour déterminer quel quantiseur utiliser varie et est très réglable (ceci est une simplification à l'extrème du processus, mais il est utile de comprendre le principe de base). Lorsque vous spécifiez un débit constant, libavcodec encodera la vidéo en éliminant juste assez de détails pour rester en dessous du débit demandé. Si vous ne vous souciez pas de la taille de fichier, vous pouvez utiliser le CBR et spécifier un débit infini (en pratique, cela signifie une valeur suffisamment grande pour ne pas avoir de limite, comme 10000Kbit). Sans réelle restriction de débit, en définitive libavcodec utilisera le plus bas quantiseur possible pour chaque macrobloc (tel que spécifié par , qui vaut 2 par défaut). Si vous spécifiez un débit si bas que libavcodec soit forcé d'utiliser un quantiseur plus haut, alors vous êtes certainement en train de massacrer la qualité de votre vidéo. En général, vous devriez éviter le CBR si vous vous souciez de la qualité. Avec un quantiseur constant libavcodec utilise le même quantiseur, spécifié par l'option , sur chaque macrobloc. Si vous voulez un rip de la meilleure qualité possible, là encore en ignorant le débit, vous pouvez utiliser . Cela donnera le même débit et le même PSNR (Peak Signal-to-Noise Ratio, rapport signal sur bruit de crête) que le CBR avec =infini et la valeur de par défaut (2). Le problème de la quantification constante est qu'elle utilise le quantiseur demandé même si le macrobloc n'en a pas besoin. En fait, il doit être possible d'utiliser un quantiseur plus haut sur un macrobloc sans sacrifier de la qualité visuelle. Pourquoi gaspiller des bits avec un quantiseur inutilement bas ? Avec l'encodage deux-passes, la première passe va ripper le film comme en CBR, mais va garder un log des propriétés de chaque trame. Ces données sont ensuites utilisées pendant la seconde passe de façon à choisir intelligemment quels quantiseurs utiliser. Lors des scènes d'action rapide ou celles ayant peu de détails, des quantiseurs plus haut seront utilisés, et durant les scènes avec peu de mouvements ou avec beaucoup de détails, des quantiseurs plus bas seront utilisés. Si vous utilisez , alors vous gaspillerez des bits. Si vous utilisez , vous n'aurez pas la meilleur qualité de rip. Supposez que vous rippez un DVD avec , et que le résultat soit 1800Kbit. Si vous faites un encodage 2-passes avec , la vidéo produite aura une meilleur qualité pour le même débit. Maintenant que vous êtes convaincu que l'encodage 2-passes est la bonne méthode, la vraie question est maintenant de savoir quel débit utiliser. La réponse est qu'il n'y a pas de réponse unique. Idéalement, vous devriez choisir un débit offrant un compromis entre qualité et taille de fichier. Cela varie suivant la source vidéo. Un bon point de départ pour un rip de très haute qualité est environ 2000Kbit, plus ou moins 200Kbit. Pour les vidéos comportant beaucoup d'actions ou de détails, ou si vous avez de très bon yeux, vous pouvez choisir 2400 ou 2600. Pour certains DVDs, vous pourriez voir une différence à 1400Kbit. C'est une bonne idée que d'essayer sur des scènes à différents débits pour s'en rendre compte. Découpage et Redimensionnement La résolution native des DVDs est de 720x480 pour NTSC, et 720x576 pour PAL, mais il y a un drapeau d'aspect qui spécifie si il s'agit de plein-écran (4:3) ou d'écran large (16:9). La plupart (si ce n'est tous) des DVDs écran large ne sont pas tout à fait 16:9, ils peuvent être soit en 1.85:1, soit en 2.35:1 (cinémascope). Cela signifie qu'il va y avoir des bandes noires qu'il va falloir découper. MPlayer fournit un filtre de détection de bandes noires qui détermine la zone à découper (). Puisque MPEG-4 utilise des macroblocs de 16x16, vous devez vous assurer que la vidéo que vous encodez est un multiple de 16, sinon la qualité sera dégradée, surtout en bas débit. Vous pouvez faire ceci en arrondissant la longueur et la largeur du rectangle de découpage au multiple de 16 le plus proche. Pour le découpage, vous pouvez augmenter l'offset y de la moitié de la différence entre l'ancienne et la nouvelle hauteur de façon à ce que la vidéo obtenue soit prise à partir du centre de la trame. Et à cause de la façon dont est faite la vidéo des DVDs, assurez-vous que l'offset soit un nombre pair (en fait, en règle générale, n'utilisez jamais de nombres impairs lorsque vous découpez et redimensionnez une vidéo). Si perdre quelques pixels vous incommode, vous pouvez préférer redimensionner la vidéo. Nous allons voir cela dans l'exemple plus bas. De plus, faites attention aux pixels "à moitié noirs" sur les bords. Assurez-vous de les découper également, ou sinon vous gaspillerez des bits qui seraient mieux dépensés ailleurs. Une fois tout ceci fait, vous obtiendrez probablement une vidéo dont les pixels n'ont pas vraiment un rapport de 1.85:1 ou 2.35:1, mais quelque chose d'approchant. Vous pouvez calculer le nouvel ratio d'aspect manuellement, mais MEncoder offre une option pour libavcodec appelée qui le fera pour vous. Ne redimmensionnez pas la vidéo pour obtenir des pixels carrés, à moins que vous n'aimiez gaspiller votre espace disque. Le redimensionnement devrait être appliqué lors de la lecture, et le lecteur utilisera l'aspect stocké dans le fichier AVI pour déterminer la résolution appropriée. Audio L'audio est un problème bien plus simple à résoudre: laissez-le juste tel-quel. Même les flux AC3 5.1 sont au plus en 448Kbit/s, dont chaque bit est utile. Vous pouvez être tenté de convertir l'audio en Ogg Vorbis de haute qualité, mais ne pas avoir de décodeur AC3 aujourd'hui ne veut pas dire que vous n'en aurez pas demain. Préparez le futur de vos rips DVDs en gardant le flux AC3. Interlacing and Telecine La plupart des films sont tournés en 24 fps. Puisque NTSC est en 29.97 fps, certains traitements doivent être appliqués pour l'adapter au débit NTSC. Ce procédé est appelé 3:2 pulldown, plus communément appelé téléciné (car le pulldown est souvent appliqué durant la phase de conversion en téléciné), et de façon simpliste, il fonctionne en ralentissant le film à 23.976 fps, et en répétant chaque quatrième trame. Aucun traitement spécifique, n'est cependant appliqué pour la vidéo des DVDs PAL, qui tournent à 25 fps (techniquement, PAL peut être téléciné, ce qui est appelé 2:2 pulldown, mais ceci n'est pas un problème en pratique). Le film 24 fps est simplement lu en 25 fps. Le résultat est que la vidéo tourne légèrement plus vite, mais à moins d'être un alien, vous ne verrez pas la différence. La plupart des DVDs ont de l'audio dont le ton a été corrigé, donc quand elle est joué à 25 fps cela sonne correctement, même si la piste audio (et donc le film entier) a une durée 4% plus courte que les DVDs NTSC. Puisque la vidéo d'un DVD PAL n'a pas été altérée, vous n'avez pas à vous soucier du débit. La source est en 25 fps, et votre rip sera en 25 fps. Par contre, si vous rippez un film d'un DVD NTSC, vous pourriez avoir besoin d'appliquer du téléciné inverse. Pour les films tournés en 24fps, la vidéo du DVD NTSC est soit en 29.97 fps téléciné, soit en 24 fps progressif et prévu pour être téléciné à la volée par le lecteur DVD. D'un autre coté, les séries TV sont généralement seulement entrelaçées, pas télécinées. Ce n'est pas une règle absolue: certaines séries TV sont entrelaçées (comme Buffy contre les vampires) alors que d'autres sont un mélange de progressif et d'entrelaçé (comme Dark Angel, ou 24 heures chrono). Il est fortement recommandé de lire la section Comment gérer le téléciné et le désentrelacement avec les DVDs NTSC pour apprendre à gérer les différentes possibilités. De toute façon, si vous rippez surtout des films, vous rencontrerez soit de la vidéo 24 fps progressive, soit télécinée, et dans ce cas vous pouvez utiliser le filtre . Filtrage En général, vous devriez appliquer le moins de filtres possible de façon à rester proche de la source DVD originale. Le découpage des bandes noires est souvent nécessaire (comme décrit ci-dessus), mais pas le redimensionnement. Bien réduire la résolution soit parfois préférée à l'usage de quantiseurs plus élévés, nous voulons éviter ces deux choses: rappelez-vous qu'au début nous avions décidé de privilégier la qualité sur l'encombrement disque. De plus, n'ajustez pas le gamma, le contraste, la luminosité, etc. Ce qui s'affiche correctement sur votre matériel ne sera pas forcément pareil sur d'autres. Ces ajustements ne devraient être appliqués que lors de la lecture. Une chose que vous pouvez faire, cependant, est de passer la vidéo au travers d'un très léger filtre anti-bruit, tel que . De nouveau, il s'agit d'utiliser ces bits de la meilleur façon: pourquoi les gaspiller à encoder du bruit alors que vous pouvez en rajouter durant la lecture ? Augmenter les paramètres de améliorera la compressibilité, mais si vous augmentez trop, vous risquez de dégrader l'image. Les valeurs suggérées ci-dessus () sont très conservatrices; vous êtes libre d'expérimenter des valeurs plus grandes et d'observer les résultats par vous-même. Exemple Donc, vous venez d'acheter votre tout nouvel exemplaire de Harry Potter et la Chambre des Secrets (édition panoramique, bien sûr), et vous voulez ripper ce DVD pour pouvoir l'ajouter à votre PC Home Cinema. C'est un DVD zone 1, donc en NTSC. L'exemple ci-dessous s'applique également au PAL, à part l'option qui devient inutile (car le débit sortant est le même que le débit entrant), et bien sûr les dimensions de découpe seront différentes. Après avoir lançé , nous suivons la méthode décrite dans la section Comment gérer le téléciné et le désentrelacement avec les DVDs NTSC et découvrons que la vidéo est en 24 fps progressif, ce qui signifie que nous n'aurons pas besoin d'utiliser un filtre de téléciné inverse, tel que ou . Ensuite, il faut déterminer le rectangle de découpage approprié, nous utilisons donc le filtre cropdetect: mplayer dvd://1 -vf cropdetect Assurez-vous de vous placer dans une trame parfaitement remplie (tel qu'une scène claire), et vous verrez sur la console de sortie de MPlayer: crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58) Nous relisons ensuite le film avec ce filtre pour tester sa justesse: mplayer dvd://1 -vf crop=720:362:0:58 Et nous voyons que c'est parfait. Ensuite, nous nous assurons que la largeur et la hauteur sont des multiples de 16. La largeur est correcte, par contre la hauteur ne l'est pas. Comme nous sommes bon en maths, nous savons que le multiple de 16 le plus proche de 362 est 352. Nous pourrions simplement utiliser , mais il serait plus sympatique de retirer un peu du haut et du bas pour aligner au centre. Nous rabotons la hauteur de 10 pixels, mais nous ne voulons pas augmenter le y-offset de 5 pixels car c'est un nombre impair et cela pourrait affecter la qualité. À la place, nous allons augmenter le y-offset de 4 pixels: mplayer dvd://1 -vf crop=720:352:0:62 Une autre raison de raser les pixels du haut et du bas est de nous assurer que nous avons éliminé les éventuels pixels à moitié noirs. Notez que si votre vidéo est télécinée, assurez-vous que le filtre (ou tout autre filtre de téléciné inverse que vous décidez d'utiliser) apparaisse bien au début de la chaine de filtres, avant le découpage. Si la vidéo est entrelaçée, désentrelacez-la avant le découpage (si vous voulez garder la vidéo entrelaçée, alors assurez-vous que votre offset de découpage soit un multiple de 4). Si perdre ces 10 pixels vous gène vraiment, vous pouvez diminuer les dimensions au plus proche multiple de 16. La chaine de filtre ressemblera alors à: -vf crop=720:362:0:58,scale=720:352 La réduction de résolution implique qu'un certain nombre de détails sera perdu, bien que cela sera probablement imperceptible. Augmenter les dimensions donnera une moins bonne qualité (à moins que vous n'augmentiez le débit). Le découpage supprime ces pixels. C'est un compromis à faire à chaque fois. Par exemple, si le DVD a été fait pour la télévision, vous devriez éviter de redimensionner verticalement, puisque l'échantillonnage de lignes correspond à la façon dont a été enregistré le contenu. Après inspection, nous voyons que le film comporte pas mal d'action et un haut niveau de détail, nous choisissons donc un débit de 2400Kbit. Nous sommes maintenant prêts pour l'encodage 2 passes. Passe 1: mencoder dvd://1 -ofps 23.976 -oac copy -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \ -o Harry_Potter_2.avi La passe 2 est identique, sauf que nous spécifions : mencoder dvd://1 -ofps 23.976 -oac copy -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \ -o Harry_Potter_2.avi Les options vont énormément augmenter la qualité au détriment du temps d'encodage. Il y a peu de raisons d'enlever ces options quand notre but principal est la qualité. Les options selectionnent une fonction de comparaison qui donne une meilleure qualité que les paramètres par défaut. Vous pouvez faire des expérimentations avec ce paramètre (référez-vous à la page de manuel pour les valeurs possibles) car les différentes fonctions peuvent avoir un impact important sur la qualité suivant la source. Par exemple, si vous trouvez que libavcodec produit trop d'artefacts de type "blocs", vous pouvez essayer de sélectionner le NSSE expérimental en tant que fonction de comparaison via . Pour ce film, le fichier AVI final fera 138 minutes et environ 3Go. Comme la taille n'est pas importante, c'est tout à fait acceptable. En revanche, si vous voulez un fichier plus petit, vous pouvez essayer un débit plus faible. Augmenter le débit ne sert pas à grand chose, donc même si on peut obtenir une nette amélioration de 1800Kbit à 2000Kbit, l'amélioration ne sera peut être pas visible au dessus de 2000Kbit. Vous êtes libre d'expérimenter jusqu'à ce que vous soyez satisfait du résultat. Puisque la vidéo d'origine est passée par un filtre anti-bruit, vous pouvez en rajouter pendant la lecture. Ceci, en conjonction avec le filtre de post-processing , augmente énormément la qualité perçue et permet l'élimination d'artefacts de la vidéo. Avec l'option de MPlayer, vous pouvez faire varier la quantité de post-traitement faite par le filtre spp suivant la quantité de temps processeur disponible. De plus, à ce moment, vous pouvez ajouter une correction gamma et/ou de couleur pour l'adapter à votre affichage. Par exemple: mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3 Comment gérer le téléciné et le désentrelacement avec les DVDs NTSC Introduction Je vous suggère de visiter cette page si vous ne comprenez pas la plupart de ce qui est écrit dans ce document: Cette adresse mène à une description relativemement simple et complète de ce qu'est le téléciné. Pour des raisons techniques imputables aux limitations des premiers postes de télévision, toute vidéo destinée à être joué sur un poste de télévision NTSC doit être à 59.94 champs par seconde. Les téléfilms et les émissions sont souvent filmés directement à 59.94 champs par seconde, alors que la majorité les films de cinéma sont filmés à 24 ou 23.976 trames par seconde. Quand le DVD d'un film est masterisé, la vidéo est convertie pour la télévision en utilisant un procédé appelé téléciné. Sur un DVD, la vidéo n'est en fait jamais stockée à 59.94 champs par seconde. Pour une vidéo qui était à l'origine en 59.94, chaque paire de champs est combinée pour former une trame, donnant ainsi 29.97 trames par seconde. Les lecteurs DVD lisent ensuite un drapeau contenu dans le flux vidéo pour déterminer si les lignes paires -ou impaires- doivent former le premier champ. En général, le contenu à 23.976 trames par seconde reste tel quel quand il est encodé pour un DVD, et le lecteur DVD doit "téléciner" à la volée. Parfois, cependant, la vidéo est téléciné avant d'être stockée sur le DVD; même si elle était à l'origine à 23.976 trames par seconde, elle passe à 59.94 champs par seconde, et est stockée sur le disque à 29.97 trames par seconde. Quand on regarde des trames individuelles formées à partir d'une vidéo en 59.94 champs par seconde, téléciné ou similaire, l'entrelacement est clairement visible partout où il y a du mouvement, car un champ (disons, les lignes paires) affiche l'action se déroulant un 1/59.94 ème de seconde plus tard que le suivant. La lecture de vidéo entrelaçée sur un ordinateur est horrible parce que le moniteur a une résolution supérieure et parce que la vidéo est affichée trame-après-trame plutôt que champ-après-champ. Notes: Cette section ne s'applique qu'aux DVDs NTSC, et non PAL. Les exemples de l'utilisation de MEncoder présents dans ce document ne sont pas destinés à un usage tel-quel. C'est juste le minimum requis pour encoder des vidéos de cette catégorie. Comment faire des bons rips DVD ou paramétrer libavcodec pour la meilleure qualité possible est en dehors du cadre de ce document. Il y a deux notes de bas de page spécifiques à ce guide, notée ainsi: [1] Comment trouver quel type de vidéo vous avez Progressive La vidéo progressive est filmé à l'origine en 23.976 fps, et stockée sur le DVD sans modification. Quand vous jouez un DVD progressif avec MPlayer, MPlayer affiche la ligne suivante dès le début de la lecture du film: demux_mpg: 24fps progressive NTSC content detected, switching framerate. À partir de maintenant, demux_mpg ne devrait jamais dire qu'il trouve du "30fps NTSC content." Quand vous regardez une vidéo progressive, vous ne devriez jamais voir d'entrelacement. Attention, cependant, car il y est parfois mêlé un peu de téléciné, là où vous ne vous y attendriez pas. J'ai rencontré des DVDs de programmes TV qui avaient une seconde de téléciné à chaque changement de scène, ou dans des endroits apparemment aléatoires. J'ai vu une fois un DVD qui était en progressive durant la première moitié, et téléciné dans la seconde. Si vous voulez être vraiment certain, vous pouvez scanner tout le film: mplayer dvd://1 -nosound -vo null -benchmark L'utilisation de indique à MPlayer de jouer le film aussi rapidement qu'il le peut; cependant, suivant votre matériel, cela peut prendre un certain temps. Chaque fois que demux_mpg signale un changement de débit, la ligne suivante indiquera l'heure à laquelle le changement s'est produit. Parfois la vidéo progressive est appelé "soft-telecine" parce qu'elle est destinée à être téléciné par le lecteur DVD. Télécinée La vidéo télécinée a été filmée en 23.976, mais a été téléciné avant d'être gravée sur DVD. MPlayer ne signale pas (toujours) les changements de débit quand il joue de la vidéo téléciné. En regardant de la vidéo téléciné, vous verrez des artefacts d'entrelacement qui semblent "clignoter": ils apparaissent et disparaissent rapidement. Vous pouvez les regarder plus attentivement avec par exemple mplayer dvd://1 -speed 0.1 Sautez à une partie avec du mouvement. Regardez le motif des trames à l'apparence entrelacées et progressives. Si le motif que vous voyez est PPPII,PPPII,PPPII,... alors la vidéo est téléciné. Si vous voyez un autre motif, alors la vidéo a été téléciné en utilisant une méthode non-standard et MEncoder ne peut pas la convertir en progressive sans perte. Si vous ne voyez aucun motif, c'est certainement que la vidéo est entrelaçée. Parfois la vidéo téléciné est appelée "hard-telecine". Entrelaçée La vidéo entrelaçée a été filmé à 59.94 champs par seconde, et stockée sur DVD à 29.97 trames par seconde. L'entrelacement est le résultat de la combinaison des paires de champs dans des trames, car dans chaque trame, chaque champ est séparé du suivant par 1/59.94 secondes. Comme pour la vidéo téléciné, MPlayer ne devrait jamais signaler les changements de débit pendant la lecture de contenu entrelaçé. Si vous regardez attentivement une vidéo entrelaçée avec , vous verriez que chaque trame est entrelaçée. Progressive et télécinée mélangées Toute la vidéo "progressive et téléciné mélangées" était à l'origine en 23.976 trames par seconde, mais certaines parties ont fini en téléciné. Quand MPlayer joue cette catégorie, il oscillera (de manière répetée) entre "30fps NTSC" et "24fps progressive NTSC". Regardez le bas de la sortie texte de MPlayer pour voir ces messages. Vous devriez regarder les sections "30fps NTSC" pour vérifier que c'est effectivement du téléciné, et pas juste de l'entrelaçé. Progressive et entrelacée mélangées Dans ce type de vidéo, le contenu progressif et entrelaçé, ont été collés l'un après l'autre. Cette catégorie ressemble tout à fait à "progressive et télécinée mélangées", jusqu'à ce que vous examiniez les sections 30fps et voyez qu'elles n'ont pas de motif de téléciné. Comment encoder chaque catégorie Comme mentionné au début, les exemples d'utilisation de MEncoder ne sont pas destinés a être utilisé directement; ils démontrent juste les paramètres minimum pour encoder chaque catégorie. Progressive La vidéo progressive ne requiert aucun filtrage spécial pour l'encodage. Le seul paramètre que vous devez utiliser est . Sinon, MEncoder essaiera d'encoder en 29.97 fps et dupliquera des trames. mencoder dvd://1 -nosound -ovc lavc -ofps 23.976 Télécinée Le téléciné peut être inversé pour retrouver le contenu original en 23.976, en utilisant un procédé appelé inverse-téléciné. MPlayer contient deux filtres pour accomplir cela: et . Vous pouvez lire la page de man pour voir leurs différences, mais pour les DVDs je n'ai jamais eu de problèmes avec . Notez que vous devriez toujours appliquer l'inverse-telecine avant tout redimensionnement; à moins que vous ne sachiez vraiment ce que vous faites, appliquez l'inverse-téléciné également avant tout découpage [1]. De nouveau, est également requis. mencoder dvd://1 -nosound -vf ivtc=1 -ovc lavc -ofps 23.976 Entrelaçée Dans la plupart des cas pratiques, il n'est pas possible d'extraire une vidéo progressive complète à partir de contenu entrelaçé. La seule manière d'y parvenir sans perdre la moitié de la résolution verticale est de doubler le débit et d'essayer de "deviner" ce qui est destiné a constituer les lignes correspondantes pour chaque champ (cela a des inconvénients - voir la méthode 3). Encodez la vidéo sous forme entrelaçée. Normalement, l'entrelacement entre en conflit avec la qualité de compression de l'encodeur, mais libavcodec a deux paramètres spécifiques pour gérer un peut mieux le stockage de la vidéo entrelaçée: et . De plus, utiliser est fortement recommandé [2] car il encodera les macroblocs en tant que non-entrelaçés là où il n'y a pas de mouvement. Notez que n'est PAS requis ici. mencoder dvd://1 -nosound -ovc lavc -lavcopts ildct:ilme:mbd=2 Utilisez un filtre de désentrelacement avant l'encodage. Il y a beaucoup de de choix parmi les filtres disponibles, chacun ayant ses avantages et ses inconvénients. Consultez pour voir ce qui est disponible (recherche sur "deint"), et cherchez sur les listes de diffusion de MPlayer pour trouver des discussions à propos des divers filtres. De nouveau, le débit ne change pas, donc il n'y a pas de . De même, le désentrelacement devrait être appliqué après le découpage [1] et avant le redimensionnement. mencoder dvd://1 -nosound -vf pp=lb -ovc lavc Malheureusement, cette option est boguée avec MEncoder; elle devrait bien fonctionner avec MEncoder G2, mais il n'est pas encore disponible. Vous pourrez avoir des plantages. De toute façon, le but de est de créer des trames complètes à partir de chaque champ, ce qui aboutit à un débit de 59.94. L'avantage de cette approche est qu'aucune donnée n'est perdue; par contre, puisque chaque trame provient d'un seul champ, les lignes manquantes doivent être remplies d'une manière ou d'une autre. Il n'y a pas vraiment de bonne méthode pour générer les données manquantes, et donc le résultat sera similaire à celui obtenu en utilisant certains filtres de désentrelacement. Générer les lignes manquantes créé d'autres problèmes, également, simplement parce que la quantité de données double. Donc, un débit d'encodage supérieur est requis pour maintenir la qualité, et plus de puissance CPU est utilisée pour l'encodage et le décodage. tflields a de nombreuses options différentes pour la création des lignes manquantes de chaque trame. Si vous utilisez cette méthode, alors référez vous à la page de manuel, et choisissez l'option qui donne le meilleur résultat avec votre matériel. Notez qu'en utilisant vous devez spécifier et en indiquant un débit double de celui de la source. mencoder dvd://1 -nosound -vf tfields=2 -ovc lavc -fps 59.94 -ofps 59.94 Si vous comptez diminuer la taille de la vidéo énormément, vous pouvez extraire et encoder uniquement l'un des deux champs. Bien sûr, vous allez perdre la moitié de la résolution verticale, mais si vous prévoyez de réduire d'au plus 1/2 de l'original, la perte ne se vera pas trop. Le résultat sera un fichier progressif à 29.97 trames par seconde. La procédure est d'utiliser , et ensuite couper [1] et dimensionner correctement. Rappelez-vous que vous n'avez qu'à ajuster le redimensionnement pour compenser la réduction par deux de la résolution verticale. mencoder dvd://1 -nosound -vf field=0 -ovc lavc Progressive et téléciné mélangées De façon à transformer la vidéo progressive et télécinée mélangée en vidéo entièrement progressive, l'inverse-telecine doit être appliquée sur les parties télécinées. Il y a deux filtres qui accomplissent nativement cette tâche, mais la plupart du temps la meilleure solution est d'utiliser deux filtres en conjonction (lire la suite pour plus de détails). Actuellement la méthode la plus fiable pour traiter ce type de vidéo est, plutôt que d'appliquer un inverse-téléciné sur les parties télécinées, de téléciner les parties non-télécinées et d'ensuite appliquer l'inverse-téléciné sur la vidéo entière. Cela vous semble confus ? softpulldown est un filtre qui parcoure une vidéo et la rend entièrement télécinée. Si vous faites suivre softpulldown de soit , soit , le résultat final sera entièrement progressif. Le découpage et le redimensionnement devrait être fait après les opérations d'inverse-téléciné, et est requis. mencoder dvd://1 -nosound -vf softpulldown,ivtc=1 -ovc lavc -ofps 23.976 est conçu pour appliquer un inverse-telecine sur la vidéo télécinée tout en laissant les données progressives intactes. Pullup ne fonctionne pas vraiment avec l'actuel MEncoder, cependant, il est vraiment prévu pour l'utilisation avec MEncoder G2 (quand celui-ci sera prêt). Il fonctionne bien sans , mais est requis pour empêcher un affichage haché. Avec , cela échoue parfois. Le problème provient du comportement de MEncoder qui saute des trames pour maintenir la synchronisation entre l'audio et la vidéo: il saute des trames avant de les envoyer dans la chaine de filtres, plutôt qu'après. Résultat, est parfois privé des données dont il a besoin. Si MEncoder saute trop de trames consécutives, il vide les tampons de et le fait planter. Même si MEncoder ne saute qu'une seule trame, ne pourra toujours pas la voir, et finira par opérer sur une séquence incorrecte de trames. Même si cela ne provoque pas de plantage, ne sera pas capable de prendre les bonnes décisions pour ré-assembler les trames progressives, et va soit mal faire correspondre les champs, soit sauter plusieurs champs pour compenser. Je n'ai jamais utilisé moi-même, mais voici ce qu'en dit D Richard Felker III:
Il est bon, mais AMA il essaie de désentrelacer plutôt que de faire de l'inverse-téléciné trop souvent (tout comme les lecteurs DVD & et les TVs progressives), ce qui donne un scintillement horrible et d'autres artefacts. Si vous voulez l'utiliser, vous devrez au moins passer un peu de temps à régler les options et à regarder le résultat pour vous assurer que tout va bien.
Progressive et entrelaçée mélangées Il y a deux options pour gérer cette catégorie, chacune d'elle étant un compromis. Vous devriez décider suivant la durée/position de chaque type. Traitez-la en tant que progressive. Les parties entrelaçées apparaîtront comme entrelacées, et certains champs devront être sautés, donnant une lecture un peu saccadée. Vous pouvez utiliser un filtre de post-traitement si vous le voulez, mais celui-ci pourrait légèrement dégrader les parties progressives. Cette option ne devrait vraiment pas être utilisée si vous comptez afficher la vidéo sur un périphérique entrelaçé (avec une carte TV, par exemple). Si vous avez des trames entrelaçées dans une vidéo de 23.976 trames par secondes, elles seront télécinées avec les trames progressives. La moitié des "trames" sera affichée durant trois champs (3/59.94 secondes), provoquant un effet tremblotant "saut dans le temps" qui rend particulièrement mauvais. Si vous essayez cela, vous devez utiliser un filtre de désentrelacement comme ou . Cela peut être aussi une mauvaise idée pour l'affichage progressif. Des paires de champs consécutifs seront sautés, provoquant une discontinuité qui peut être plus visible avec la seconde méthode, qui montre certaines trames progressives deux fois. La vidéo en 29.97 trames par seconde est déjà un peu hachée car elle devrait être lue en 59.94 champs par seconde, donc les trames dupliquées ne se voient pas trop. De toutes manières, il vaut mieux prendre en compte autant votre contenu que comment vous comptez l'afficher. Si votre vidéo est 90% progressive et que vous ne comptez pas l'afficher sur une TV, vous devriez préférer une approche progressive. Si c'est seulement à moitié progressif, vous voudrez probablement l'encoder comme si elle était complètement entrelaçée. Traitez-la comme entrelaçée. Certaines trames des parties progressives devront être dupliquées, causant des saccades irrégulières. De nouveau, les filtres de désentrelacement peuvent légèrement dégrader les parties progressives.
Notes de bas-de-page À propos du découpage: Les données vidéo des DVDs sont stockées dans un format appelé YUV 4:2:0. Dans la vidéo YUV, luma ("luminosité") et chroma ("couleur") sont stockés séparemment. Dans une image YUV 4:2:0 il n'y a qu'un pixel chroma pour quatre pixels luma, car l'oeil humain est plus sensible à la couleur qu'à la luminosité. Dans une image progressive, chaque carré de quatre pixels luma (deux de chaque coté) a un pixel chroma en commun. Vous devez découper l'YUV progressif en une résolution paire, et utiliser des offsets pairs. Par exemple, est correct mais ne l'est pas. Quand vous traitez de l'YUV 4:2:0 entrelaçé, la situation est un peu plus compliquée. Au lieu de quatre pixels luma dans une trame partageant un pixel chroma, chaque ensemble de quatre pixels luma dans un champ partage un pixel chroma. Quand les champs sont entrelaçés pour former une trame, chaque scanline est haute de un pixel. Maintenant, au lieu d'avoir quatre pixels dans un carré, il y a deux pixels cote-à-cote, et les deux autres pixels sont cote-à-cote deux scanlines plus bas. Les deux pixels luma des scanlines intérmédiaires proviennent de l'autre champ, et donc partagent un pixel chroma différent avec deux pixels luma deux scanlines après. Toute ce joyeux désordre fait qu'il est nécessaire d'avoir des dimensions de découpage et des offsets multiples de quatre. L'horizontal peut rester pair. Pour la vidéo télécinée, je recommande de découper après le procédé d'inverse-téléciné. Une fois la vidéo en progressive, vous n'aurez plus qu'à découper par nombres pairs. Si vous voulez vraiment profiter du léger gain de temps qu'offre le découpage en premier, vous devez couper verticalement par multiples de quatre ou sinon le fitre d'inverse-téléciné n'aura pas suffisemment de données. Pour la vidéo entrelaçée (non télécinée), vous devez toujours découper verticalement par multiples de quatre à moins d'utiliser avant le découpage. À propos des paramètres d'encodage et de la qualité: Le fait que je recommande ici ne signifie pas qu'il ne doit être utilisé ailleurs. Avec , est une des deux options de libavcodec qui augmentent le plus la qualité, et vous devriez toujours au moins les utiliser toutes les deux à moins que la vitesse d'encodage soit primordiale (par ex. encodage temps-réel). Il y a beaucoup d'autres options qui augmentent la qualité (et diminuent la vitesse d'encodage) mais c'est en dehors du cadre de ce document.