L'encodage avec MEncoderCré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 ?
Une autre question est "Comment dois-je faire pour avoir un rip de la meilleure
qualité possible ?" Peu 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.
Si cela vous semble un peu trop pour vous, vous devriez utiliser une des
interfaces graphiques listées dans Section
MEncoder sur la page de notre projet.
Avec ceci, vous serez suffisamment armé pour produire des rips de bonne qualité sans
trop réfléchir car ces outils utilisent des réglages astucieux à votre place.
Préparation à l'encodage : identification des sources, du matériel et du framerate
Avant même de penser à encoder un film, il est nécessaire de passer par quelques étapes
préliminaires.
La première et plus importante étape avant l'encodage sera la détermination du
type de contenu utilisé. Si la source physique provient d'un DVD ou bien d'un
média de diffusion comme la télé par câble ou le satellite, elle sera stockée
sous deux formats : NTSC pour l'Amérique du nord et le Japon, et PAL pour
l'Europe et les autres pays...
C'est important de la prendre en compte ce paramètre: ceci est juste le format
de présentation à la télévision, ce n'est en aucun
cas le format original du film.
L'expérience montre que le NTSC est bien plus dur à encoder car il y a plus
d'élément d'identification dans la source.
Afin de produire l'encodage désiré, vous devez connaître le format original.
Négliger cette étape aura pour conséquence des résultats hasardeux, des artefacts
bizarroïdes, des trames en double ou ignorées.
En plus d'avoir des résultats bizarres, le rendu global risque d'en souffrir avec une
qualité médiocre par unité du bitrate.
Identification du framerate de la source
Voici une liste de types de sources matérielles, il est possible que vous
trouviez la vôtre avec ces propriétés :
Film standard: produit pour une diffusion
cinématographique avec 24 images par secondes (fps).
Vidéo PAL: Enregistré par une caméra à 50 trames
par secondes. Une trame est, par exemple, l'ensemble des lignes paires ou des lignes impaires d'une image.
La télévision a été créée pour afficher l'image de cette manière (en fait une version bas de gamme
de compression analogique).
L'oeil humain est censé compenser cette alternance de trames mais dès lors que vous
comprenez ce fonctionnement, vous ne regarderez plus la télévision de la même façon.
Deux trames ne font pas une image complète, car elles
sont capturées avec un décalage de 1/50e de seconde, et donc, elles ne s'alignent pas
parfaitement sauf s'il y a du mouvement
Vidéo NTSC : Enregistré par une caméra à
60000/1001 trames par secondes, ou 60 trames par secondes dans l'ère noir/blanc.
A part cela, c'est similaire au PAL.
Animation: Habituellement dessiné pour du 24fps,
mais on peut en trouver de toute sorte.
Animation Graphique, Effets Spéciaux: il est
possible d'en trouver avec n'importe quel framerate, mais en général, le NTSC utilise 24fps et 30fps, le PAL utilise plutôt
25fps.
Vieux films: le framerate est généralement plus
bas.
Identification de la source matérielle
(?)Les films composés de trames sont dits 'progressive',
alors que ceux composés de champs indépendant sont appelés
soit entrelacé soit vidéo - ce dernier terme est plutôt ambigu.
Pour compliquer le tout, certains films utiliset un mélange de plusieurs des
techniques vues ci-dessus.
La distinction la plus importante qui doit être faire entre ces formats
est que certains utilisent les trames alors que d'autres, les champs.
Même si un film a été préparé pour être projeté
sur une télévision (DVDs inclus), il est converti dans un format basé sur des champs.
Les nombreuses méthodes peuvent être rassemblé sous le terme de redimensionnement comme
l'infâme NTSC "3:2 telecine" qui en est une variété.
Sauf si l'oeuvre originale est basée sur des champs (et avec le même fieldrate),
le format d'image obtenu sera différent de celui d'origine.
Plusieurs variétés communes de redimensionnement :Redimensionnement PAL 2:2 : Le meilleur de tous.
Chaque image est affichée pendant la durée de deux trames, par extraction des lignes
paires et impaires, puis en les affichant par alternance.
Si l'original est à 24 images par secondes, ce redimensionnement augmentera la vitesse
du film de 4%.
Redimensionnement PAL 2:2:2:2:2:2:2:2:2:2:2:3:
La douzième image est affiché pendant la durée de 3 frames au lieu de deux. Cela
permet d'éviter le problème de l'accélération de 4% mais rend le processus trés
difficile à inverser.
Cette technique est généralement utilisé dans les productions musicales où
l'accélération de 4% endommagerait sérieusement la qualité musicale.
Télécine NTSC 3:2: Les images sont alternativement
affichées pendant une durée de 3 ou 2 frames. Cela provoque un redimensionnement de 2,5 fois le
ratio original. Le résultat est très légèrement ralenti de 60 frames par secondes à 60000/1001
frames par seconde pour maintenir le fieldrate NTSC
Redimensionnement NTSC 2:2: Utilisé pour le NTSC avec une
source en 30fps. Le rendu est correct, similaire au redimensionnement PAL 2:2
Il y aussi d'autres manière de convertir des vidéos NTSC et PAL
mais ce sujet s'éloigne des limites de ce guide.
Si vous désirez encoder un film par exemple, le mieux reste de trouver
une copie de l'original.
La conversion entre ces deux formats est hautement destructrice et il n'est
pas possible de l'inverser proprement, donc l'encodage sera d'autant plus
mauvais s'il est fait à partir d'une source déjà converti.
Quand des vidéos sont stockées sur un DVD, des groupes de trames
consécutives sont rassemblés en une image, même si elles ne sont pas censées
être affichées au même moment.
Le standard MPEG-2 utilisé dans les DVDs et la télévision numérique fournit
un moyen d'encoder les images originales progressivement et de stocker le
nombre de trames pour chaque image qui devra être affiché avant cette
image.
Si cette méthode autilisée, on dit que le film est "soft-telecined"
("contenu progressif"), car le processus de rendu est
appliqué directement par le lecteur DVD et non pas en dégradant le film.
Ce cas est de loin le mieux car il peut être tout aussi bien inversé
(en fait, non pris en compte) par l'encodeur puisqu'il préserve la qualité maximale.
Malgré cela, beaucoup de DVD et d'émissions studios diffusées n'utilisent pas
des techniques d'encodage propres mais plutôt des films "hard telecine" ("contenu brut")
dans lesquels les trames sont dupliquées puis encodées en MPEG-2.
Les étapes pour gérer correctement ce genre de cas seront évoquées plus tard dans ce guide.
Pour l'instant, nous allons vous donner quelques indices pour définir à quelle
source vous avez à faire :
Domaine du NTSC:
Si MPlayer affiche que le nombre d'image a changé pour
24000/1001 quand vous regardez votre film, et qu'il ne change plus du tout, il est
quasiment certain que c'est un contenu progressif qui a été "soft teleciné".
Si MPlayer affiche un nombre d'images alternant
entre 24000/1001 et 30000/1001 et que les bords de l'image affichent des espèces de "peignes", alors
il y a plusieurs possibilités.
Les segments à 24000/1001 fps ont très certainement un contenu progressif,
"soft teleciné" mais les parties 30000/1001 fps ont pu être "hard-telecinées"
depuis un contenu 24000/1001 fps ou 60000/1001 frames par secondes d'une vidéo NTSC.
Utilisez les mêmes conseils que ceux pour les deux cas qui suivent.
Si MPlayer montre un nombre d'images constant et que chacune
des images avec des mouvements semble avoir un "peigne" sur les cotés, alors votre film
est une vidéo NTSC à 60000/1001 images par seconde.
Si MPlayer montre un nombre d'images constant et que deux
images sur cinq apparaissent avec des "peignes", le film est "hard teleciné" avec un contenu
à 24000/1001fps.
Domaine du PAL:
Si vous ne voyez pas de "peigne" sur les cotés, le film a un redimensionnement 2:2.
Si vous voyez une alternance régulière d'effet "peigne", de pseudo-entrelacement
toutes les demi-secondes, alors le film a subi une réduction 2:2:2:2:2:2:2:2:2:2:2:3.
Si vous voyez une sorte d'entrelacement constant dans les scènes en mouvement,
le film est en PAL avec 50 trames par secondes.
Astuce:MPlayer peut lire un film très lentement en utilisant
l'option -speed ou en le jouant image par image.
Essayer d'utiliser l'option à 0.2 afin de regarder le film
très doucement ou presser la touche "." pour avancer d'une frame
à l'autre et ainsi identifier la "signature" d'un type de redimensionnement si
celui-ci n'est pas visible à vitesse normale.
Quantiseur constant contre deux passes
Il est possible d'encoder votre film suivant une large gamme de qualités.
Les compresseurs vidéo modernes et quelques pre-codec de compression
(anti-bruit et redimensionnement) permettent d'obtenir un
trés bon rendu pour un film grand écran de 90-110 minutes sur 700Mo.
De plus, la plupart des films longs peuvent approcher un résultat parfait
avec un fichier d'un taille de 1400Mo.
Il y a trois approches possibles pour encoder une vidéo: débit constant
(CBR), quantification constante, et deux-passes (ABR, ou débit moyen).
La complexité des images d'un film et le nombre de bits utilisés pour
cette compression fera varier grandement le résultat d'une scène à l'autre.
Les encodeurs vidéo modernes savent s'ajuster en fonction des besoins par
variation du débit vidéo (bitrate).
Cependant, dans un mode simple comme le CBR, le compresseur ne connaît pas
le besoin en débit vidéo pour les scènes à venir, donc il ne sait pas définir
un bitrate moyen sur la longueur du film.
Les modes avancés actuels, comme le mode 'multipass' (plusieurs passages), prennent
en compte les statistiques des passes précédentes pour l'encodage, fixant le
problème ci-dessus.
Note:
La plupart des codecs qui supportent la compression ABR supportent seulement deux
passages alors que d'autres comme le x264,
le XviD et libavcodec supportent des
passes multiples qui permettent d'affiner à chaque fois les statistiques (ces améliorations seront cependant négligeables
après la quatrième passe).
Dans cette section, deux passages ou plus peuvent être utilisés indifféremment.
Dans chacun de ces modes, libavcodec
sépare les trames vidéos en macroblocs de 16x16 pixels et applique ensuite
un quantificateur sur chaque macrobloc. Plus le quantificateur est bas, plus
la qualité est bonne et le débit est gros. La méthode utilisée par
libavcodec pour déterminer quel
quantificateur utiliser varie et est configurable (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, le compresseur vidéo codera la vidéo
en laissant de côté les détails, et ceci, d'autant plus
que le bitrate sera petit. Si la taille du fichier vous importe peu,
vous pouvez fixer un débit contant et infini. (En pratique, cette
valeur aura une limite haute dans les 10000Kbit). Sans réelle
restriction de débit,
libavcodec utilisera le plus
bas quantificateur possible pour chaque macrobloc (tel que spécifié par
, qui vaut 2 par défaut).
Si vous spécifiez un débit si petit que
libavcodec doit utiliser un quantificateur 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 quantificateur constant libavcodec utilise
le même quantificateur, spécifié par l'option , sur chaque macrobloc.
Si vous voulez un rip de la meilleure qualité possible, cette fois 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 quantificateur
demandé même si le macrobloc n'en a pas besoin. En fait, il doit être possible
d'utiliser un quantificateur plus haut sur un macrobloc sans sacrifier de la
qualité visuelle. Pourquoi gaspiller des bits avec un quantificateur inutilement
bas ? Votre microprocesseur a assez de ressources car il a le temps, mais votre
disque lui a une taille fixée.
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 quantificateurs utiliser. Lors des scènes d'action rapide ou celles ayant
beaucoup de détails, des quantificateurs plus élevés seront utilisés. Pendant les
scènes avec peu de mouvements ou avec peu de détails, ce sera des quantificateurs
plus bas.
Si vous utilisez , alors vous gaspillerez des bits.
Si vous utilisez , vous n'aurez pas la meilleur
qualité de rip. Supposez que vous rippiez un DVD avec ,
et que le résultat soit 1800Kbit. Si vous faites un encodage en deux passes avec
, la vidéo produite aura une
meilleure qualité pour le même débit.
Maintenant que vous êtes convaincu que l'encodage deux passes est la bonne méthode,
la vraie question est maintenant de savoir quel débit utiliser. Il n'y a pas de réponse
toute faite. Idéalement, vous devriez choisir un débit offrant un compromis entre
qualité et taille de fichier. Cette valeur varie selon la source vidéo.
Si la taille ne compte pas, un bon point de départ pour un rip de très haute
qualité est environ 2000kbps, plus ou moins 200kbps.
Pour les vidéos comportant beaucoup d'actions ou de détails, et/ou si vous avez
de très bon yeux, vous pouvez choisir 2400 ou 2600.
Pour certains DVDs, vous pourrez ne pas voir de différence à 1400kbps. C'est une bonne
idée que d'essayer sur des scènes avec différents débits pour se rendre compte.
Si vous avez fixé une taille limite, alors il faudra se livrer à un petit calcul
pour obtenir le débit souhaité. Mais avant cela, il faudra définir l'espace que
vous réserverez aux piste(s) audio et vous devrez
les ripper en premier.
Vous pourrez alors calculer le débit souhaité avec l'équation suivante :
Débit = (taille_fichier_final_en_Mo - taille_fichier_son_en_Mo) *
1024 * 1024 / durée_en_secondes * 8 / 1000
Par exemple, pour ramener deux heures de films sur un cd de 702Mo avec une piste
son de 60Mo, le débit vidéo sera alors de :
(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 = 740kbpsContraintes pour une compression efficace
De par la nature intrinsèque de la compresssion MPEG, de nombreux
paramètres entrent en jeu afin d'obtenir une qualité maximale.
Le MPEG découpe la vidéo en carré de 16x16 appelé macroblocs. Chacun
d'entre eux est composé de 4 petits (8x8) blocs contenant des informations sur
la luminosité (intensité) ainsi que de 2 blocs (donc à résolution moitié)
contenant des informations chromatiques (pour les teinte rouge-cyan et bleu-jaune).
Même si la longueur et la largeur du film ne sont pas des multiples de 16,
l'encodeur utilisera des macroblocs de 16x16 pour couvrir l'image entiere,
l'espace restant sera alors perdu.
Si votre intérêt est de conserver une très bonne qualité, utiliser des résolutions
non multiples de 16 n'est pas une bonne idée.
La plupart des DVDs ont aussi des bandes noires sur les bords. Négliger
ces parties peut altérer la qualité de plusieurs manières.
La compression MPEG est aussi dépendante du domaine de transformation des
fréquences, en particulier du "Discrete Cosine Transform (DCT)" (une espèce de
transformée de Fourier). Ce type d'encodage est efficace pour les
formes et les transitions douces, mais fonctionne moins bien avec les contours
acérés. Afin d'encoder correctement, il demandera plus de bits, sinon des
artefacts de compression apparaitront, aussi connus sous le nom de "ringing".
La transformation en fréquence (DCT) prend place séparément dans chaque
macrobloc (en fait, dans chaque bloc), donc le problème n'apparaitra
que si un bord franc se situe dans ce bloc. Si vos bordures noires commencent
exactement sur un multiple de 16, ce ne sera pas un problème. En pratique,
les bordures ne sont jamais bien alignées, et il sera certainement
nécessaire de les couper pour éviter ces défauts.
En plus des transformations au niveau des fréquences, la compression MPEG
utilise des vecteurs de mouvements représentant les changements d'une image
à la suivante. Ces vecteurs de mouvements voient leur utilité grandement
réduite quand la prochaine image à un contenu totalement différent. Quand
il y a un mouvement qui sort de la région encodée, cela ne pose pas de problème
aux vecteurs. En revanche, cela peut poser des problèmes avec les bandes noires:
Pour chaque macrobloc, la compression MPEG stocke un vecteur identifiant
quelle partie de l'image précédente devrait être copiée dans les macroblocs
de l'image suivante. Seules les différences devront alors être encodées.
Si le macrobloc s'étend et prend en compte une des bordures noire de l'image,
alors le vecteur de mouvement écrasera la bordure noire. Cela veut dire que de
nombreux bits sont gaspillés pour renoircir la bande noire ou alors (plus probable) que le vecteur
de mouvement ne sera pas du tout utilisé et que tout le macrobloc
devra alors être ré-encodé. Dans tous les cas, l'efficacité de l'encodage en est
grandement améliorée.
Une fois encore, ce problème n'existe que si les lignes des bordures noires
ne sont pas un multiple de 16.
Enfin, supposons que l'on ait un macrobloc à l'intérieur d'une image et qu'un
objet se déplace dans ce bloc proche d'un bord de l'image. Malheureusement, le
MPEG ne sait pas faire "copier juste la partie qui dans l'image et laisser tomber
la partie noire". Donc la partie noire sera alors aussi copiée, ce qui fait encore gaspiller
beaucoup de bits pour compresser un morceau d'image qui n'est pas sensé être là.
Si l'objet en mouvement parcourt depuis le bord noir jusque dans la zone encodée,
le MPEG dispose d'optimisation spéciales pour copier en répétition des pixels
depuis le bord de l'image lorsque celui vient de l'extérieur de la partie encodée.
Ces optimisations deviennent inutiles quand le film à des bandes noires. Contrairement
aux problèmes 1 et 2, même les bordures noires multiples de 16 n'aident pas dans ce cas.
Malgré le fait que les bordures soient entièrement noires et quelles ne changent jamais,
il y a toujours un minimun de macroblocs impliqués.
Pour toutes ces raisons, il est préférable de couper entièrement ces bandes
noires. Dans la même optique, s'il y a une partie contenant du bruit ou de la
distorsion d'image prés d'une bordure, la coupure l'enlevera et permettra d'avoir
une amélioration significative de la qualité de l'encodage. Les puristes parmi les vidéophiles
souhaiteront préserver l'encodage le plus proche possible de
l'original, à moins qu'ils n'encodent avec un quantificateur constant, la qualité
gagnée après la suppression des bandes noires améliorera grandement la qualité
finale de l'encodage au regard des quelques informations perdues.
Découpage et Redimensionnement
Rappel de la section prédécente, la taille de l'image finale devra être un
multiple de 16 (en hauteur et largeur). Cela peut être réalisé par découpage (recadrage),
redimensionnement ou les deux.
Lors du recadrage, il y a quelques règles qui doivent être respectées sous peine
d'endommager votre film.
Le format normal YUV, 4:2:0 stocke l'information chromatique (couleur) de manière
sous-échantillonnée, par exemple, la chrominance est échantillonée en moitié moins
de temps que l'information de la luminance (intensité). Observez le schéma
suivant, L indique un échantillon de luminance, et C pour la chrominance.
LLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLL
Comme vous pouvez le voir, les lignes et colonnes de l'image naturelle
viennent par deux. Ainsi, votre découpe devra absolument
avoir des dimensions paires. Si ce n'est pas le cas, les informations chromatiques et de
luminosité ne seront plus alignées.
En théorie, il est possible de découper d'une dimension impaire, mais cela
demandera alors un re-sampling des informations chromatique, ce qui,
potentiellement, génère des pertes d'information et n'est pas supporté par
le filtre de redimensionnement.
Ensuite, la vidéo entrelacée est échantillonée de la façon suivante:
Top fieldBottom fieldLLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLL
Comme vous pouvez le voir, le motif n'apparaissent pas pour moins de
4 lignes. Ainsi, pour la vidéo entrelacée, le décalage (offset) sur y
et la hauteur pour le recadrage doivent être multiples de 4.
La résolution native pour un DVD NTSC est 720x480 et 720x576 pour un
PAL, mais il y a un indicateur d'aspect qui spécifie que le mode est
plein-écran (full-screen 4:3) ou bien écran large (wide-screen 16:9).
Un grand nombre (pas tous) des DVDs en wide-screen ne respecte pas
strictement le format 16:9, mais est plutôt en 1,85:1 ou 2,35:1 (cinémascope).
Ceci signifie qu'il y aura des bandes noires à enlever sur la vidéo.
MPlayer fournit un filtre de détection pour le
recadrage qui déterminera le rectangle de découpe ().
Lancer l'application MPlayer avec l'option
et il affichera les informations nécessaires
pour faire une découpe propre afin d'enlever les bandes.
Vous devez laisser le film assez longtemps avec une utilisation complète de
l'image pour obtenir des valeurs précises.
Ensuite, testez les valeurs avec MPlayer en utilisant
les informations affichées par la ligne de commande ,
et éventuellement ajustez le rectangle de découpe.
Ce filtre offre la possibilité de modifier
sa position pendant le film. Faites bien attention à suivre les
recommendations précédentes en ce qui concerne les dimensions qui doivent
être des multiples de certaines valeurs ou bien
l'information chromatique ne sera plus alignée.
Dans certain cas, la réduction ne sera pas désirée. Ce redimensionnement
vertical est difficile dès lors que la vidéo est entrelacée, si vous désirez
la conserver ainsi, abstenez-vous d'appliquer un redimensionnement.
Si vous ne voulez pas redimensionner mais que vous voulez toujours utiliser
une dimension multiple de 16, il vous faudra couper au delà de la taille
normale. Ne coupez pas en dessous car les bandes noires ont un effet néfaste
pour la compression.
Le MPEG-4 utilisant des macroblos de 16x16, vérifiez bien que les dimensions
de la vidéo que vous encodez sont des multiples de 16, sinon vous dégraderez la
qualité de la vidéo encodée, surtout sur aux faibles débits. Le mieux est
d'arrondir les dimensions du rectangle de découpe au multiple de 16 le plus
proche.
Dans l'état initial, durant le redimensionnement, vous devrez augmenter le
décallage sur Y par la moitié de la différence entre l'ancienne et la nouvelle
taille pour que le résultat sur la vidéo se situe au milieu de l'image. Aussi,
la vidéo DVD étant samplée, vérifiez bien que l'offset est un nombre pair
(En fait, c'est une règle: n'utilisez jamais une valeur impaire lors d'un recadrage ou
lors d'un redimensionnement d'une vidéo). Si vous ne vous faites pas à l'idée de jeter quelques
pixels, vous préfèrerez sans doute redimensionner la vidéo par le zoom. Nous allons voir cela
dans l'example ci-dessous.
En fait, vous pouvez laisser faire l'option du filtre qui fera
tout cela pour vous: il a un paramètre optionnel qui vaut
16 par défaut.
Faites bien aussi attention aux pixels à "demi-noir" sur les bords. Assurez-vous qu'ils seront
enlevés lors de la découpe, autrement, ils seront une source de gaspillage de
bits alors qu'il pourrait être utilisés ailleurs.
Aprés tout ceci, vous obtiendrez une vidéo avec des pixels ne s'approchant
plus de 1,85:1 ou 2,35:1, mais quelque chose d'assez proche. Vous pouvez alors
calculer le ratio à la main mais MEncoder propose
une option appelée pour libavcodec
qui fera cela pour vous. N'agrandissez pas cette vidéo pour
d'obtenir des pixels carrés sauf si vous avez de l'espace disque à revendre.
Ce changement d'échelle se fera à la lecture, le lecteur utilisera les données
stockés dans le fichier AVI pour effectuer le bon rendu.
Malheureusement, tous les lecteurs vidéos n'appliquent pas ce redimensionnement
automatique, c'est peut-être pour cela que vous voudrez quand même procéder à ce redimensionnement.
Choix de la résolution et du débit
Si vous ne voulez pas encoder dans un mode à quantificateur constant, vous
devrez sélectionner un débit.
Le concept de débit (bitrate) est assez simple.
C'est un nombre (moyen) de bits qui sera utilisé pour stocker le film, exprimé
en seconde.
Normalement, le débit est mesuré en kilo-bits (1000 bits) par seconde.
La taille de votre film sur le disque dur équivaut à ce débit pendant toute sa
durée plus la taille de quelques entêtes (allez voir par exemple la section sur
les conteneurs AVI).
D'autres paramètres comme le redimensionnement, la découpe, etc.. ne modifieront
pas la taille du fichier sauf si vous y
changez aussi le bitrate.
Le bitrate n'est pas lié proportionnellement
à la résolution. Par exemple, la qualité d'un film en 320x240 à 200kbit/sec
ne sera pas pareille que celle d'un film en 640x480 à 800kbit/sec ! A cela, deux raisons:
Visuellement : vous allez remarquer d'autant plus
les artefacts de compression MPEG qui vous agrandissent l'image. Les artefacts
apparaissent sur des zooms de bloc (8x8). Vos yeux ne verront pas d'erreurs sur
4800 petits blocs mais les verront trés facilement sur seulement 1200 plus gros
blocs (dans le cas où vous regardez les deux en plein écran).
Théoriquement : quand vous réduisez une image,
vous continuez d'utiliser les mêmes tailles de bloc (8x8) pour la transformation
de la zone de fréquence, alors vous déplacez plus de données vers ces hautes
fréquences. Pour rester simple, chaque pixel contient alors plus de détails
qu'avant.
Même en diminuant l'image contenant 1/4 des informations dans le domaine spatial,
elle pourra contenir une large part des informations dans le domaine fréquentiel
(en partant du fait que les hautes fréquences sont peu utilisées dans le fichier
original en 640x480).
Les anciens guides recommandaient de choisir un débit et une résolution basés
sur "1 bit par pixel", mais ce n'est que peu justifié avec les raisons précédentes.
Une meilleure estimation reste que le débit augmente proportionellement à la
racine carrée de la résolution, donc une image 320x240 à 400kbit/sec
sera comparable à celle en 640x480 à 800 kbit/sec.
Cela n'a pas été strictement vérifié par la théorie ou une quelconque méthode empirique.
De plus, pour un film donné, le résultat variera en fonction du bruit, des détails,
du degré de mouvement, etc.. Il est futile de donner des recommendations générales
du style: un nombre de bits par longeur de diagonale (similaire au bit par pixel,
en utilisant la racine carrée).
Nous discuterons plus tard en détails de la difficulté de choisir le débit et la résolution.
Calcul de la résolution
Les étapes qui suivent vous guideront dans le calcul de la résolution de votre
encodage sans trop distordre la vidéo, en prenant compte des différents types
d'information de la source vidéo.
En premier lieu, il faut calculer le ratio d'aspect de l'encodage:
ARc = (Wc x (ARa / PRdvd )) / HcOù :
Wc et Hc sont la largeur et la hauteur de la vidéo redimensionnée,
ARa est le ratio affiché, généralement, 4/3 ou 16/9,
PRdvd est le ratio des pixels du DVD qui normalement est égal à 1,25 = 720/576
pour le PAL et 1,5 pour le NTSC (720/480),
Ensuite, vous pouvez calculer la résolution X et Y en tenant compte du facteur
de Qualité de Compression (CQ):
ResY = INT(SQRT( 1000*Bitrate/25/ARc/CQ )/16) * 16
et
ResX = INT( ResY * ARc / 16) * 16
D'accord, mais c'est quoi ce CQ ?
le CQ représente le nombre de bit par pixel et par image encodée. Grosso modo,
plus le CQ est grand, moins il y aura de chances de voir apparaître des artefacts
de compression.
Dans certain cas, vous êtes limité par la taille finale du film (1 ou 2 CDs par
exemple), il y a donc une limite totale du nombre de bits pour cette compression
et la qualité.
Le CQ dépends du débit, de la qualité intrinséque du codec vidéo et de la résolution
du film.
Une manière d'augmenter le CQ, c'est de réduire la résolution du film puisque le
débit est calculé en fonction de la taille final désiré et la longeur du final,
ce qui est constant.
Avec les codecs ASP MPEG-4 comme le XviD ou le
libavcodec, un CQ en dessous de 0,18 donne
généralement une image type mosaïque car il n'y pas assez de bits pour coder
les informations de chaque macroblocs (le MPEG-4, comme les autres codecs, groupe
les pixels compressés par blocs pour compresser l'image, s'il n'y a pas assez
de bits, les bords de ce macrobloc deviennent alors visible).
Donc il est raisonnable de prendre un CQ entre 0,20 et 0,22 pour un rip tenant
sur 1 CD, et entre 0,26 et 0,28 pour un rip de 2 CDs pour des options d'encodage
standard.
Des options plus avancées pour l'encodage sont disponibles ici pour le
libavcodec et le
XviD
afin d'obtenir une qualité similaire avec un CQ se situant maintenant entre
0,18 et 0,20 pour un rip 1 CD et 0,24 à 0,26 pour un rip 2 CDs.
Avec les codecs ASP MPEG-4 comme le x264,
vous pouvez utiliser un CQ se situant entre 0,14 et 0,16 avec des options standards
d'encodage, et même descendre entre 0,10 et 0,12 avec des
options avancées x264.
Veuillez bien noter que le CQ n'est qu'un indicateur, il dépend directement
du contenu encodé, un CQ de 0,18 sera suffisant pour un film de Bergman, mais
trop petit pour un film comme Matrix contenant beaucoup de scènes d'actions.
A l'opposé, il est inutile d'aller au delà de 0,30 pour le CQ, ce ne serait qu'une
perte de bits inutilisés sans que la qualité globale soit franchement meilleure.
Enfin, notez aussi, comme cela a été dit plus haut que les vidéos en
plus petites résolutions auront besoin d'un plus gros CQ (comparé à la résolution
d'un DVD par exemple) pour avoir un rendu correct.
Les filtres
Apprendre à utiliser les filtres vidéos de MEncoder
est essentiel afin de créer des fichiers bien encodés.
Toutes les transformations vidéos sont exécutées au travers de filtres, comme le recadrage (découpe),
le redimensionnement, l'ajustement de couleur, la suppression du bruit, l'ajustement
de la netteté, le désentrelacement, le téléciné, le téléciné inverse, ou l'effacement
des macroblocs trop visible, pour n'en nommer que quelques un.
Le grand nombre de formats d'entrées supportés, ainsi que la variété des
filtres disponibles dans MEncoder sont les
principaux avantages de l'applications par rapport aux autres applications.
avantages de
Les filtres sont chargés dans la chaine grâce à l'option -vf :
-vf filtre1=options,filtre2=options,...
La plupart des filtres prend en compte plusieurs options numériques, mais
la syntaxe varie d'un filtre à l'autre, aussi vaudrait-il mieux que vous
consultiez la page man pour les filtres que vous souhaitez utiliser.
Les filtres agissent sur la vidéo dans l'ordre de leur chargement, par exemple,
la chaine suivante :
-vf crop=688:464:12:4,scale=640:464
découpera d'abord une zone de 688x464 depuis le bord haut gauche mais avec un
décalage de (12;4), puis redimensionnera la vidéo pour obtenir du 640x464.
Certains filtres ont besoin d'être chargés au début de la chaine, car
ils doivent prendre des informations importantes auprès de l'encodeur vidéo
avant que d'autres filtres ne les altèrent.
Les principaux exemples sont le (postprocessing, seulement
dans le cas d'un estompage des macroblocs ou des enlèvements des artefacts de
compression), le (un autre post processus pour enlever les
artefacts MPEG), le (téléciné inverse), et (convertion du soft telecine en hard
telecine).
En général, il vaut mieux utiliser le moins de filtres possibles afin de conserver
l'encodage le plus proche possible du DVD source. Le découpage est souvent
nécessaires (voir raisions au dessus), mais évitez le redimensionnement de l'image
par le zoom. En revanche, le redimensionnement par un dé-zoom est parfois utilisé
pour des quantificateurs plus grand, mais nous désirons éliminer ces deux
choses : depuis le départ, nous souhaitons que les bits soient utilisés pour améliorer la
qualité de l'image.
De plus, n'ajustez pas le gamma, le contraste, la luminosité, etc. Ces réglages
peuvent être bons chez vous mais pas sur un autre écran. Ils doivent être exclusivement
faits lors du processus de lecture.
Une chose que vous pouvez vouloir faire est passer la vidéo à travers un filtre trés léger
anti-bruit, comme par exemple avec l'option . Une
fois de plus, ceci sert à optimiser l'utilisation des bits: pourquoi gaspiller des
bits à encoder du noir parasité alors que le rendu sera du noir pur à l'écran ?
L'augmentation du paramètre pourra augmenter la compression
globale, mais si vous l'augmentez trop, l'image sera alors dégradée. La valeur suggérée
ci-dessus () est plutot conservatrice, n'hésitez pas à
l'augmenter et à regarder le résultat par vous-même.
Interlacing et Télécine
La plupart des films sont tournés en 24 fps. Puisque le NTSC est en 30000/1001 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 à 24000/1001 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 marchent à 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 extra-terrestre, 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ée à 25 fps le son reste correct, 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é modifiée, vous n'avez pas à vous soucier
du débit. La source est en 25 fps, et votre rip sera en 25 fps. Cependant,
si vous rippez un film d'un DVD NTSC, vous pourrez 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 30000/1001 fps
téléciné, soit en 24000/1001 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 entrelacées, pas télécinées. Ce n'est pas une règle absolue: certaines
séries TV sont entrelacées (comme 'Buffy contre les vampires') alors que d'autres
sont un mélange de progressif et d'entrelacé (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 .
Encodage de vidéo entrelacées
Si la vidéo que vous désirez encoder est entrelacée (NTSC ou PAL), il vous faudra
alors choisir de la désentrelacer ou pas.
D'un coté, si vous la passez en désentrelacé, votre film sera utilisable en
progressive scan pour les écrans d'ordinateurs ou les projecteurs vidéos, mais
cela aura un prix : le fieldrate de 50 ou 60000/1001 trames par seconde passera à
25 ou 30000/1001 trames par seconde, et en gros, vous perdrez la moitié des
informations durant les scènes avec beaucoup de mouvements.
Ainsi, si vous encodez pour avoir des archives de haute qualité, il est recommandé
de ne pas désentrelacer.
Vous pouvez toujours desentrelacer le film au moment de la lecture avec des
appareils en progressive scan, et les les futurs lecteurs pourront désentrelacer
toutes les trames, en interpolant les 50 ou 60000/1001 frames par seconde depuis
la video entrelacée.
Des précautions spéciales doivent être prises lors d'un travail sur les vidéos entrelacées:
Les découpes sur la hauteur et l'offset sur Y doivent être des multiples de 4
Tout redimensionnement vertical doit être effectué en mode entrelacé
Les filtres de postprocessing et d'anti-bruit ne marcheront pas comme prévu,
sauf si vous faites bien attention à ce qu'ils travaillent sur une frame à la fois, et
ils peuvent endommager la qualité finale s'ils sont utilisés de manière incorrecte.
En tenant compte de ces recommandations, voici notre premier exemple :
mencoder capture.avi -mc 0 -oac lavc -ovc lavc -lavcopts \
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224
Remarquez l'option et .
Commentaires sur le synchronisation Audio/Vidéo
Le système de synchronisation audio/vidéo de MEncoder
a été créé dans le but de récupérer les fichiers avec des synchronisations abimées.
Il arrive que dans certain cas, il y ait des sauts ou des frames en double,
ce qui provoque une désynchronisation A/V, quand vous utilisez des entrées propres
(bien sûr, les problèmes de synchro A/V ne s'appliquent que si vous avez copié ou
rippé le son en meme temps que l'encodage de la vidéo).
Vous pouvez ensuite activer l'option de synchronisation ,
ou la mettre dans votre fichier de config ~/.mplayer/mencoder.
Elle ne sera utilisée qu'avec les sources vidéos propres (DVD, capture Télé,
bon rip MPEG-4, etc) mais pas pour des fichiers ASF/RM/MOV détériorés.
Si vous désirez une protection plus efficace contre les sauts ou multiplications
de frames, utilisez ces deux options : et .
Cela empêchera toutes synchronisation A/V, ou la copie de
frames à frames, donc vous ne pouvez l'utiliser avec aucun autre filtre qui
pourrait produire aléatoirement des ajouts ou sauts de frames, ou si votre source
a un framerate variable!
C'est pour cela que l'option n'est en général pas recommandée.
L'endodage audio nommé "3 passes" que MEncoder
supporte est connu pour provoquer des désynchronisations A/V
Ceci arrive généralement que lorsqu'il rentre en conjonction avec certains filtres,
donc il n'est pas recommandé d'utiliser ce mode "3 passes".
Cette fonctionnalité est conservée seulement pour une question de compatibilité
et pour certains utilisateurs experts qui savent quand il est bon de l'utiliser
ou pas. Si vous n'avez jamais entendu parler de ce mode "3 passes", oubliez le
maintenant.
On a rapporté des désynchronisations A/V lors d'un encodage depuis stdin
avec MEncoder. Ne faites pas ça ! Utilisez toujours
un fichier ou bien une source telle qu'un CD/DVD/etc.
Audio
L'audio est un problème bien plus simple à résoudre : si la qualité importe,
laissez-le flux audio tel quel.
Même les flux AC3 5.1 utilisent au plus 448Kbit/s, et tous ces bits sont utiles.
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
n'aurez pas demain. Préparez le futur de vos rips DVDs en gardant le flux AC3.
Vous pouvez conserver le flux AC3 en le copiant directement dans le flux vidéo
pendant l'encodage. On peut aussi extraire
le flux AC3 pour le mixer dans des conteneurs comme NUT ou Matroska.
mplayer fichier_source.vob -aid 129 -dumpaudio
-dumpfile son.ac3
mettra dans ce fichier sond.ac3 la piste audio numéro
129 du fichier source fichier_source.vob (NB : les fichiers
VOB d'un DVD utilise normalement une autre systeme de numéro pour l'audio, ce qui
pourrait dire que le fichier 129 serait la seconde piste de ce fichier VOB).
Parfois, il arrivera que vous n'ayez pas d'autre choix que de compresser le son
pour laisser plus de place à la vidéo. La plupart des gens optent alors pour le
codec MP3 ou le Vorbis.
Bien que le codec MP3 soit moyennement efficace, il est de mieux en mieux
accepté par les lecteurs de salon, mais cette tendance évolue.
N'utilisez pas l'option quand vous
encodez un fichier avec de l'audio, même si vous voulez encoder puis mixer l'audio
dans un deuxième temps.
Cela devrait pourtant marcher dans la plupart des cas, mais l'option
cache certains problèmes dans les réglages en ligne de commande.
En d'autres mots, avoir une piste audio pendant l'encodage vous permettra de ne pas
avoir ce type de messages comme Trop de paquets audio dans la mémoire tampon
, et vous aurez ainsi une synchronisation propre.
Vous aurez besoin de MEncoder pour traiter le son.
Vous pouvez copier la bande son originale pendant l'encodage avec l'option
ou la convertir en un "petit" 4kHz mono WAV PCM
avec l'option .
Autrement, dans certains cas, cela générera un fichier vidéo qui ne se synchronisera pas avec l'audio.
Cela arrive quand le nombre de frames vidéo dans le fichier source ne correspond
pas exactement à la longeur totale des frames audios ou bien lorsqu'il y a une
discontinuité ou des frames audio en trop ou manquantes. La meilleure
façon de traiter ces soucis est d'insérer un silence ou bien de couper l'audio
à ces point.
Cependant, MPlayer ne sait pas faire cela, si vous
avez démultiplexé l'AC3, vous pourrez l'encoder avec une application externe
(ou le transformer en PCM avec MPlayer), les supperpositions
de son seront mises de coté, et la seule manière de corriger cela au niveau de
la vidéo, sera de la couper pendant des erreurs.
Du moment que MEncoder voit l'audio pendant qu'il
encode la vidéo, il peut faire ces découpes (ce qui fonctionne habituellement
car elles se produisent lors d'un changement de scène avec fondu au noir) mais si
MEncoder ne voit pas l'audio, il encodera toutes les frames telles quelles
et elles ne tiendront pas dans le fichier audio final, quand, par exemple,
vous mélangerez la piste video et sonore dans un fichier Matroska.
Dans un premier temps, il faudra convertir le son du DVD en fichier WAV que
le codec audio peut utiliser en entrée.
Par exemple :
mplayer fichier_source.vob -ao pcm:file=fichier_destination_son.wav
-vc dummy -aid 1 -vo null
aura pour effet de prendre la seconde piste du fichier source_file.vob
pour la placer dans le fichier destination_sound.wav.
Vous devrez ensuite normaliser le son avec l'encodage, car les pistes
audio des DVDs sont généralement enregistrés avec un volume bas.
Vous pouvez utiliser l'outil normalize qui est
normalement disponible dans toutes les distributions.
Si vous utilisez Windows, un outil comme BeSweet
donnera le même résultat.
Il faudra ensuite l'encoder en Vorbis ou MP3.
Par exemple :
oggenc -q1 fichier_destination_son.wav
encodera fichier_destination_son.wav avec une qualité de 1,
ce qui est équivalent à environ 80Kb/s, soit le strict minimum en terme de qualité.
Notez que MEncoder ne sait pas
encore multiplexer des pistes audio Vorbis car il ne supporte que des conteneurs
en sortie du type AVI ou MPEG, ce qui signifie qu'il y aura des problèmes de
synchronisation lors de la lecture avec quelques lecteurs vidéo avec l'AVI
contenant un flux audio VBR en Vorbis.
Soyez sans crainte, ce document vous montrera comment y arriver avec un programme
tiers.
Le multiplexage
Maintenant que vous avez encodé votre vidéo, vous désirez très certainement
la multiplexer avec une ou plusieurs pistes audio vers un conteneur comme l'AVI,
le MPEG, le Matroska ou le NUT.
MEncoder ne supporte nativement que des conteneurs
AVI ou MPEG.
Par exemple :
mencoder -oac copy -ovc copy -o sortie_film.avi
-audiofile entrée_audio.mp2entrée_video.avi
Cela aura pour effet de fusionner le fichier vidéo entrée_video.avi
et le fichier audio entrée_audio.mp2 vers un seul fichier AVI
sortie_film.avi.
Cette commande marche avec le MPEG-1 layer I, II, ou III (plus connu sous le nom
de MP3), WAV et quelques autres formats audio.
Une des caractéristiques expérimentales de MEncoder
est le support de libavformat, étant
une librairie extraite du projet FFmpeg, supportant le multiplexage et démultiplexage
vers une grande variété de conteneurs.
Par exemple :
mencoder -oac copy -ovc copy -o sortie_film.avi
-audiofile entrée_audio.mp2entrée_video.avi
-of lavf -lavfopts format=asf
Cela fera strictement la meme chose que l'exemple d'avant, mais le conteneur
de sortie sera alors de l'ASF.
Prenez note : ce support est à l'état expérimental (mais s'améliore de jour en jour),
et ne marchera que si vous compilez MPlayer avec l'option
activée libavformat (ce qui veut dire que
les binaires en package ne marcheront certainement pas).
Amélioration de la fiabilité lors du multiplexage A/V
Vous avez sûrement pu expérimenter des problèmes de désynchonisation A/V
quand vous multiplexiez des pistes vidéos et audio A/V, même en ajustant
le délai de décalage du son, il y avait toujours un décalage.
Ceci est dû à l'utilisation de filtre qui dupliquent ou ajoutent des images,
comme le filtre téléciné inverse. Il est vivement conseillé d'utiliser le
filtre vidéo à la fin des filtres pour éviter
ce problème.
Sans l'option , si MEncoder
veut dupliquer une image, il va demander au multiplexeur de mettre en place
une marque sur le conteneur, ainsi la dernière image sera affichée pour maintenir
la synchronisation sans avoir à écrire une nouvelle image.
Avec l'option , MEncoder
affichera encore l'image dans le filtre au lieu de pousser la frame précédente.
Ce qui veut dire que l'encodeur recevra exactement les mêmes
frames plusieurs fois, puis les compressera.
Cela donnera un fichier légèrement plus grand, mais cela ne posera plus de
problèmes quand vous démultiplexerez ou multiplexerez vers un autre conteneur.
Vous n'aurez pas d'autre choix que d'utiliser avec certains
formats de conteneur peu liés à MEncoder comme ceux
supportés par libavformat, qui ne supportent
pas la duplication de frame au niveau du conteneur.
Limitations du conteneur AVI
Bien que ce soit le format de conteneur le mieux supporté aprés le MPEG-1, l'AVI a
des inconvénients majeurs.
Peut-être que plus évident est le surcoût.
Pour chaque morceau du fichier AVI, 24 octets sont utilisés dans les entêtes et dans l'index.
Ceci se traduit à environ 5Mo par heure, soit à peu près 1-2,5% de surcoût
sur un fichier de 700Mo. Cela peut ne pas sembler être important, mais c'est ce qui
fait la différence dans un fichier qui utilise 700 kbits/sec au lieu de 714 kbits/sec:
pour la qualité, chaque bit compte.
En plus de cette grosse inefficacité, l'AVI a aussi d'autres limitations importantes:
Seuls les contenus à fps constants peuvent être stockés. Ceci est particulièrement
limitant si vous voulez stocker des fichiers aux contenus hétérogènes (par
exemple un mélange de vidéo NTSC et de films).
En fait, il y a des modifications qui permettent de stocker des contenus à fps
variables dans un AVI, mais ils mutliplient par au moins 5 la taille des entêtes (déjà grosse).
L'audio dans un fichier AVI doit aussi avoir un débit constant (CBR) ou une
taille de 'frames' constante (par exemple : toutes les frames décodent le même
nombre d'échantillons).
Malheureusement, le meilleur codec, Vorbis, ne rentre pas dans ces critères.
Donc, si vous envisagez de stocker un fichier en AVI, vous devrez utiliser un
codec moins performant comme le MP3 ou l'AC3.
Aprés avoir dit tout cela, MEncoder ne supporte pas actuellement
l'encodage avec des fps variables ou le Vorbis;
Donc vous n'allez pas voir de limitation de MEncoder si vous
n'utilisez que cet outil pour produire vos encodages.
Pourtant, il est possible d'utiliser MEncoder uniquement pour
l'encodage vidéo, utiliser des outils externes pour l'encodage de l'audio et
multiplexer le tout vers un conteneur différent.
Le multiplexage avec le conteneur Matroska
Matroska est un conteneur libre, ouvert, qui offre de nombreuses options avancées
que, par exemple, l'AVI ne peut pas supporter.
Par exemple, le Matroska supporte le débit vidéo variable (VBR), un framerate
variable (VFR), chapitres, attachement de fichiers, code de détection d'erreur
(EDC) et des codecs A/V modernes comme le "Advanced Audio Coding" (AAC), le
"Vorbis" ou le "MPEG-4 AVC" (H.264) et d'autres choses non supporté par l'AVI.
Les outils nécessaires à la création de fichier Matroska sont appelés mkvtoolnix,
et sont disponibles dans la plupart des systèmes Unix mais aussi sous Windows.
Puisque Matroska est un standard ouvert, vous trouverez sûrement d'autres outils
qui vous conviendront parfaitement, mais comme mkvtoolnix est le plus connu, et
qu'il est supporté par Matroska lui même, nous allons parler de son utilisation.
La façon la plus simple assurément de démarrer avec Matroska, est d'utiliser
MMG, une interface graphique livrée avec mkvtoolnix,
et suivre le guide sur l'interface mkvmerge (mmg).
Vous pouvez multiplexer des fichiers vidéo et audio en utilisant la commande :
mkvmerge -o sortie.mkventree_video.avientre_son1.mp3entree_son2.ac3
Ceci aura pour effet de multiplexer le fichier vidéo entree_video.avi
avec les deux fichiers audio entre_son1.mp3 et entree_son2.ac3
dans un fichier Matroska sortie.mkv.
Matroska, comme mentionné plus tôt, est capable de faire bien plus, comme plusieurs
pistes audio (avec un réglage précis de la synchronisation audio/video), chapitres,
sous titres, coupures, etc... Merci de bien vouloir vous reporter à la documentation
de cette application pour plus d'informations.
Comment gérer le téléciné et l'entrelacement des DVDs NTSCIntroductionQu'est ce que le télécine ?
Je vous suggère de visiter la page suivante sous peine de ne rien comprendre
au document suivant :
http://www.divx.com/support/guides/guide.php?gid=10
Ce lien pointe vers une documentation relativement compréhensible sur le format
télécine.
Une note à propos des chiffres
Beaucoup de documents, entre autre le guide proposé ci-dessus, renvoie à un
nombre de trames par secondes pour la vidéo NTSC de 59.94 ce qui correspond à
29.97 images par secondes (pour le télécine entrelacé à et 23.976 fps pour
le progressive. Pour des raisons de simplicité, des documents utilisent les
chiffres arrondis de 60, 30 et 24.
En toute rigueur, ces nombres sont des approximations. Des vidéos Noire/Blanche
sont à 60 trames par secondes exactement, puis 60000/1001 a été choisi plus tard
pour la couleur mais aussi pour garder une retro-compatibilité avec les télévisions
en N/B. La vidéo numérique NTSC (comme le DVD) est aussi en 60000/1001 trames
par seconde. A partir de cela, la vidéo entrelacée et télécinée est dérivée vers
30000/1001 images par seconde ou pour les vidéos progressives en 24000/1001
images par secondes.
De plus anciennes versions de la documentation MEncoder
et plusieurs posts archivé provenant de liste de diffusion se référent encor à
59.94, 29.97, et 23.976.
Toute la documentation de MEncoder a été mise à jour
pour utiliser les valeurs fractionées, et vous devriez aussi les utilisées.
est incorrect.
doit être utilisé à la place.
Comment le téléciné est-il utilisé
Toutes les vidéos qui sont censé être affiché sur des télévision en NTSC
doivent être en 60000/1001 trames par secondes. Les téléfilms sont souvent
filmé directement à 60000/1001 trames par secondes, alors que la majorité des
films au cinéma sont en 24000/1001 images par seconde. Quand les séquences
cinématique pour le DVD sont masterisés, la vidéo est alors convertie pour la
télévision par un processus appelé le téléciné.
Sur un DVD, la vidéo n'est jamais vraiment stocké à 60000/1001 trames par seconde.
Si la vidéo est d'origine en 60000/1001, chaque paire de trames est alors combinée
pour former une image, ce qui donne 30000/1001 images par seconde. Les lecteurs de
DVD de salon lisent alors les drapeaux embarqués sur le flux vidéo pour déterminer
si la première ligne à afficher serait paire ou impaire.
Normalement, les contenus à 24000/1001 images par seconde restent comme cela
lorsqu'ils sont encodés pour un DVD, alors, les lecteurs DVD doivent faire
la conversion téléciné à la volée. Parfois, la vidéo est téléciné avant
d'être stocké sur le DVD, même si c'était originalement du 24000/1001 images
par seconde, cela devient 60000/1001 trames par seconde. Quand c'est stocké
sur le DVD, les trames sont combinées par pairs pour former 30000/1001 images
par seconde.
Quand on regarde les trames formées individuellement à partir de la vidéo en
60000/10001 champs par seconde, téléciné ou autre, l'entrelacement est
clairement visible qu'il y ait un mouvement ou non, parcequ'un champs (dit,
les lignes impaires) représente un moment dans le temps 1/(60000/1001) seconde
plutard que les autres. Jouer une vidéo entrelacé sur un ordinateur semble
dans les deux cas moches parceque l'écran a une résolution plus élévée et
parceque la vidéo se déroule trame après trame à la place de champs après champs.
Notes :
Cette section est seulement destinés aux DVDs NTSC, pas au PAL.
Les lignes d'exemple de MEncoder présenté dans ce
document ne sont pas à utiliser tel quel.
Elles sont juste là pour montrer le minimum à faire en relation avec ce chapitre.
Comment faire un bon rip DVD et des réglages finement étudiés avec libavcodec
afin d'obtenir une qualité maximale n'est pas l'objectif de ce document.
Quelques notes spéficiques à ce guide sont disponibles aux pieds de ce documents,
et sont liées comme ceci : [1]
Comment trouver le type de votre vidéo ?Progressive
Les vidéos progressives sont filmées initialement à 24000/1001 fps et stockées
sur le DVD sans altération.
Quand vous lisez un DVD progressive dans MPlayer,
il affiche la ligne suivante avant de commencer la lecture :
demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.
Dans l'état actuel des choses, demux_mpg ne devrait jamais être trouvé pour
"une vidéo NTSC à 30000/1001 fps."
Quand vous regardez une vidéo progressive, vous ne devrez voir aucun entrelacement.
Mais soyez attentif, il arrive parfois que du téléciné se glisse sans prévenir.
Il m'est arrivé de tomber sur des émissions de télévisions en DVD avec une
seconde de téléciné à chaque changement de scène, voir de temps en temps à une
zone totalement aléatoire. Une autre fois, la moitié du DVD était en progressif
et l'autre moitié en téléciné. Si vous n'êtes pas vraiment sûr,
vous pouvez toujours scanner le film entier :
mplayer dvd://1 -nosound -vo null -benchmark
L'utilisation de l'option fait lire MPlayer
aussi vite qu'il peut et en fonction du matériel, cela peut prendre un certain
temps. Chaque fois que demux_mpg génére une ligne, celle-ci vous donnera
immédiatement la valeur du changement .
Parfois, la vidéo progressive sur des DVDs considérés comme un "soft-telecine"
car il devrait être téléciné par le lecteur DVD.
Téléciné
Les vidéos téléciné sont d'abord filmées à 24000/1001 et seront télécinées
avant d'être gravé sur DVD.
MPlayer ne doit (jamais) détecter une changement de fps
quand une vidéo téléciné est lue.
Au visionnage d'une vidéo téléciné, vous verrer des artefacts d'entrelacement
donnant l'impression de "clignotement": apparaissant et disparaissant
rapidement.
Vous pouvez le voir plus précisement avec :
mplayer dvd://1
Chercher une partie en mouvement.
Utiliser la touche . pour avancer image par image.
Observer la forme donnée par l'entrelacement et les images progressives.
Si la forme que vous voyez semble comme PPPII,PPPII,PPPII,... alors la vidéo est
téléciné. Si ce n'est pas le cas, la vidéo a peut-être été téléciné selon des règles
non standard, MEncoder ne sait pas convertir un téléciné
non-standart vers du progressive sans dégradation. Si aucune forme n'est visible, c'est
alors sûrement une vidéo entrelacée.
Parfois, les vidéos télécinées sur les DVD sont "hard-teleciné". Le hard-teleciné
étant à 60000/1001 images par seconde, les lecteurs de DVD liront la vidéo sans modification.
Une autre façon de savoir si la source est télécinée ou non, est de la lire avec
l'option et depuis une ligne de commande
et de voir comment l'option voit d'images.
Si la source est téléciné, vous devriez voir sur la console une forme 3:2 avec des
alternances de 0+.1.+2 et 0++1.
L'avantage de cette technique et que vous n'avez pas besoin de visionner la
source pour l'identifier, donc utile pour automatiser l'encodage de vidéo, ou
bien effectuer ces procedures à distance même grâce à une connection internet lente.
Entrelacée
Les vidéos entrelacées sont d'abord filmées en 60000/1001 frames par seconde,
puis stockées sur le DVD à 30000/1001 frames par secondes. L'effet d'entrelacement
(souvent appelé "combing") est le résultat d'une combinaison de paires
de trames dans chaque frames. Chaque frame est supposée être caché 1/(60000/1001)
d'une seconde, quand elles sont affichées en même temps, la différence devient
visible.
Comme pour la vidéo télécinée, MPlayer ne devrait
jamais signaler un changement de framerate à la lecture de la vidéo entrelacée.
Si vous regardez une vidéo entrelacée de plus près, image par image avec la
touche ., vous pourrez voir l'entrelacement de chaque frame.
Mélange de vidéo progressive et télécinée
Toutes les vidéos qui "mélangent progressif et téléciné" ont été au
départ en 24000/1001 frames par seconde, et certaines parties ont été téléciné.
Quand MPlayer joue ce type de fichier, il jonglerai
(souvent rapidement) entre "30000/1001 fps NTSC" et "24000/1001 fps
NTSC progressif". Regardez la sortie des messages de MPlayer.
Vous devriez aller voir la section "30000/1001 fps NTSC" afin d'être
sûr que c'est vraiment téléciné, et pas seulement entrelacé.
Mélange de progressif et d'entrelacement
Dans les vidéos qui "mélangent progressif et téléciné", les flux vidéos
progressifs et entrelacés sont réunis ensemble.
Cette catégorie ressemble à du "mélange progressif et téléciné" jusqu'à
ce que vous examiniez la partie 30000/1001 fps et que vous vous apperceviez
qu'il n'y a pas de trace de téléciné.
Comment encoder chaque catégorie ?
Comme mentionné au départ, ces prochaines lignes de "HowTo"
MEncoder ne sont pas là pour être strictement
utilisé tel quel, mais pour informer des paramètres minimum d'encodages pour
chaque catégorie.
Le progressif
La vidéo progressive ne nécessite pas de filtre spécial pour l'encodage.
Pourtant, un paramètre ne doit pas omettre : . Sinon,
MEncoder essayera d'encoder à 30000/1001 fps et produira des
images en double.
mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001
Il n'est pas rare de se trouver avec une vidéo qui semble progressive mais qui
contient en fait quelques petites parties en téléciné. A moins d'être vraiment
sûr l'état de la vidéo, il sera préférable de traiter la vidéo comme
progressif et téléciné mélangés.
La perte de qualité est négligeable [3].
Téléciné
Les vidéos télécinés peuvent redonner le contenu original à 24000/1001 avec
un processus appelé inverse-téléciné.
MPlayer a plusieurs filtres disponibles pour ceci,
mais le meilleur, , est abordé à la section
mélange de progressif et téléciné.
L'entrelacé
Pour des raisons pratique, il n'est pas possible de retrouver entièrement une
vidéo progressive depuis une entrelacée. La seule manière de faire cela sans
perdre la moitié de la résolution verticale est de doubler le framerate et
essayer de "deviner" les lignes correspondantes pour chaque frame
(cela a des inconvénients, voir la méthode 3).
Encodez la vidéo sous une forme entrelacée. Normalement, l'enterlacement
détériore l'habilité de l'encodeur à bien compresser, mais libavcodec
possède deux paramètres spécifiquement fait pour stocker la vidéo entrelacé un
peu mieux: et . Aussi,
l'utilisation de est fortement recommandé [2]
parceque cela encodera les macroblocs non-entrelacé à des endroits où il n'y
a pas de mouvements. Notez que n'est pas nécessaire ici.
mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2
Utilisez un filtre de désentrelacement avant l'encodage. Il y a plusieurs de
ces filtres disponibles aux choix, chacun avec ces propres avantages et
désavantages. Consultez pour voir quels sont
ceux disponible (grep pour "deint"), et cherchez les
listes de diffusion MPlayer pour trouver plusieurs discussions sur les
différents filtres. Encor une fois, le framerate ne change pas, donc pas de
. Aussi, le désentrelacement devra être fait après
découpage [1] et
avant dimensionnement.
mencoder dvd://1 -oac copy -vf pp=lb -ovc lavc
Malheureusement, cette option est un bogué avec
MEncoder; cela devrait bien marché avec
MEncoder G2, mais on en est pas encor là. Vous
pourriez faire l'expérience de crash. Qu'importe, le but de
est de créer une frame complète à partir de chaque champs, ce qui
donne le framerate 60000/1001. L'avantage de cette approche est qu'aucune
donnée n'est jamais perdue; Cependant, vu que chaque frame viens avec seulement
un champs, les lignes manquantes doivent être interpolé d'une façon ou d'une autre.
Il n'y a pas de très bonne méthodes générant les données manquantes, et donc le
résultat sera un peu similaire à quand on utilise certains filtres de désentrelacement.
Générer les lignes manquantes créée d'autres problèmes, aussi bien,
simplement parceque le montant de donnée double. Donc, de plus haut bitrates
d'encodage sont requis pour maintenir la qualité, et plus de puissance CPU est
utilisé pour l'encodage et le décodage. tfields ont plusieurs différentes
options pour comment créer les lignes manquantes de chaque frame. Si vous
utilisez cette méthode, alors Référencez le manuel, et prenez n'importe quelle
option qui semble le mieux pour votre matériel. Notez que lors de l'utilisation de
vous
devez spécifier les deux options
et à deux fois le framerate de votre source originale.
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc -fps 60000/1001 -ofps 60000/1001
Si vous avez décidé de réduire la taille de façon dramatique, vous pouvez
extraire et encoder seulement un des deux champs. Bien sûr, vous perdrez la
moitié de la résolution verticale, mais si vous pensez la réduire au plus de
moitié par rapport à l'original, la perte ne sera pas trop grande. Le résultat
sera un fichier progressif à 30000/1001 frames par seconde. La procédure est
d'utiliser , puis de découper
[1] et de dimensionner
de manière approprié. Souvenez-vous que vous devrez ajuster la dimension pour
compenser la résolution verticale ayant été réduite de moitié.
mencoder dvd://1 -oac copy -vf field=0 -ovc lavcProgessif et téléciné mélangé
Afin de rendre une vidéo de progressive et téléciné mélangé à entièrement
progressive, les parties téléciné doivent être inverse-téléciné. Il y a trois
façons d'accomplir cela, comme décrit ci-dessous. Notez que vous devrez
toujours inverse-téléciné avant tout
redimensionnement; à moins que vous sachiez vraiment ce que vous faites,
inverse-téléciné avant aussi tout découpage, [1].
est nécessaire ici parceque la sortie vidéo
sera 24000/1001 frames par seconde.
est faite pour inverse-téléciné le matériel
téléciné tandis que les données progressives sont laissées intactes. Afin
de bien fonctionner, doit
être suivi par le filtre ou sinon MEncoder plantera.
est, cependant, la méthode la plus propre et la plus précise
disponible pour encoder le téléciné et le "progressif et téléciné mélangé".
mencoder dvd://1 -oac copy -vf pullup,softskip -ovc lavc -ofps 24000/1001
Une plus vieille méthode
est de, plutot que inverse-téléciné les parties téléciné, téléciner les
parties non-télécinées et ensuite inverse-téléciné la vidéo tout entière.
Cela semble confus? softpulldown est un filtre qui parcours une vidéo
et rend téléciné le fichier entier. Si nous faisons suivre softpulldown avec
soit ou soit , le résultat final
sera entièrement progressif. est nécessaire.
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
Je n'ai pas moi-même utilisé , mais voilà ce que
D Richard Felker III a dit:
Il est Correct, mais IMO qu'il tente de désentrelacer plutôt
que de faire l'inverse-téléciné trop souvent (tout comme les lecteurs de settop
DVD & les TVs progressive) ce qui donne des clignotements affreux et d'autre
artefacts. Si vous allez l'employer, vous devez au moins passer un peu de temps
pour affiner les options et observer la sortie premièrement pour être sûr que cela
ne mettent pas le bazar.
Progressif et entrelacé mélangé
Il y a deux options pour s'occuper de cette catégorie, chacune étant un
compromis. Vous devez prendre une décision basée sur la durée/localisation
de chaque type.
Traitez-la comme progressive. Les parties entrelacées sembleront entrelacées,
et certains des champs entrelacés devront être jeté, ayant pour résultat un
peu de sautillement inégal. Vous pouvez utiliser un filtre post-traitement si
vous le voulez, mais cela peut sensiblement dégrader les parties progressives.
Cette option devrait définitivement ne pas être utilisé si vous voulez
éventuellement afficher la vidéo sur un appareil entrelacé (avec une carte TV,
par exemple). Si vous avez entrelacé les frames dans une vidéo à 24000/1001
frames par seconde, ils seront téléciné en même temps que les frames progressive.
La moitié des "frames" entrelacées seront affichées pour une durée de trois champs
(3/(60000/1001) secondes), ce qui a pour résultat un effet pichenette de
"retour en arrière" ce qui semble tout à fait mauvais. Si vous tentez
quand même ceci, vous devez utiliser un filtre
désentrelaçant comme ou .
Cela peut tout aussi bien être une mauvaise idée pour l'affichage progressive.
Cela laissera tomber les paires consécutives de champs entrelacées, ayant pour
résultat une discontinuité qui peut être plus visible qu'avec la seconde méthode,
ce qui montre certaines frames progressive en double. Une vidéo entrelacé à
30000/1001 frames par seconde est déjà un peu variable parceque cela devrait
vraiment être montré à 60000/1001 champs par seconde, donc les frames dupliquées
ne tiennent pas.
Qu'importe la façon, il est recommandé de considérer votre contenu et comment
vous voulez l'afficher. Si votre vidéo est à 90% progressive et que vous ne
pensez pas la regarder sur une TV, vous devriez favoriser une approche progressive.
Si elle est seulement à moitié progressive, vous voudrez probablement l'encoder
comme si elle était entièrement entrelacée.
Traitez-la comme entrelacé. Certaines frames des parties progressive auront
besoin d'être dupliqué, ce qui résultera en un sautillement inégal. Encor une
fois, les filtres désentrelaçant peuvent passiblement dégrader les parties
progressives.
Notes de piedA propos de découpage:
Les données video d'un DVD sont stockées dans un format appelé YUV 4:2:0. Dans
la vidéo YUV, la luma ("luminosité") et le chroma ("couleur")
sont stockés séparément. Parceque l'oeil humain est somme toute moins sensible
à la couleur qu'il ne l'est à la luminosité, dans une image YUV 4:2:0 il y a
seulement un pixel de chroma pour 4 pixels de luma. Dans une image progressive,
chaque carré de quatre pixels de luma (deux sur chaque coté) ont un pixel de
chroma commun. Vous devez découper un YUV 4:2:0 progressif à des résolutions paires,
et utiliser un décalage pairs. Par exemple,
est correct mais
ne l'est pas.
Quand vous avez à faire à un YUV 4:2:0 entrelacé, la situation est un peu plus
compliqué. Au lieu que chaque série de quatres pixels de luma partage un pixel
de chroma dans une frame, tous les quatres pixels de luma
dans chaque champs partage un pixel de chroma. Quand les
champs sont entrelacés pour former une frame, chaque ligne de scan est de un
pixel de haut. Maintenant, au lieu que tout les quatres pixels de luma soient
dans un carré, ils sont deux pixels côte à côte, et les deux autres pixels
sont côte à côte deux lignes de scan plus bas. Les deux pixels de luma dans la
ligne de scan intermédiaire sont à partir de l'autre champs, et donc partage un
pixel de chroma différent avec deux pixels de luma deux lignes de scan plus loin.
Toute cette confusion rend nécessaire d'avoir des dimensions de découpe verticales
et des décalages en multiple de quatre. L'horizontal peut rester égal.
POur la vidéo téléciné, Je recommande que le découpage prenne place après l'inverse
téléciné. Une fois la vidéo progressive vous avez seulement besoin de découper par
nombre pairs. Si vous voulez vraiment gagner la légère accélération que la découpe
premièrement peut offrir, vous devez découper verticallement par multiples de quatre
ou bien le filtre inverse-téléciné n'aura pas les bonnes données.
Pour la vidéo entrelacé (pas téléciné), vous devez toujours découper verticallement
par multiples de quatre à moins que vous utilisiez avant de découper.
A propos des paramètres d'encodage et de la qualité:
Juste parceque Je recommande ici ne veut pas dire
que cela ne devrait pas être utilisé autre part. Avec ,
est l'une des deux options de libavcodec
qui augmente le mieux la qualité, et vous devriez toujours utiliser au moins
une des deux à moins que la baisse de vitesse d'encodage ne soit prohibitive
(e.g. encodage temps-réel). Il y a plusieurs autres options libavcodec
qui augmentent la qualité d'encodage (et réduisent la vitesse d'encodage) mais ceci est au delà
de la portée de ce document.
A propos de la performance de pullup:
Il est sûr d'employer (avec )
sur une vidéo progressive, et est habituellement une bonne idée à moins que
la source ait été définitivement vérifiée pour être enitèrement progressive.
La perte de performance est petite pour la plupart des cas. Sur une bare-minimum
d'encodage, ralenti MEncoder de 50%.
L'ajout du traitement du son et de avancé éclipsent cette
différence, ramenant vers le bas la baisse de performance d'utilisation de à 2%.
Encodage avec la famille de codec libavcodeclibavcodec
fourni un simple encodage à pas mal de formats vidéo et audio intéressant.
Vous pouvez encoder vers les codecs suivant (plus ou moins à jour):
codecs vidéo de libavcodecNom du codec vidéoDescriptionmjpeg
Motion JPEG
ljpeg
JPEG sans perte
h261
H.261
h263
H.263
h263p
H.263+
mpeg4
ISO standard MPEG-4 (DivX 5, compatible XviD)
msmpeg4
pre-standard MPEG-4 variant par MS, v3 (AKA DivX3)
msmpeg4v2
pre-standard MPEG-4 by MS, v2 (utilisé dans les vieux fichiers ASF)
wmv1
Windows Media Video, version 1 (AKA WMV7)
wmv2
Windows Media Video, version 2 (AKA WMV8)
rv10
RealVideo 1.0
rv20
RealVideo 2.0
mpeg1video
MPEG-1 video
mpeg2video
MPEG-2 video
huffyuv
compression sans perte
asv1
ASUS Video v1
asv2
ASUS Video v2
ffv1
codec vidéo sans perte de FFmpeg
svq1
Sorenson video 1
flv
Sorenson H.263 utilisé dans Vidéo Flash
dvvideo
Vidéo Numérique Sony
snow
codec basé sur l'ondelette expérimentale de FFmpeg
La première colonne contient les noms de codec qui devraient être passé après la
config de vcodec, comme ceci:
Un exemple avec la compression MJPEG:
mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copyCodecs audio de libavcodec=Nom de codec audioDescriptionmp2MPEG Layer 2ac3AC3, AKA Dolby Digitaladpcm_ima_wavIMA adaptatif PCM (4 bits par échantillon, compression 4:1)soniccodec avec/sans perte expérimental
La première colonne contient les noms de codec qui devra être passé après l'option
acodec, comme ceci:
Un exemple avec compression AC3:
mencoder dvd://2 -o title2.avi -oac lavc -lavcopts acodec=ac3 -ovc copy
Contrairement aux codecs vidéo de libavcodec,
ces codecs audio ne font pas un usage sage des bits qu'on leur donne
vu qu'ils manquent de certain modèle psychoacoustic minimal (le cas échéant)
ce que la plupart des autres implémentations de codec comportent.
Cependant, notez que tous ces codecs audio sont très rapide et fonctionne en dehors
de leur environnement à partir du moment où MEncoder a été
compilé avec libavcodec (ce qui est le
cas la plupart du temps), et ne dépend pas de librairies externes.
Options d'encodage de libavcodec
Idéalement, vous voudriez probablement juste dire à mencoder de passer en
mode "haute qualité" et passer à autre chose.
Ce serait sûrement sympa, mais malheureusement dur à implémenter vu que les
différentes options d'encodage donnent différents résultats de qualité
dépendamment de la source matériel.
C'est parceque la compression dépend des propriétés visuelles de la vidéo en
question.
Par exemple, une animation et un film d'action ont des propriétés très
différentes et nécessitent des options différentes pour obtenir un encodage
optimal.
La bonne nouvelle, c'est que certaines options ne devraient jamais être mise à
part, comme , , et .
Voir ci-dessous pour une description détaillée des options d'encodage commune.
Options à ajuster:vmax_b_frames: 1 ou 2 est bon, dépendamment
du film.
Notez que si vous nécessitez d'avoir votre encodeur décodable par DivX5, vous
avez besoin d'activer le support closed GOP, en utilisant l'option de
libavcodec, mais vous aurez besoin de désactiver
la détection de scène, ce qui n'est pas une bonne idée étant donné que cela
affectera un peu l'efficacité d'encodage.
vb_strategy=1: aide aux scènes avec de rapide
mouvements.
Sur certaines vidéos, vmax_b_frames peut affecter la qualité, mais
vmax_b_frames=2 avec vb_strategy=1 aideront.
dia: portée de recherche de mouvement. Le plus large
est l'écart, le mieux ce sera mais aussi plus lent.
Des valeurs négative sont une échelle complètement différente.
De bonne valeurs sont -1 pour un encodage rapide, ou 2-4 pour un plus lent.
predia: pre-passage de recherche de mouvement.
Pas aussi important que dia. De bonnes valeurs sont 1 (par défaut) à 4. Cela
demande preme=2 pour être vraiment utile.
cmp, subcmp, precmp: Fonction de comparaison
pour l'estimation de mouvement.
Testez avec des valeurs de 0 (défaut), 2 (hadamard), 3 (dct), et 6 (taux de
distorsion).
0 est le plus rapide, et suffisant pour precmp.
Pour cmp et subcmp, 2 est bonne pour les animations, et 3 est bonne pour les
actions en directe.
6 peut-être ou non un peu mieux, mais c'est lent.
last_pred: Nombre de prédicateurs de mouvement
à prendre depuis la frame précédente.
1-3 ou autre aide avec peu de frais en matière de vitesse.
De plus haute valeurs sont lente sans avoir de réel intérêt.
cbp, mv0: Contrôle la sélection de macroblocs.
Un petit coût en vitesse pour un petit gain en qualité.
qprd: quantification adaptative basée sur la
complexité du macrobloc.
Peut aider ou agraver la situation ceci dépend de la vidéo et des autres options.
Cela peut causer des artefacts à moins que vous paramètriez vqmax à certaine
valeur raisonnablement petite (6 c'est bien, peut-être aussi lent que 4);
vqmin=1 devrait aussi aider.
qns: très lente, spécialement quand combinée
avec qprd.
Cette option amènera l'encodeur à minimiser le bruit dû à la compression
d'artefact au lieu de faire strictement ressembler la vidéo encodé à la
source.
Ne pas utilisez ceci à moins d'avoir déjà bidouillé tout ce qui fut possible
de faire et que les résultats ne sont pas encor assez bon.
vqcomp: Bidouille du contrôle de taux.
Quelles sont les bonnes valeurs dépend du film.
Vous pouvez de manière sûr laisser cela de côté si vous le voulez.
Réduire vqcomp met plus de bits sur les scènes de basse complexité, l'augmenter
les met sur les scènes de haute complexité (défaut: 0.5, portée: 0-1. portée
recommandé: 0.5-0.7).
vlelim, vcelim: Paramètre le seuil du seul
coefficent d'élimination pour les plans de luminance et de chroma.
Ceux-là sont encodés séparément dans tous les algorithmes de style MPEG.
L'idée derrière tout ceci est d'utiliser certaines bonnes approches heuristics
pour déterminer quand le changement dans un bloc est inférieur au seuil que
vous avez spécifié, et dans ce cas, de juste encoder le bloc comme étant
"sans changement".
Cela épargnera des bits et peut-être accélèrera l'encodage. vlelim=-4 et
vcelim=9 semblent être de bonnes valeurs pour les films en direct, mais
semblent ne pas aider avec les animations; quand on veut encoder une animation,
vous devriez probablement les laisser inchangé.
qpel: Estimation de mouvement de quart de pixel.
MPEG-4 utilise la précision de moitié de pixel pour sa recherche de mouvement
par défaut, donc cette option vient avec un surplus car plus d'information seront
stockée dans le fichier encodé.
La compression gain/perte dépend du film, mais n'est habituellement pas très
efficace sur les animations.
qpel induit toujours un coût significatif dans le temps de décodage du CPU
(+25% en pratique).
psnr: n'affecte pas l'encodage courant,
mais écrit un fichier log donnant le type/taille/qualité de chaque frame, et
imprime un résumé du PSNR (rapport maximal du signal sur le bruit) à la fin.
Options non-recommandé de jouer avec:vme: La valeur par défaut est la mieux.
lumi_mask, dark_mask: Quantification adaptative
psychovisuelle.
Vous ne voudriez pas jouer avec ces options si vous tenez à la qualité.
Des valeurs raisonnable peuvent être efficace dans votre cas, mais soyez prévenu
que ceci est très subjectif.
scplx_mask: Essaye de prévenir l'apparition d'artefacts
carré, mais le post-traitement est le mieux.
Exemples de paramètres d'encodage
Les paramètres suivant sont des exemples de combinaisons d'option de différent
encodage qui affectent la vitesse contre la différence de qualité pour la même
cible de bitrate.
Tous les paramètres d'encodage sont testés sur un échantillon de vidéo de
720x448 @30000/1001 fps, le bitrate ciblé était 900kbps, et la machine était un
AMD-64 3400+ à 2400 Mhz en mode 64 bits.
Chaque paramètre d'encodage comporte la mesure de vitesse d'encodage (en
frames par seconde) et la perte PSNR (en dB) comparé au paramètre de "très
haute qualité".
Veuillez comprendre que dépendamment de votre source, de votre type de machine
et des avancements en développement, vous pouvez obtenir des résultats très
différent.
DescriptionOptions d'encodagevitesse (en fps)perte PSNR relative (en dB)Très haute qualité6fps0dBHaute qualité15fps-0.5dBRapide42fps-0.74dBTemps-Réel54fps-1.21dBMatrices inter/intra customisées
Avec cette fonctionnalité de
libavcodec
vous êtes à même de règler des matrices inter (I-frames/frames clé) et intra
(P-frames/frames prévu) customisées. Cela est supporté par la plupart des codecs:
mpeg1video et mpeg2video
sont rapportés comme fonctionnant.
Un usage typique de cette fonctionnalité est de règler les matrices préférées
grâce aux spécifications KVCD.
La Matrice de Quantification KVCD "Notch" :
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
Usage:
$ mencoder input.avi -o output.avi -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=...
$ mencoder input.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
Exemple
Voilà, vous venez tout juste d'acheter votre exemplaire de Harry Potter et la
Chambre des Secrets (édition écran large, bien sûr), et vous voulez ripper ce
DVD ceci afin de pouvoir l'ajouter à votre PC Home Cinéma. C'est un DVD de
région 1, donc c'est du NTSC. L'exemple ci-dessous s'accorde quand même au PAL,
excepté que vous devrez omettre (parceque le
framerate de sortie est le même que celui en entrée), et bien sûr les dimensions
de découpage seront différentes.
Après lancement de , nous suivons le processus
détailé dans la section Comment traiter le
téléciné et l'entrelacement dans les DVDs NTSC et découvrer que c'est une
vidéo progressive en 24000/1001 fps, ce qui signifie que nous n'aurons pas besoin
d'utiliser un filtre inverse téléciné, comme ou .
Ensuite, nous voulons déterminer le rectangle de découpage approprié, donc
nous utilisons le filtre cropdetect:
mplayer dvd://1 -vf cropdetect
Soyez sûr que vous recherchez une frame complètement remplie (comme une scène
lumineuse), et vous verez dans la console de sortie de MPlayer:
crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)
Nous rejouons ensuite le film avec le filtre pour tester son exactitude:
mplayer dvd://1 -vf crop=720:362:0:58
Et nous nous apercevons que tout est parfait. Ensuite, nous nous assurons que
le hauteur et la largeur sont des multiples de 16. La largeur est bonne,
cependant la hauteur ne l'est pas. Vu que nous n'avons pas échoué notre brevet à
cause des maths, nous savons que le plus proche multiple de 16 inférieur à 362
est 352.
Nous pourrions juste utiliser , mais ce
serait mieux d'enlèver un peu du haut et un peu du bas ceci afin de garder
le centre. Nous avons rétréci la hauteur de 10 pixels, mais nous ne voulons
pas augmenter le décalage y de 5 pixels vu que c'est un nombre impair et
affectera défavorablement la qualité. A la place, nous augmenterons le
décalage y de 4 pixels:
mplayer dvd://1 -vf crop=720:352:0:62
Une autre raison pour tailler les pixels du haut et du bas est que nous nous
assurons que nous avons éliminé n'importe quels pixels à moitié noir si ils
existent. Notez que si votre vidéo est téléciné, assurez-vous que le filtre
(ou quelque soit le filtre inverse téléciné que vous
avez décidé d'utiliser) apparaissent dans la chaîne de filtre avant que vous
découpiez. Si il est entrelacé, désentrelacez-le avant découpage.
(Si vous choisissez de préserver la vidéo entrelacé, alors soyez certain que
votre décalage de découpage vertical est un multiple de 4.)
Si vous vous sentez vraiment concerné par la perte de ces 10 pixels, vous
pourriez à la place de réduire les dimensions préférer le plus proche multiple
de 16.
La chaîne de filtre ressemblerait à ceci:
-vf crop=720:362:0:58,scale=720:352
Réduire la vidéo comme cela signifierai qu'un petit montant de détails soit perdu,
pensant que cela ne serait probablement pas perceptible. Augmenter la taille
résultera en une plus basse qualité (à moins que vous augmentiez le bitrate).
Le découpage épargne ces pixels tout ensemble. C'est une différence que vous
voudriez prendre en compte à chaque circonstance. Par exemple, si le DVD vidéo
était fait pour la télévision, vous pourriez avoir intérêt à éviter le
redimensionnement vertical, étant donné que la ligne d'échantillon correspond
à la façon d'origine avec laquelle le contenu a été enregistré.
Après inspection, nous voyons que notre film a un peu d'action et beaucoup de
détails, donc nous prenons 2400Kbit pour notre bitrate.
Nous sommes maintenant prêt à faire les deux passes d'encodage. Passe une:
mencoder dvd://1 -ofps 24000/1001 -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
Et passe deux est la même, excepté que nous spécifions :
mencoder dvd://1 -ofps 24000/1001 -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 augmenterons considérablement la
qualité au dépend de la durée d'encodage. Il y a peu de raison de ne pas
prendre en compte ces options quand le but premier est la qualité. Les options
séléctionnent une fonction de comparaison
qui rend une plus haute qualité que celle par défaut. Vous pourriez tenter de
tester avec ces paramètre (référez-vous à la page de man pour les valeurs possible)
étant donné que différentes fonctions peuvent avoir un large impact sur la
qualité dépendamment du matériel source. Par exemple, si vous trouvez que
libavcodec produit trop d'artefacts
carré, vous pouvez essayer de séléctionner le NSSE expérimental comme fonction
de comparaison via .
Pour ce film, le AVI résultant sera de 138 minutes long et à peu près 3GB.
Et parceque vous disiez que la taille du fichier n'était pas importante, c'est
une taille parfaitement acceptable. Cependant, si vous la désiriez plus petite,
vous pouvez essayer un bitrate inférieur. L'augmentation de bitrates ont des
retours amoindri, ainsi tandis que nous pourrions clairement voir une
amélioration à partir de 1800Kbit jusqu'à 2000Kbit, cela ne semblerai pas autant
notable au-dessus de 2000Kbit. Libre à vous de l'expérimenter jusqu'à en être
totalement satisfait.
Parceque nous avons passé la source vidéo au travers d'un filtre anti-bruit,
vous voudriez en rajouter un peu pendant la lecture. Ceci, avec le filtre de
post-traitement , améliore de façon radicale la perception
de qualité et aide à éliminer les artefacts carré de la vidéo.
Avec l'option de MPlayer,
vous pouvez faire varier le montant de post-traitement achevé par le filtre spp
dépendamment du CPU disponible. Aussi, à ce point, vous pourriez vouloir demander
une correction gamma et/ou couleur pour mieux convenir à l'affichage. Par exemple:
mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3Encodé avec le codec XviDXviD est une librairie libre pour
encoder les flux vidéo de MPEG-4 ASP.
Avant de commencer à encoder, vous avez besoin de
paramètrer MEncoder pour son support.
Ce guide a pour principal objectif de fournir le même genre d'information que
le guide d'encodage de x264.
Par consèquent, commencez par lire
la première partie
de ce guide.
QUelles options devrais-je utiliser pour avoir les meilleurs résultats?
Commencez par passer en revue la page man de la section
XviD de MPlayer.
Cette section est prévue pour être un supplément à la page man.
Les paramètres XviD par défaut font déjà une bonne distinction entre la
vitesse et la qualité, donc vous pouvez sans risque vous en tenir à eux
si la section suivante vous laisse perplexe.
Options d'encodage de XviDvhq
Ce paramètre affecte l'algorithme de décision de macrobloc, où plus la valeur
du paramètre est élevée, plus sage sera la décision.
Le paramètre par défaut peut être de façon sûr utilisé pour tout les encodages,
alors que des paramètrages plus élevés aident toujours le PSNR mais sont de
façon signifiante plus lente.
Veuillez noter que un meilleur PSNR ne veut pas forcement dire que l'image
sera mieux, mais vous informe qu'elle est proche de l'original.
L'enlevé accélèrera de façon notable l'encodage; si la vitesse est un point
critique pour vous, la différence peut valoir le coup.
bvhq
C'est pareil que vhq, mais cela agit sur les B-frames.
Cela a un impact négligeable sur la vitesse, et amélior un peu la qualité
(environ +0.1dB PSNR).
max_bframes
Un plus grand nombre de B-frames permise consécutive améliore habituellement
la compressibilité, bien qu'il puisse également mener à plus d'artefacts carré.
Le paramètrage par défaut est un bon compromis entre compressibilité et qualité,
mais vous pouvez l'augmenter jusqu'à 3 si vous êtes omnibulé par le bitrate.
Vous pouvez aussi le réduire à 1 ou 0 si vous avez pour seul but la qualité
parfaite, cependant dans votre cas vous devriez vous être sûr que votre bitrate
cible est assez élevé pour s'assurer que l'encodeur n'ait pas à augmenter le
quantificateur pour l'atteindre.
bf_threshold
Ceci contrôle la sensibilité de l'encodeur pour les B-frames, où une plus haute
valeur amène à ce que plus de B-frames soit utilisé (et vice versa).
Ce paramètre doit être utilisé avec ;
si vous êtes omnibulé par le bitrate, vous devrez augmenter
et , tandis que vous devriez augmenter
et réduire ainsi donc l'encodeur peut utiliser plus de B-frames
à des endroits qui seuls vraiment les nécessitent.
Un nombre bas de et une valeur élevé de
n'est probablement pas un choix avisé vu qu'il obligera l'encodeur à mettre
des B-frames en des endroits qui n'en tireront pas de bénéfice, mais en plus
réduiront la qualité visuelle.
Cependant, si vous avez besoin d'être compatible avec des lecteurs qui
supportent seulement de vieux profils DivX (qui revient à supporter jusqu'à
1 B-frame consécutive), ceci sera votre seul espoir d'augmenter la
compressibilité en utilisant les B-frames.
trellis
Optimise la procèdure de quantification pour obtenir un compromis optimal
entre le PSNR et le bitrate, ce qui permet de sauver de manière significative
des bits.
Ces bits seront en retour utilisé autre part sur la vidéo, augmentant l'ensemble
de la qualité visuelle.
Vous devriez toujours l'utiliser étant donné qu'il impacte énormement sur la
qualité.
Même si vous recherchez de la vitesse, ne le désactiver pas jusqu'à ce que
vous réduisiez et toutes les autre options plus gourmande
en CPU à leur minimum.
hq_ac
Active une meilleur méthode d'estimation du coût en coefficient, ce qui réduit
passiblement la taille de fichier par environ 0.15 à 0.19% (ce qui correspond
à moins de 0.01dB PSNR d'augmentation), tandis qu'elle a un impact négligeable
sur la vitesse.
Il est néanmoins recommandé de toujours la laisser activé.
cartoon
Faite pour un meilleur encodage de contenu dessin animé, et n'a pas d'impact
sur la vitesse étant donné qu'il modifie juste le mode décision heuristics
pour ce type de contenu.
me_quality
Ce paramètre contrôle la précision de l'estimation de mouvement.
Le plus élevé est, le plus précis
l'estimation du mouvement d'origine sera, et mieux le clip résultant
capturera le mouvement d'origine.
Le paramètre par défaut est le mieux dans tous les cas; bien qu'il ne
soit pas recommandé de l'éteindre à moins que vous recherchiez vraiment
la rapidité, vu que tout les bits sauvés par une bonne estimation du
mouvement seront dépensés autre part, augmentant la qualité générale.
Cependant, n'allez pas plus bas que 5, et même ceci doit être utilisé
en dernier recours.
chroma_me
Améliore l'estimation de mouvement en prenant aussi en compte l'information
de la chroma (couleur), alors que toute seule
utilise seulement la luma (niveau de gris).
Cela ralenti l'encodage de 5-10% mais améliore pas mal la qualité visuelle
en réduisant les effets de bloc et réduis la taille de fichier d'environ 1.3%.
Si vous cherchez de la vitesse, vous devriez désactiver cette option avant de
commencer à considérer à la réduction de .
chroma_opt
A pour objectif d'augmenter la qualité du chroma de l'image vers des
bords blanc/noirs pures, plutôt que d'améliorer la compression.
Ceci peut aider à réduire l'effet "red stairs".
lumi_mask
Tente de donner moins de bitrate à une partie de l'image que l'oeil humain
ne peut pas très bien voir, ce qui devrait permettre à l'encodeur de dépenser
les bits sauvés sur des parties plus importantes de l'image.
La qualité de l'encodage yielded by this option dépends grandement des
préférences personnelles et des paramètres de type et moniteur utilisé pour
le regarder (typiquement, cela ne semblera pas aussi bon si c'est plus
lumineux ou si c'est un moniteur TFT).
qpel
Elève le nombre de vecteurs de mouvement candidat en augmentant la
précision de l'estimation de mouvement de halfpel à quarterpel.
L'idée est de trouver de meilleurs vecteurs de mouvement ce qui
en retour réduira le bitrate (augmentant la qualité par la même occasion).
Cependant, les vecteurs de mouvement avec une précision quarterpel requièrent
quelques bits en plus à coder, mais les vecteurs candidats ne donnent pas
toujours de (bien) meilleurs résultats.
Assez souvent, le codec gaspille encor des bits sur la précision en plus,
mais en retour peu ou aucune qualité en plus aura été gagné.
Malheureusement, il n'y a aucune façon de prévoir les avantages possible de
, donc vous avez précisément besoin de l'encoder avec
et sans pour en être sûr.
peut quasimment doublé la durée d'encodage, et
requière pas moins de 25% en plus de puissance de traitement pour décoder.
Cela n'est pas supporté par tout les lecteurs.
gmc
Essaye de sauver des bits sur des scènes panoramique en employant un
vecteur simple de mouvement pour la frame entière.
Cela augmente à peu près toujours le PSNR, mais de façon significative
ralenti l'encodage (aussi bien que le décodage).
Par conséquent, vous devriez seulement l'employer si vous avez
augmenté au maximum.
GMC de XviD est plus sophistiqué
que celui de DivX, mais il est seulement supporté par quelques lecteurs.
Profils d'encodage
XviD supporte des profils d'encodage à travers l'option ,
ce qui est utilisé pour imposer des restrictions sur les propriétés du flux
vidéo XviD comme cela il sera jouable sur n'importe quoi supportant le profil
choisi.
Les restrictions relient les résolutions, les bitrates et certaines
fonctionnalités MPEG-4.
La table suivante montre ce que chaque profil supporte.
SimpleSimple avancéDivXNom de profil0123012345HandheldNTSC PortablePAL PortableNTSC Home CinémaPAL Home CinémaTV Haute DéfinitionLargeur [pixels]1761763523521761763523523527201763523527207201280Hauteur [pixels]144144288288144144288288576576144240288480576720Frame rate [fps]15151515303015303030153025302530Bitrate moyen maxi [kbps]646412838412812838476830008000537.648544854485448549708.4Bitrate moyen maximal plus de 3 secs [kbps]800800080008000800016000B-frames maxi0000011112Quantification MPEGXXXXXXQuantification adaptativeXXXXXXXXXXXXEncodage entrelacéXXXXXXXXXQuaterpixelXXXXXXCompensation globale du mouvementXXXXXXExemples de paramètres d'encodage
Les paramètres suivant sont des exemples de différentes combinaisons
d'option d'encodage qui affèctent la compensation entre la vitesse et
la qualité pour le même bitrate cible.
Tous les paramètres d'encodage sont testés sur un échantillon vidéo à
720x448 @30000/1001 fps, le bitrate cible était à 900kbps, et la machine
était un AMD-64 3400+ à 2400 Mhz en mode 64 bits.
Chaque paramètre d'encodage exploite la vitesse d'encodage mesuré (en
frames par seconde) et la perte PSNR (en dB) en la comparant au paramètre
de "très haute qualité".
Veuillez comprendre que dépendemment de votre source, de votre type de machine
et des avancements en développement, vous pouvez obtenir des résultats très
différents.
DescriptionOptions d'encodagevitesse (en fps)Perte PSNR relative (en dB)Très haute qualité16fps0dBHaute qualité18fps-0.1dBRapide28fps-0.69dBTemps réel38fps-1.48dBEncodage avec le codec x264x264 est une librairie libre pour
encoder des flux vidéo H.264/AVC.
Avant de commencer à encoder, vous avez besoin de
règler MEncoder pour le supporter.
Options d'encodage de x264
Veuillez commencer par passer en revue la section
x264 de la page man
de MPlayer.
Cette section a été prévu pour être un supplément à la page man.
Ici vous trouverez rapidement des astuces sur quelles options sont
le plus susceptible d'intéresser la plupart des gens. la page man
est plus laconique, mais est aussi plus exhaustive, et cela offre
parfois beaucoup plus de détail technique.
IntroductionCe guide considère deux catégories majeurs d'options d'encodage:Options qui principalement compensent la durée d'encodage de la qualité
Options qui peuvent être utile pour accomplir des préférences personnelles
variées et des conditions spéciales
Finalement, seul vous pouvez décider quelles options sont mieux pour vos buts.
Le choix de la première classe d'options est la plus simple:
vous devez seulement décider si vous pensez que les différences de qualité
justifient les différences de vitesse. Pour la deuxième classe d'options,
les préférences peuvent être bien plus subjectives, et plus de facteurs
peuvent être impliqués. Notez sur que certaines des options de type
"préférences personnelles et de conditions spéciales" peuvent encor avoir
de larges impacts sur la vitesse ou la qualité, mais ce n'est pas ce pourquoi
ils sont principalement utiles. Quelques une des options de "préférence
personnelle" peuvent même causer des changements qui semblent mieux pour
certaines personnes, mais semblent moins bon à d'autres.
Avant de continuer, il vous est nécessaire de comprendre que ce guide utilise seulement
une qualité métrique: le PSNR global.
Pour une brève explication sur le PSNR, voir
l'article Wikipedia sur le PSNR.
PSNR global est le dernier nombre PSNR rapporté quand vous incluez l'option
dans .
Chaque fois que vous lisez une réclamation sur le PSNR, une des prétentions
derrière la réclamation est que des bitrates égaux sont utilisés.
A peu près tous les commentaires de ce guide présument que vous utilisez
deux passages.
Lors de la comparaison des options, il y a deux principales raisons pour
l'utilisation d'un encodage à deux passages.
Premièrement, utiliser deux passages permet souvent de gagner environ 1dB
PSNR, ce qui est une très grosse différence.
Deuxièmement, tester les options en faisant des comparaisons directes de
qualité avec un encodage en un passage introduit un facteur confus important:
bitrate varie souvent de façon significative avec chaque encodage.
Il n'est pas toujours facile de dire si les changements de qualité sont
principalement dûs aux changements d'options, ou si la plupart du temps ils
reflètent essentiellement des différences aléatoires dans le bitrate réalisé.
Options qui affectent principalement la vitesse et la qualitésubq:
Des options qui vous permettent de compenser la vitesse pour la qualité,
et (voir ci-dessous) sont
habituellement et de loin les plus importantes.
Si vous êtes intéressé par le bidouillage soit de la vitesse soit de la
qualité, ces options sont les premières que vous devriez prendre en
considération.
A propos de la dimension de la vitesse, les options
et interagissent entre elles assez fortement.
L'expérience montre que, avec une frame de référence,
(le règlage par défaut) est environ 35% plus long que
.
Avec 6 frames de référence, la pénalité passe au dessus des 60%.
L'effet de sur le PSNR semble assez constant
indépendamment du nombre de frames de référence.
Typiquement, résulte en un PSNR global plus haut de
0.2-0.5 dB en comparaison à .
C'est habituellement assez pour être évident.
est le plus lent, le plus élevé mode de qualité.
En comparaison à , il gagne habituellement un PSNR
global de 0.1-0.4 dB avec des coûts en vitesse variant entre 25% et 100%.
A la différence des autres niveaux de , le comportement
de ne dépend pas beaucoup de
et . A la place, l'efficacité de
dépend principalement du nombre de B-frames utilisé. Lors d'une utilisation
normal, cela signifie que a un large impact sur la
vitesse et la qualité dans le cas complexe, des scènes élevé en mouvement,
mais il peut ne pas avoir beaucoup d'effet sur les scènes avec peu de mouvement.
Notez que il est encore recommandé de toujours paramètrer les
à autre chose que zéro (voir ci-dessous).
frameref:
est règlé à 1 par défaut, mais ceci ne devrait pas
être pris en compte pour justifier qu'il est raisonnable de le mettre à 1.
Simplement en augmentant à 2 permet un gain d'environ
0.15dB sur le PSNR avec une pénalité à 5-10% sur la vitesse; cela semble être
un bon compromis.
gagne environ 0.25dB de PSNR de mieux que
, ce qui devrait être une différence visible.
est d'environ 15% plus lent que .
Malheureusement, des retours diminuant se mettent en place rapidement.
peut être attendu de gagner seulement 0.05-0.1 dB
de mieux que avec une pénalité additionelle de
15% sur la vitesse.
Au dessus de , les gains en qualité sont
habituellement très faible (bien que vous devriez garder à l'esprit à travers
cette entière discussion que selon votre source cela peut varier énormément).
Dans un cas assez typique, améliorera le PSNR
global par un minuscule 0.02dB de mieux que ,
avec un coût sur la vitesse de 15%-20%.
Avec des valeurs si élevé de , la seule vraie bonne
chose qui peut être dîte est que de l'augmenter même un peu plus ne
nuira à peu près certainement jamais le PSNR,
mais les bénéfices sur la qualité additionnelle sont à peine mesurable, et encore
moins perceptible.
Note:
Augmenter le à des valeurs non nécessairement élevées
peut affecter et habituellement affecte
l'efficacité d'encodage si vous arrêtez le CABAC.
Avec le CABAC lancé (comportement par défaut), la possibilité de paramètrage
de "trop élevé" actuellement semble trop distant
pour même s'en inquiéter, et dans l'avenir, les optimisations peuvent enlever
les possibilités complètement.
Si vous vous inquiétez pour la vitesse, un compromis raisonnable est
d'utiliser des valeurs et basses
sur le premier passage, et ensuite les augmenter sur le second passage.
Typiquement, cela a un effet négatif négligeable sur la qualité finale:
Vous perdrez probablement bien en dessous de 0.1dB du PSNR, ce qui devrez
être une différence beaucoup trop faible pour la voir.
Cependant, des valeurs différentes de peuvent
occasionnellement affecter le choix du frametype.
Très probablement, ce sont des cas périphériques rares, mais si vous voulez
en être complètement certain, considèrez que votre vidéo a soit des modèles
plein écran, clignotants et répétitifs, soit des occlusions provisoires très
grandes qui pourraient forcer une I-frame.
Ajustez le de premier passage pour qu'il soit assez
large pour contenir la durée du cycle de clignotement (ou occlusion).
Par exemple, si la scène clignote dans les deux sens entre deux images
au-dessus d'une durée de trois frames, règlez le de
premier passage à 3 ou plus.
Le problème est probablement extrêmement rare sur des matériaux vidéo de type
action en directe, mais cela arrive quelque fois dans des captures de jeu vidéo.
me:
Cette option est pour choisir la méthode de recherche d'estimation de mouvement.
Alterer cette option fourni une compensation franche entre qualité et vitesse.
est seulement quelque pourcent plus rapide que
la recherche par défaut, à un coût en dessous de 0.1dB du PSNR global. Le
paramètre par défaut () est une compensation raisonnable
entre vitesse et qualité. gagne un petit peu en dessous
de 0.1dB du PSNR global, avec une pénalité sur la vitesse qui varie dépendamment
du . A de haute valeurs du
(e.g. 12 ou autre), est environ 40% plus lente que la
valeur par défaut . Avec ,
la pénalité encouru sur la vitesse chute à 25%-30%.
utilise une recherche exhaustive qui est trop lente pour
une utilisation pratique.
4x4mv:
Cette option active l'utilisation des sous-partitions 8x4, 4x8 et 4x4 dans
les macroblocs prévu. L'activer résulte en une assez consistente perte de
vitesse de 10%-15%. Cette option est plutôt inutile dans une source contenant
seulement des mouvements bas, bien que dans certaine source de mouvement élevé,
particulièrement des sources avec beaucoup de petits objets en mouvement, un
gain d'environ 0.1dB peut être attendu.
bframes:
Si vous avez l'habitude d'encoder avec d'autre codecs, vous pourriez avoir
trouvé que les B-frames ne sont pas toujours utile.
Avec le H.264, ceci a changé: il y a de nouvelles techniques et types de bloc
qui sont possible avec les B-frames.
Habituellement, même un choix naïf d'algorithme de B-frame peut avoir un
bénéfice significatif sur le PSNR.
Il est intéressant de noter que l'utilisation de B-frames accélère
habituellement le second passage de manière légère, et peut aussi accélèrer
un encodage en un seul passage si le choix de B-frame adaptatif est stoppé.
Avec le choix de B-frame adaptatif stoppé
( de ),
la valeur optimal pour le paramètrage est habituellement pas plus que
, ou bien les scènes élevé en mouvement peuvent
en patir.
Avec le choix de B-frame adaptatif activé (le comportement par défaut), il
est sûr d'utiliser des valeurs plus élevées; l'encodeur réduira l'utilisation
de B-frames dans les scènes où cela pourrait abîmer la compression.
L'encodeur choisi rarement d'utiliser plus de 3 ou 4 B-frames;
paramètrer cette option a une valeur plus élevée aura peu d'effet.
b_adapt:
Note: il est activé par défaut.
Avec cette option activé, l'encodeur utilisera un traitement de choix
raisonnablement rapide pour réduire le nombre de B-frames utilisé par les
scènes qui ne pourraient pas en bénéficier autant qu'elles le voudraient.
Vous pouvez utiliser pour bidouiller combien
l'encodeur est heureux de ces B-frames.
La pénalité sur la vitesse des B-frames adaptatives est actuellement
plutôt modeste, mais il en est de même pour le gain potentiel en qualité.
Cela n'endomage pas habituellement, cependant.
Notez que cela affecte seulement le choix de vitesse et de frametype sur
le premier passage.
et n'ont aucun effet sur
les passages suivants.
b_pyramid:
Vous devriez aussi bien activé cette option si vous utilisez >=2 B-frames;
comme la page man le dit, vous obtiendrez une faible améliroration de la
qualité avec aucun surcoût sur la vitesse.
Notez que ces vidéos ne peuvent pas être lu sur des décodeurs basés sur
une version de libavcodec datant d'avant le 5 Mars, 2005.
weight_b:
Dans des cas typiques, il n'y a pas assez de gain avec cette option.
Cependant, dans des scènes crossfades ou fade-to-black, la prédiction de
poids donne de plutôt large bénéfice en bitrate.
Dans le MPEG-4 ASP, un fade-to-black est habituellement mieux codé comme une
série de I-frames onéreuses; utiliser la prédiction de poids dans les
B-frames rend possible la conversion d'un certain nombre en de beaucoup plus
petites B-frames.
Le coût sur la durée d'encodage est minimal, étant donné qu'aucun choix
supplémentaire n'a besoin d'être fait.
Aussi, contrairement à ce que les gens semble deviner, les requis en CPU par
le décodeur ne sont pas énormement affecté par la prédiction de poids, tout
le reste étant égal.
Malheureusement, l'algorithme courant de choix de B-frame adaptative
a une forte tendance à éviter les B-frames durant les fondus.
Jusqu'à ce que cela change, il peut être une bonne idée d'ajouter
à votre x264encopts, si vous vous attendiez
à ce que le fondu ait un plus grand effet sur votre clip vidéo particulier.
Options concernant des préférences diversesEncodage en deux passages:
Ci-dessus, il a été suggèré de toujours utiliser un encodage en deux passages,
mais il y a encor des raisons pour ne pas l'utiliser. Par exemple, si vous
capturez la télévision en direct et l'encoder en temps réel, vous êtes forcé
d'utiliser un encodage en un passage.
Aussi, un passage est évidemment plus rapide que deux passages; si vous
utilisez l'exact même jeu d'options sur les deux passages, deux passages
d'encodage est à peu près deux fois plus lent.
Encore, il y a de très bonne raisons pour utiliser l'encodage en deux passages.
Pour une chose, taux de contrôle d'un seul passage n'est pas psychic, et il
fait souvent des choix irraisonnable parce qu'il ne peut pas voir l'ensemble
de l'image. Par exemple, supposez que vous avez une vidéo de dexu minute de
long consistant en deux moitiés distinctes. La première moitié est une scène
à mouvement élevé durant 60 secondes ce qui, en de manière isolée, demande
environ 2500kbps afin d'avoir l'air correcte.
Immédiatement suivi d'une scène de 60 secondes beaucoup moins demandante qui
a l'air bien à 300kbps. Supposez que vous demandiez pour 1400kbps sur la
théorie que ceci est suffisant pour accomoder les deux scènes. Un taux de
contrôle en un seul passage fera quelques "fautes" dans un cas comme celui-là.
Premièrement, il ciblera 1400kbps pour les deux segments. Le premier segment
pourrait finir lourdement sur-quantifié, l'entraînant à ressembler à un bloc
de façon inadmissible et irraisonable. le second segment serait lourdement
sous-quantifié; cela pourrait avoir l'air parfait, mais le coût en bitrate de
cette perfection sera complètement irraisonnable. Ce qui est d'autant plus dur
à éviter que le problème est à la transition entre les deux scènes. Les premières
secondes de moitié de mouvement lente sera grandement sur-quantifié, parce que
le taux de contrôle prévoit encore le genre de conditions en bitrate qu'il
rencontre dans la première moitié de la vidéo. Cette "période d'erreur" de
grandement sur-quantifié mouvement faible aura l'air mauvais, et utilisera
réellement moins que les 300kbps qu'il aurait pris pour le rendre un semblant
correct. IL y a des façons pour atténuer les pièges de l'encodage en simple
passage, mais ils peuvent tendre à augmenter la mauvaise prédiction de bitrate.
Le taux de contrôle multiple passage peut offrir d'énormes avantages sur un
encodage simple passage.
En utilisant les statistiques récupérées depuis le premier passage d'encodage,
l'encodeur peut estimer, avec une raisonnable exactitude, le "coût" (en bits)
de l'encodage de n'importe quel frame donnée, à n'importe quel quantificateur
donné. Cela permet une beaucoup plus rationnelle, mieux plannifiée allocation
de bits entre les scènes onéreuses (mouvement élevé) et bon marché (mouvement
faible). Voir ci-dessous pour quelques idées sur comment
bidouiller cette allocation à vos besoins.
D'ailleurs, deux passages n'ont pas besoin de prendre deux fois plus de temps
qu'un seul passage. Vous pouvez bidouiller les options dans le premier passage
pour une vitesse plus élevé et une qualité plus faible.
Si vous choisissez bien vos options, vous pouvez obtenir un premier passage
très rapide.
La qualité résultante dans le second passage sera légèrement plus basse parce
que la prédiction de taille est moins précise, mais la différence de qualité
est normalement beaucoup trop petite pour être visible. Essayez, par exemple,
d'ajouter au premier passage .
Ensuite, sur le second passage, utilise des options plus lentes, de plus
grandes qualités:
Encodage en trois passages?
x264 offre la capacité de faire un nombre arbitraire de passages consécutive.
Si vous spécifiez sur le premier passage, alors
utilisez sur un passage suivant, le passage suivant
lira les statistiques depuis le passage précédent, et écrira ses propres
statistiques. Un passage additionnel suivant celui-là aura une très bonne base
depuis laquelle faire des prédictions hautement précise de framesizes à un
quantificateur choisi. En pratique, les gains sur la qualité d'ensemble de
ceci est habituellement proche de zéro, et tout à fait possiblement un
troisième passage résultera en un PSNR global légèrement plus mauvais que le
passage avant ça. Dans une utilisation typique, trois passages aident si vous
obtenez soit une mauvaise prédiction de bitrate ou soit une mauvaise apparence
des transitions de scènes lors de l'utilisation de seulement deux passages.
Ceci peut se produire sur les clips extrêmement courts. Il y a aussi quelques
cas spéciaux dans lequels trois (ou plus) passages sont pratique pour les
utilisateurs avancés, mais par souci de brièveté, ce guide omet de traiter ces
cas spéciaux.
qcomp:
compense le nombre de bits alloué entre les frames
"onéreux" mouvement élevé et les frames "bon marché" mouvement bas. A une
extrémité, vis pour le vrai bitrate constant.
Typiquement cela rendrait des scènes élevées en mouvement complètement moche,
tandis que les scènes basses en mouvement serait absoluement parfaite, mais
utiliserait aussi beaucoup plus de bitrate qu'ils n'en auraient besoin dans
le but de les rendre simplement excellente. A une autre extrèmité,
réalise le paramètre de quantification (QP) presque constant. Un QP constant
n'a pas l'air mauvais, mais la plupart des gens pense qu'il est plus raisonnable
d'enlever quelque bitrate des scènes extrèmement onéreuses (où la perte de
qualité ne sera pas aussi apparente) et les ré-allouer aux scènes qui sont
plus facile à encoder à une excellente qualité.
est règlé à 0.6 par défaut, ce qui pourrait être un
peu faible pour les goûts de plein de gens (0.7-0.8 sont aussi communément
utilisé).
keyint:
est seulement pour compenser l'habilité de recherche
de fichier contre l'efficacité de codage. Par défaut,
est paramètré à 250. Sur des matériaux à 25 fps, cela garanti l'habilité de
faire une recherche avec une précision de 10 secondes. Si vous pensez qu'il
serait important et utile d'être capable de faire une recherche dans les 5
secondes de précision, paramètrez ;
cela endommagera un peu la qualité/bitrate. Si vous vous inquiétez seulement
de la qualité et non de l'habilité à faire une recherche, vous pouvez le
paramètrer à des valeurs beaucoup plus élevées (comprenant qu'il y a des
retours diminuants qui peuvent devenir extrèmement bas, ou même zéro). Le flux
vidéo aura encor des points recherchable aussi longtemps qu'il y aura des
changements dans la scène.
deblockalpha, deblockbeta:
Ce sujet va être un peu controversé.
H.264 défini une simple procédure de déblocage sur les I-blocs qui utilise
des pré-règlages de forces et de seuils en dépendance avec le QP du bloc en
question.
Par défaut, des blocs QP élevés sont fortement filtrés, et des blocs QP bas
ne sont pas débloqué du tout.
Les pré-règlage de forces défini par les standard sont bien choisi et les
chances sont très bonne pour qu'elles aient des PSNR optimal quelque soit la
vidéo que vous essayez d'encoder.
Les paramètres de et
vous permettent de spécifier des décalages aux pré-règlage des seuils de
déblocage.
Plein de gens semble penser que c'est une bonne idée de baisser la force
du filtre de déblocage par de large montants (disons, -3).
Ce n'est cependant presque jamais une bonne idée, et dans la plupart des cas,
les gens qui le font ne comprennent pas très bien comment le déblocage
fonctionne par défaut.
La première et plus importante chose à savoir à propos du filtre de déblocage
in-loop est que les seuils par défaut sont à peu près toujours optimal PSNR.
Dans les rares cas où ils ne sont pas optimal, le décalage idéal est plus ou
moins 1.
Ajustant les paramètres de déblocage par un montant plus large est à peu près
garanti d'abimer le PSNR.
Le renforcement du filtre enduira plus de détails; l'affaiblissement du filtre
augmentera l'aspect du carré.
C'est définitivement une mauvaise idée de baisser les seuils de déblocage si
votre source est principalement basse en complexité spaciale (i.e., peu de
détail ou bruit).
Le filtre in-loop fait un travail plutôt excellent en cachant les artefacts
qui se surviennent.
Si la source est élevé en complexité spacial, cependant, les artefacts sont
moins apparent.
C'est parce que le déclencheur tend à ressembler à du détail ou du bruit.
La perception visuelle humaine remarque facilement quand un détail est enlevé,
mais elle ne remarque pas si facilement quand le bruit est faussement
représenté.
Quand on en vient à une qualité subjective, bruit et détail sont quelque peu
interchangeable.
En baissant la force du filtre de déblocage, vous aurez des erreurs
croissantes le plus susceptible en ajoutant des artefacts qui donneront
l'alerte, mais l'oeil ne les remarque pas parce qu'il confond les
artefacts avec des détails.
Ceci ne justifie toujours pas d'abaisser
la force du filtre de déblocage, cependant.
Vous pouvez généralement obtenir une meilleur qualité de bruit du
post-traitement.
Si votre encodage en H.264 est trop flou ou souillé, essayez de lui rajouter
quand vous jouez votre film encodé.
devrez cacher la plupart des simples
artefacts.
Cela aura l'air certainement mieux que les résultats que vous auriez obtenus
juste en jouant du violon avec le filtre de déblocage.
Exemples de paramètre d'encodage
Les paramètres suivant sont des exemples de différentes combinaisons
d'option d'encodage qui affèctent la compensation entre la vitesse et
la qualité pour le même bitrate cible.
Tous les paramètres d'encodage sont testés sur un échantillon vidéo à
720x448 @30000/1001 fps, le bitrate cible était à 900kbps, et la machine
était un AMD-64 3400+ à 2400 Mhz en mode 64 bits.
Chaque paramètre d'encodage exploite la vitesse d'encodage mesuré (en
frames par seconde) et la perte PSNR (en dB) en la comparant au paramètre
de "très haute qualité".
Veuillez comprendre que dépendemment de votre source, de votre type de machine
et des avancements en développement, vous pouvez obtenir des résultats très
différents.
DescriptionOptions d'encodagevitesse (en fps)Perte PSNR relative (en dB)Très haute qualité6fps0dBHaute qualité13fps-0.89dBRapide17fps-1.48dBUtiliser MEncoder pour créer des fichiers conforme VCD/SVCD/DVD.Contraintes de FormatMEncoder est capable de créer des fichiers MPEG
au format VCD, SCVD et DVD en utilisant la librairie
libavcodec.
Ces fichiers peuvent ensuite être utilisé conjointement avec
vcdimager
ou
dvdauthor
pour créer des discs qui joueront sur une platine de salon standard.
Les formats DVD, SVCD, et VCD sont sujet à des lourdes contraintes.
Seule une petite sélection des tailles d'image encodé et taux d'aspect
est disponible.
Si votre film n'est pas déjà en accord avec ces conditions, vous pourriez
avoir à dimensionner, découper ou ajouter des bords noirs à l'image pour
la rendre conforme.
Contraintes de FormatFormatRésolutionV. CodecV. BitrateTaux d'EchantillonnageA. CodecA. BitrateFPSAspectNTSC DVD720x480, 704x480, 352x480, 352x240MPEG-29800 kbps48000 HzAC3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9 (seulement pour 720x480)NTSC DVD352x240
Ces résolutions sont rarement utilisé pour les DVDs
parcequ'ils ont une assez basse qualité.MPEG-11856 kbps48000 HzAC3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9NTSC SVCD480x480MPEG-22600 kbps44100 HzMP2384 kbps (max)30000/10014:3NTSC VCD352x240MPEG-11150 kbps44100 HzMP2224 kbps24000/1001, 30000/10014:3PAL DVD720x576, 704x576, 352x576, 352x288MPEG-29800 kbps48000 HzMP2,AC3,PCM1536 kbps (max)254:3, 16:9 (seulement pour 720x576)PAL DVD352x288MPEG-11856 kbps48000 HzMP2,AC3,PCM1536 kbps (max)254:3, 16:9PAL SVCD480x576MPEG-22600 kbps44100 HzMP2384 kbps (max)254:3PAL VCD352x288MPEG-11152 kbps44100 HzMP2224 kbps254:3
Si votre film a un aspect 2.35:1 (les plus récents films d'action), vous
aurez à ajouter des bords noirs ou découper le film jusqu'à un aspect 16:9
pour faire un DVD ou un VCD.
Si vous ajoutez des bords noirs, essayez de les aligner aux frontières de
16-pixels de façon à minimiser l'impact sur la performance d'encodage.
Dieu merci le DVD a un bitrate suffisamment excéssif que vous n'avez pas trop
à vous inquiéter pour l'efficacité de l'encodage, mais le SVCD et le VCD sont
hautement gourmand en bitrate et demandent des efforts pour obtenir une qualité
acceptable.
Contraintes de Taille GOP
DVD, VCD, et SVCD vous contraignent aussi à des tailles relativement basses
de GOP (Group of Pictures ou "Groupe d'Images").
Pour des matériaux à 30 fps la plus large taille de GOP permise est 18.
Pour 25 ou 24 fps, le maximum est 15.
La taille du GOP est règlé en utilisant l'option .
Contraintes de Bitrate
Une vidéo VCD doit être nécessairement en CBR à 1152 kbps.
Cette contrainte grandement limitante vient aussi avec une taille du buffer
vbv de 327 kilobits extrèmement basse.
SVCD permet de varié des bitrates vidéo jusqu'à 2500 kbps, et une légèrement
moins restrictive taille du buffer vbv de 917 kilobits est permis.
Les bitrates de vidéo DVD peuvent s'étendre de n'importe où jusqu'à 9800 kbps
(bien que les bitrates typiques sont à peu près la moitié de ça), et la taille
du buffer vbv est 1835 kilobits.
Options de SortieMEncoder a des options de contrôle du format
de sortie.
En utilisant ces options nous pouvons lui dire de créer le type correct de
fichier.
Les options pour le VCD et le SVCD sont appelé xvcd et xsvcd, parceque ce
sont des formats étendus.
Elles ne sont pas strictement conforme, principalement parceque la sortie
ne contient pas des décalages de scan.
Si vous avez besoin de générer une image SVCD, vous devriez passer le fichier
de sortie à vcdimager.
VCD:
-of mpeg -mpegopts format=xvcd
SVCD:
-of mpeg -mpegopts format=xsvcd
DVD:
-of mpeg -mpegopts format=dvd
DVD avec NTSC étiré:
-of mpeg -mpegopts format=dvd:telecine -ofps 24000/1001
Ceci permet au contenu progressif à 24000/1001 fps d'être encodé à
30000/1001 fps tandis que la conformité DVD est maintenu.
Rapport d'Aspect
L'argument d'aspect est utilisé pour encoder
le rapport d'aspect du fichier.
Durant la lecture le rapport d'aspect est utilisé pour redonner à la vidéo
la taille correcte.
16:9 ou "Ecran Large"
-lavcopts aspect=16/9
4:3 ou "Plein Ecran"
-lavcopts aspect=4/3
2.35:1 ou NTSC "Cinémascope"
-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9
Pour calculer la taille correcte de dimensionnement, utilisez la largeur
étendu NTSC de 854/2.35 = 368
2.35:1 ou PAL "Cinémascope"
-vf scale="720:432,expand=720:576 -lavcopts aspect=16/9
Pour calculer la taille correcte de dimensionnement, utilisez la largeur
étendu PAL de 1024/2.35 = 432
Conversion du Taux d'Echantillonnage
Si le taux d'échantillonnage de l'audio du fichier original n'est pas le même
que celui requis par le format cible, la conversion du taux d'échantillonnage
est requis.
Ceci est réalisé en utilisant ensemble l'option et le
filtre audio .
DVD:
-srate 48000 -af lavcresample=48000
VCD et SVCD:
-srate 44100 -af lavcresample=44100
Utilisant libavcodec pour l'Encodage VCD/SVCD/DVDIntroductionlibavcodec peut être utilisé pour créer
des vidéos conforme VCD/SVCD/DVD en utilisant les options appropriées.
lavcopts
Ceci est une liste de champs de que vous pourriez
avoir besoin de changer dans le but de rendre un film conforme VCD,
SVCD, ou DVD:
acodec:
pour le VCD, le SVCD, ou le DVD PAL;
est plus communément utilisé pour le DVD.
L'audio PCM peut aussi être utilisé pour le DVD, mais c'est principalement
une grosse perte d'espace.
Notez que l'audio MP3 n'est compatible pour aucun de ces formats, mais de
toute façon les lecteurs n'ont souvent aucun problème pour les jouer.
abitrate:
224 pour le VCD; jusqu'à 384 pour le SVCD; jusqu'à 1536 pour le DVD, mais
utilise communément une gamme de valeurs de 192 kbps pour le stéréo à
384 kbps pour le son canaux 5.1.
vcodec:
pour le VCD;
pour le SVCD;
est habituellement utilisé pour le DVD mais peut
aussi utiliser pour des résolutions CIF.
keyint:
Utilisé pour règler la taille du GOP.
18 pour les matériaux à 30 fps, ou 15 pour les matériaux à 25/24 fps.
Les producteurs commerciaux semblent préférer des keyframe à des intervales
de 12.
Il est possible de l'avoir plus grand et et d'être encor compatible avec la
plupart des lecteurs.
Un de 25 ne devrait jamais causer de problèmes.
vrc_buf_size:
327 pour le VCD, 917 pour le SVCD, et 1835 pour le DVD.
vrc_minrate:
1152, pour le VCD. Pëut être laissé seul pour le SVCD et le DVD.
vrc_maxrate:
1152 pour le VCD; 2500 pour le SVCD; 9800 pour le DVD.
Pour le SVCD et le DVD, vous pourriez souhaiter utiliser des valeurs plus
basse dépendamment de vos propres préférences et conditions personnelles .
vbitrate:
1152 pour le VCD;
jusqu'à 2500 pour le SVCD;
jusqu'à 9800 pour le DVD.
Pour les deux derniers formats, vbitrate devrait être règlé basé sur des
préférences personnelles.
Par exemple, si vous insistez à faire tenir 20 heures ou plus sur un DVD,
vous pourriez utiliser vbitrate=400.
La qualité vidéo résutlante sera probablement assez mauvaise.
Si vous essayez d'avoir la qualité maximum possible sur un DVD, utilisez
vbitrate=9800, mais soyez prévenu que cela pourrait vous contraindre
à n'avoir que moins d'une heure de vidéo sur un DVD simple couche.
Exemples
Ceci est un paramètrage typique minimum de pour
encoder une vidéo:
VCD:
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2
SVCD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
keyint=15:acodec=mp2
DVD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:acodec=ac3
Options Avancé
Pour une qualité plus élevé d'encodage, vous pourriez aussi souhaiter ajouter
des options d'amélioration de qualité à lavcopts, comme ,
, et autres.
Notez que et , tandis que souvent
utile avec le MPEG-4, ne sont pas utilisable avec MPEG-1 ou MPEG-2.
Aussi, si vous essayez de créer un encodage DVD de très haute qualité, il
peut être utile d'ajouter à lavcopts.
Le faire peut aider à réduire l'apparition de blocs dans les zones plates
colorées.
Les mettre toute ensemble, ceci est un exemple d'un paramètrage de lavcopts
pour un DVD de plus haute qualité:
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
vqmin=1:lmin=1:dc=10
Encodage Audio
VCD et SVCD supportent l'audio MPEG-1 layer II, en utilisant un des
encodeurs MP2 toolame,
twolame,
ou libavcodec.
Le MP2 libavcodec est loin d'être aussi bon que les deux autres librairies,
cependant il devrait toujours être disponible en utilisation.
VCD supporte seulement l'audio avec un bitrate constant (CBR) alorsque SVCD
supporte aussi le bitrate variable (VBR).
Soyez purdent lors de l'utilisation du VBR car certains mauvais lecteurs
pourraient ne pas trop bien le supporter.
Pour l'audio DVD, le codec AC3 de libavcodec
est utilisé.
toolame
Pour le VCD et le SVCD:
-oac toolame -toolameopts br=224
twolame
Pour le VCD et le SVCD:
-oac twolame -twolameopts br=224
libavcodec
Pour le DVD avec le son 2 canaux:
-oac lavc -lavcopts acodec=ac3:abitrate=192
Pour le DVD avec le son 5.1 canaux:
-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384
Pour le VCD et le SVCD:
-oac lavc -lavcopts acodec=mp2:abitrate=224
Les mettre tous Ensemble
Cette section montre certaines commandes complètes pour créer des vidéos
compatible VCD/SVCD/DVD.
DVD PAL
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,\
harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:\
abitrate=192:aspect=16/9 -ofps 25 \
-o film.mpgfilm.aviDVD NTSC
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:480,\
harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:acodec=ac3:\
abitrate=192:aspect=16/9 -ofps 30000/1001 \
-o film.mpgfilm.aviAVI PAL Contenant Audio AC3 vers DVD
Si la source a déjà l'audio en AC3, utilise la copie -oac au lieu de la ré-encoder.
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,\
harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\
vbitrate=5000:keyint=15:aspect=16/9 -ofps 25 \
-o film.mpgfilm.aviAVI NTSC Contenant Audio AC3 vers DVD
Si la source a déjà l'audio en AC3, et est en NTSC @ 24000/1001 fps:
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:telecine \
-vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\
vrc_maxrate=9800:vbitrate=5000:keyint=15:aspect=16/9 -ofps 24000/1001 \
-o film.mpgfilm.aviSVCD PAL
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \
-o film.mpgfilm.aviSVCD NTSC
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \
-o film.mpgfilm.aviVCD PAL
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \
-o film.mpgfilm.aviVCD NTSC
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \
-o film.mpgfilm.avi