13.4. Encodé avec le codec `XviD`
Précédent | Chapitre 13. L'encodage avec MEncoder | Suivant

## 13.4. Encodé avec le codec `XviD`

`XviD` est une bibliothèque 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.

### 13.4.1. 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.

### 13.4.2. Options d'encodage de `XviD`

- vhq Ce paramètre affecte l'algorithme de choix de macrobloc, où plus la valeur du paramètre est élevée, meilleure sera la décision. Le paramètre par défaut peut être utilisé de façon sûre pour tous les encodages, alors que des paramètres plus élevés aident toujours le PSNR mais sont significativement plus lents. Veuillez noter qu'un meilleur PSNR ne veut pas forcément dire que l'image sera mieux, mais vous informe de la proximité par rapport à l'image originale. Désactiver l'option 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. L'impact sur la vitesse est négatives, et la qualité est un peu améliorée (environ +0.1dB PSNR).

- max_bframes Un plus grand nombre de B-frames consécutives permis améliore habituellement la compressibilité, bien qu'il puisse également entraîner plus d'artefacts carrés. Le paramétrage par défaut est un bon compromis entre compressibilité et qualité, mais vous pouvez l'augmenter jusqu'à 3 si vous êtes obnubilé 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 assurer que le bitrate cible est assez élevé pour 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 `max_bframes`; si vous êtes obnubilé par le bitrate, vous devrez augmenter `max_bframes` et `bf_threshold`, tandis que vous devriez augmenter `max_bframes` et réduire `bf_threshold` ainsi donc l'encodeur peut utiliser plus de B-frames aux seuls endroits qui les nécessitent vraiment. Un nombre bas de `max_bframes` et une valeur élevée de `bf_threshold` 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 vieilles versions DivX (ce 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és autre part sur la vidéo, augmentant l'ensemble de la qualité visuelle. Vous devriez toujours l'utiliser étant donné qu'il impacte énormément sur la qualité. Même si vous recherchez de la vitesse, ne le désactivez pas jusqu'à ce que vous réduisiez `vhq` et toutes les autres options plus gourmandes en CPU à leur minimum.

- hq_ac Active une meilleure méthode d'estimation du coût en coefficient, ce qui réduit passablement 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ée.

- 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 les heuristiques pour ce type de contenu.

- me_quality Ce paramètre contrôle la précision de l'estimation de mouvement. Le plus élevé `me_quality` 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 le désactiver à 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 `me_quality` 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éduit 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 `me_quality`.

- 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 liée à cette option dépend grandement des préférences personnelles et des paramètres de type et moniteurs utilisés pour le regarder (typiquement, cela ne semblera pas aussi bon si c'est plus lumineux ou si c'est un moniteur TFT).

- qpel Élève le nombre de vecteurs de mouvement candidats en augmentant la précision de l'estimation de mouvement de halfpel (demi-pixel) à quarterpel (quart de pixel). L'idée est de trouver de meilleurs vecteurs de mouvement pour réduire le bitrate (ou augmenter la qualité à bitrate constant). 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 des résultats vraiment meilleurs. Assez souvent, le codec gaspille encore des bits sur la précision en plus, mais en retour il n'y aura que peu ou pas de qualité supplémentaire. Malheureusement, il n'y a aucune façon de prévoir les avantages possible de `qpel`, donc vous avez précisément besoin de l'encoder avec et sans pour en être sûr.

  `qpel` peut quasiment doubler la durée d'encodage, et ne requiert pas moins de 25% de puissance processeur en plus pour décoder. Cela n'est pas supporté par tous les lecteurs.

- gmc Essaie de sauver des bits sur des scènes panoramiques en employant un vecteur simple de mouvement pour la frame entière. Cela augmente à peu près toujours le PSNR, mais ralentit l'encodage de façon significative (et aussi le décodage). Par conséquent, vous devriez seulement l'employer si vous avez augmenté `vhq` au maximum. Le GMC de `XviD` est plus sophistiqué que celui de DivX, mais il est seulement supporté par quelques lecteurs.

### 13.4.3. Profils d'encodage

XviD supporte des profils d'encodage via l'option `profile`, ce qui est utilisé pour imposer des restrictions sur les propriétés du flux vidéo XviD pour qu'il puisse être relu sur tout ce qui supporte 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.

| Simple | Simple avancé | DivX
Nom de profil | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | Handheld | NTSC Portable | PAL Portable | NTSC Home Cinéma | PAL Home Cinéma | TV Haute Définition
Largeur [pixels] | 176 | 176 | 352 | 352 | 176 | 176 | 352 | 352 | 352 | 720 | 176 | 352 | 352 | 720 | 720 | 1280
Hauteur [pixels] | 144 | 144 | 288 | 288 | 144 | 144 | 288 | 288 | 576 | 576 | 144 | 240 | 288 | 480 | 576 | 720
Frame rate [fps] | 15 | 15 | 15 | 15 | 30 | 30 | 15 | 30 | 30 | 30 | 15 | 30 | 25 | 30 | 25 | 30
Bitrate moyen maxi [kbps] | 64 | 64 | 128 | 384 | 128 | 128 | 384 | 768 | 3000 | 8000 | 537.6 | 4854 | 4854 | 4854 | 4854 | 9708.4
Bitrate moyen maximal plus de 3 secs [kbps] |  |  |  |  |  |  |  |  |  |  | 800 | 8000 | 8000 | 8000 | 8000 | 16000
B-frames maxi | 0 | 0 | 0 | 0 |  |  |  |  |  |  | 0 | 1 | 1 | 1 | 1 | 2
Quantification MPEG |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |
Quantification adaptative |  |  |  |  | X | X | X | X | X | X | X | X | X | X | X | X
Encodage entrelacé |  |  |  |  | X | X | X | X | X | X |  |  |  | X | X | X
Quaterpixel |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |
Compensation globale du mouvement |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |

### 13.4.4. Exemples de paramètres d'encodage

Les paramètres suivant sont des exemples de différentes combinaisons d'option d'encodage qui affectent la compensation entre la vitesse et la qualité pour le même bitrate cible.

Tous les paramètres d'encodage ont été 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 selon votre source vidéo, votre type de machine les développements logiciels, vous pouvez obtenir des résultats très différents.

Description | Options d'encodage | vitesse (en fps) | Perte PSNR relative (en dB)
--- | --- | --- | ---
Très haute qualité | `chroma_opt:vhq=4:bvhq=1:quant_type=mpeg` | 16fps | 0dB
Haute qualité | `vhq=2:bvhq=1:chroma_opt:quant_type=mpeg` | 18fps | -0.1dB
Rapide | `turbo:vhq=0` | 28fps | -0.69dB
Temps réel | `turbo:nochroma_me:notrellis:max_bframes=0:vhq=0` | 38fps | -1.48dB

Précédent | Niveau supérieur | Suivant
13.3. Encodage avec la famille de codec `libavcodec` | Sommaire | 13.5. Encodage avec le codec `x264`