Accueil

 

 

 
 

08-05-2005 03:39:47  Codecs Vidéo : Tests et choix

Codecs Vidéo : Tests et choix

Présentation

  Le stockage de fichiers vidéo est très coûteux en terme de place disque. C'est pourquoi dès que l'on désire stocker des films ou des clips vidéo sur n'importe quel support informatique (ordinateur, CD-ROM ou DVD), on doit compresser les fichiers. Pour cela, les logiciels auteurs utilisent des codecs (COmpression / DECompression Software) au même titre que les logiciels de lecture comme les lecteurs DVD ou Windows Média Player qui eux les utilisent pour décompresser la vidéo avant de l'afficher. Ces codecs servent donc aussi bien à compresser qu'à décompresser la vidéo. Les divers algorithmes utilisés utilisent d'une part la compression spatiale (si une partie de l'image se répète, on ne stocke qu'une fois cette partie), et d'autre part la compression temporelle (on enregistre des images clés puis pour les images suivantes, on n'enregistre que les parties qui sont modifiées par rapport à cette image de référence).

  Un TRES grand nombre de codecs existent et cohabitent dans nos ordinateurs et appareils multimédia. Cela est dû au besoin sans cesse en augmentation de pouvoir stocker plus de contenu sur un support donné (disque dur ou CD-ROM) ce qui entraîne une amélioration constante des algorithmes de compression et donc des codecs correspondants. D'autre part, ces petits programmes s'installent sans aucun problème les uns sur les autres dans un ordinateur, ce qui fait qu'il y a de grandes chances que de très vieux codecs subsistent encore sur votre ordinateur (vous les avez installé un jour que vous désiriez regarder une vidéo les utilisant, ou bien par l'intermédiaire d'une mise à jour de votre logiciel de lecture multimédia), alors même qu'ils sont aujourd'hui complètement obsolètes et plus du tout utilisés.

  Certains codecs sont devenus des standards (comme le Mpeg 2 qui est le standard d'origine du DVD), certains sont très connus (comme le DivX qui sert à compresser les DVD pour les stocker sur votre disque dur), certains sont totalement libres de droit alors que d'autres sont payants, certains sont issus de grandes entreprises (Microsoft, Apple) alors que certains sont issus de projets open-sources (XVid, dérivé du MPeg 4).

Voici une liste des plus importants d'entre eux :

  • Vidéo MPEG1 (VCD) et MPEG2 (DVD)
  • Décodeurs pour DivX : OpenDivX (DivX4), DivX 5.01, XVid, MS MPEG4 v1, v2 et autres variantes MPEG4
  • Décodeur pour Windows Media Video 7/8 (WMV1/WMV2), et Windows Media Video 9 (WMV3)
  • Décodeurs Sorenson 1 (SVQ1) et Sorenson 3 (SVQ3) (QuickTime)
  • Codecs Cinepak et Intel Indeo (3.1, 3.2, 4.1, 5.0)
  • MJPEG, AVID, VCR2, ASV2 et autres formats matériels
  • VIVO 1.0, 2.0, I263 et autres variantes H.263 (+)
  • RealVideo 1.0 & 2.0 de libavcodec, et RealVideo 3.0 & 4.0 utilisant les librairies RealPlayer
  • Décodeur pour HuffYUV
  • Vieux et simples formats variés similaires à RLE

Formats de fichier et Conversion

  Nous ne nous intéressons ici qu'aux formats de stockage sur disque dur informatique (pas sur les DVD). Lorsque vous récupérez ou créez un fichier vidéo, cinq formats de fichier sont les plus courants :

  • AVI : le plus commun, le plus portable et le plus reconnu par les différents logiciels, c'est aussi celui qui permet d'avoir le plus d'infos sous Windows ("Propriétés" -> "Détails")
  • WMV : d'origine Microsoft, c'est un de ceux que l'on trouve le plus souvent sur Internet
  • MPG : aussi utilisé que le précédent sur Internet, les codecs utilisés sont de la famiile des MPEG
  • MOV : d'origine Apple (QuickTime)
  • RM : correspond aux fichiers diffusés en "stream" sur Internet, codés avec la technologie RealPlayer

  Notons tout de suite un point important : si le format MOV est spécifique du codec QuickTime correspondant, comme le format RM est spécifique aux codecs RealPlayer, les autres formats de fichier (AVI, WMV, MPG) ne sont pas liés à un codec particulier. Il est donc tout à fait possible d'avoir un *.MPG codé avec Windows Media Video ou bien un *.WMV encodé en MPEG2 (ce dernier cas est plus rare).

  Le besoin de convertir un fichier vidéo d'un format à un autre provient :

- soit du besoin d'utiliser le fichier dans un logiciel qui n'accepte pas le format d'origine.
- soit de la volonté d'utiliser un autre codec que celui d'origine (principalement pour gagner de la place).
- soit du besoin d'uniformiser sa librairie (avoir tous ses fichiers au même format et encodés avec le même codec peut avoir ses avantages).


  Lors de cette opération de conversion, une fois le format déterminé en fonction des besoins, se pose la question suivante :
Quel codec doit-on utiliser ?

  En effet, tous les logiciels qui font ce genre d'opération travaillent de la même manière : ils décodent la vidéo originale puis la ré-encodent au format choisi. Donc même si on ne désire pas modifier la vidéo (faire un montage entre plusieurs scènes ou ajouter des effets de transition) ni gagner de la place (parce que le fichier original est déjà suffisamment compressé), le choix d'un codec est nécessaire si on ne veut pas se retrouver avec un fichier entièrement décompressé qui, comme nous l'avons dit en introduction, prend une place prohibitive sur le disque.
Les tests décrits ci-dessous permettent de répondre à cette question, ou tout du moins d'éliminer un certain nombre de mauvais choix parmi la multitude des codecs disponibles.

Test des codecs

  Le test a consisté à convertir une séquence vidéo au format AVI en utilisant tous les codecs disponibles sur mon ordinateur, afin de déterminer lequel choisir pour une utilisation plus large, avec 2 critères de choix : la qualité obtenue et la taille du fichier résultant. Evidemment, le but est de faire un compromis entre ces deux critères (si nécessaire), sachant qu'un troisième critère, la rapidité de l'encodage, a été mis de côté. En effet, les tests ont été réalisés en février 2005, sur un vieux P3 500MHz, ce qui fait que les temps ne sont pas vraiment représentatifs. Il est évident que les mêmes tests sur un P4 2.4GHz donneraient des résultats plus rapides. La colonne "temps" a donc été retirée du tableau des résultats.

Caractéristiques du fichier de test :
Séquence de 45 secondes, format 320 x 240, 30 frames/sec (plus exactement 29.97, standard NTSC) soit un total de 1348 frames.
Une fois totalement décompressé, le fichier utilisait une place de 304 Mo, soit un bitrate de 6925 Ko/sec.

  Dans le tableau ci-dessous, les résultats sont présentés en gros du moins bon au meilleur, les couleurs correspondent aux conclusions suivantes :

-  Ne marche pas lors des essais. Pas de test possible. 
-  Mauvais. A ne pas utiliser (souvent très vieux codec). 
-  Moyen. Des défauts en qualité et/ou un taux de compression trop faible. 
-  Bon. Bonne qualité et bon taux de compression. 


Remarque : le codec DivX 5.0.x a volontairement été écarté du test, ce format (qui donne par ailleurs de bons résultats) n'étant pas adapté au besoin de stocker des petites séquences vidéo au format AVI (il est utilisé pour les gros films DVD). Même chose pour le codec DV 2.0.4 de chez MainConcept.

Autre remarque importante : les codecs ont été utilisés "tels quels", c'est à dire avec les options par défaut, sans aucun paramètrage. Il est donc possible que certains codecs puissent obtenir de meilleurs résultats à l'aide d'options diverses (réglage du taux de compression par exemple). Ce choix a été déterminé par le fait que certains logiciels ne permettent pas de faire cette configuration. D'autre part, certains codecs sont limités dans leur version gratuite à ces options par défaut (il faut payer pour pouvoir modifier le paramètrage).

Codec VideoTaille résultatBitrateCompressionQualité / Commentaire
MSscreen 9 encoder
VDOnet VDOWave
Microsoft H.261 VideoCodec
Microsoft H.263 VideoCodec
DV Video Encoder155 Mo3540 Ko/sec51,08 %Bien trop gros...
MJPEG Compressor103 Mo2352 Ko/sec33,94 %Trop gros...
Microsoft RLE69 Mo1567 Ko/sec22,62 %Gros et mauvaise qualité (petits points)
Microsoft Video 121 Mo485 Ko/sec7,00 %Très mauvaise (dégradés + points)
Intel Indeo Video R3.2 (IR32)8 Mo182 Ko/sec2,63 %Mauvaise (gros pixels)
Codec CinePak Radius30 Mo684 Ko/sec9,88 %Qualité moyenne (dégradés)
Intel Indeo Video Interactive (IR41)12 Mo268 Ko/sec3,88 %Légèrement flou sur les mouvements
Indeo Video 5.049 Mo203 Ko/sec2,93 %Correcte (un peu de dégradés)
Microsoft MPEG-4 VideoCodec V15 Mo117 Ko/sec1,70 %Qualité correcte
Microsoft MPEG-4 VideoCodec V25 Mo117 Ko/sec1,69 %Correcte (un peu de dégradés)
Microsoft MPEG-4 VideoCodec V35 Mo117 Ko/sec1,69 %Correcte (un peu de dégradés)
XviD MPEG-4 Codec4 Mo89 Ko/sec1,29 %Correcte (qques dégradés)
Microsoft Windows Media Video 93 Mo72 Ko/sec1,04 %Correcte


Conclusions

  Ces tests ne sont bien évidemment pas exhaustifs, ils ne concernent que les codecs disponibles à un instant donné, sur un matériel donné. D'autre part, une seule séquence a été testée et si il est aisé de détecter une mauvaise ou très mauvaise qualité, il est bien plus difficile de déterminer la meilleure qualité entre deux fichiers corrects.

  La première conclusion est évidente : les codecs plus récents donnent à la fois de meilleurs taux de compression et de meilleures qualité. Les "vieux" codecs compressent moins et en plus leur qualité est moindre. L'exception vient du codec Intel, la version 3.2 compresse plus que la version 4.1 mais en plus mauvaise qualité.
Si on désire un fichier suffisamment compressé (avec les options par défaut, rappelons-le), il faut (dans notre exemple) obtenir une taille inférieure à 5 Mo. Soit on prend l'implémentation MPEG-4 de Microsoft (plutôt dans sa version 1, ???), soit celle de XviD (open-source et donc disponible sur toutes les plateformes), soit enfin le WMV 9, qui est le dernier format utilisé par Windows Media Player.

  Personnellement, c'est ce dernier codec que j'ai choisi pour la suite de mes applications : c'est le plus récent disponible pour moi, la qualité est tout à fait satisfaisante et le taux de compression (toujours par défaut) est bluffant puisqu'on obtient un facteur 96 par rapport au fichier totalement décompressé. Son seul défaut est de ne pas proposer de configuration lorsqu'on le télécharge automatiquement par l'intermédiaire de Windows Media Player.

Remarque : lorsque l'on convertit une video, il faut également choisir un codec AUDIO. Là encore, on a le choix entre plusieurs codecs (un peu moins qu'en vidéo). Il faudrait donc faire le même genre de test sur les codecs audio. Mais les différences sont moins notables qu'en vidéo et assez difficiles à estimer (dans le cadre choisi, c'est à dire dans le cas d'une piste vidéo + une piste audio mélangée). Pour ma part, j'ai choisi (un peu arbitrairement) le MPEG Layer 3.