Les codecs videos

 

Voici le test complet qui compare les meilleurs codecs du moment. Il est composé d'un test en aveugle, de tests PSNR et SSIM, de captures d'images et enfin de samples à télécharger. Pour avoir une bonne analogie avec une autre source vous devrez raisonner en terme de compressibilité et non de bitrate ...

  1. Introduction
  2. Protocole de test
  3. Le test métrique
  4. Le test visuel
  5. Conclusion

 

Partie 1 : Introduction

 

 

Il existe beaucoup de codec vidéo qui permettent de compresser d'une façon extrême la video. Il permettent d'enregistrer sur un cd-r de 700 Mo près de 120 min de video avec une grande qualité. Voici les principaux codecs videos:

 

VP6 One2 Technologie

C'est un codec réalisé par One2 Technologie. Il est compatible avec les formats avi et mkv. J'ai utilisé les paramètres qui sont décrits sur le forum "doom9". C'est un codec ultra performant ...

 

XviD 1.0.1 (MPEG4 ASP)

C'est la norme d'encodage la plus utilisée que ce soit avec les encodeurs XviD, DivX, 3ivX ou Nero Digital. XviD est l'encodeur MPEG4 ASP le plus évolué. Il est compatible avec les formats avi, ogm et mkv. J'ai utilisé les paramètres qui sont décrits dans le forum "Doom9". C'est un codec très performant ...

 

DivX 5.2.1 (MPEG4 ASP)

C'est la norme d'encodage la plus utilisée que ce soit avec les encodeurs XviD, DivX, 3ivX ou Nero Digital. DivX est l'encodeur MPEG4 ASP le plus populaire. Il est compatible avec les formats avi, ogm et mkv. J'ai utilisé les paramètres qui sont décrits sur le forum "Doom9". C'est un codec très performant ...

 

H264 Nero (MPEG4 AVC)

Le MPEG AVC est le successeur du MPEG4 ASP. De nombreuses compagnies développent leur propre codec H264: MainConcept, Sorensen squeeze 4, Videosoft et Moonlight par exemple. On peut aussi encoder en H264 Open Source avec x264 sous ffdshow. Le codec H264 qui sera testé ici est la version version  H264 de Nero ...

 

Windows Media Video 9 Microsoft

C'est un codec MPEG4 développé par Gro$oft. Il est compatible avec les formats avi, wmv et mkv. J'ai utilisé les paramètres qui sont décrits sur le forum "Doom9". C'est un codec très performant ...

 

Real Video 10 RealNetworks

C'est un codec développé par Real. Il est compatible avec les formats rm, rmvb et mkv. J'ai fait l'encodage avec RMFactory 2 en mode bitrate 2 Pass avec le nouveau mode EHQ. J'ai utilisé les paramètres qui sont décrits sur le forum "Doom9". C'est un codec ultra performant ...

 

Microsoft MPEG4 V3

Plus connu sous le nom de DivX 3.11 qui est un crack du codec de Gro$oft. C'est le plus vieux des codecs de "L'ère DivX". Le meilleur encodeur pour ce codec est ffdshow. Ce n'est certainement pas le plus performant des codecs mais c'est celui qui se rapproche le plus de "L'esprit DivX" ...

 

VP3, Real Magic, Theora ...

Il existe de nombreux autres codecs vidéo mais nous ne les testerons pas ici.

 

 

 

Partie 2 : Protocole de test

 

 

Nous allons donc comparer les codecs suivants: le H264, le RV10, le VP6, le WMV9, le XviD, le DivX5 et le DivX3. On définira la Compressibilité de la source à partir d'un encodage en XviD en quant 2 avec les réglages par défaut. Ce réglage ne sert que pour définir la compressibilité de la source et non pour faire l'encodage. La notion de compressibilité est très relative mais aussi très utile car nous obtenons une référence qui permet d'interpoler les tests avec toutes les autres sources.

  •  Source: Sample de 23 min 29 secondes de Matrix Reloaded PAL 720x576 16/9 MPG2 MP@ML 6150 Kbps chapitre 20 à 26. Ce sample très peu compressible présente des scènes lentes et rapides, claires et sombres avec de la fumée, des flammes ... bref toute la variété possible des scènes que l'on peut rencontrer dans un film.

 

.

 

 

  •  Encodage: Encodage en 720*304 avec des bitrates de 500 à 2000 Kbits/s  pour simuler le ripp de films en basse qualité et très haute qualité. Cela permet de tester la totalité du spectre des encodages 1 CDR et 2 CDR. En XviD quant 2 avec les réglages par défaut on a un bitrate de 1998 Kbit/s et on définira donc une compressibilité de 100% à 2000 Kbit/s avec cette source. Pour les spécialistes un encodage à ~25% correspond en général à un encodage ~q8 avec XviD réglages par défaut, ~50% à ~q4, 75% à ~q3 et 100% à un encodage ~q2 donc.

Compressibilité "Low" ~25%  "Medium" ~50% "High" ~75% "Extreme" ~100%
Bitrate 500 Kbits/s 1000 Kbits/s 1500 Kbits/s 2000 Kbits/s
XviD 88 108 Ko 176 214 Ko 264 452Ko 347 114 Ko*
RV10 88 362 Ko 176 397 Ko 264 780 Ko 353 382 Ko
VP6 89 542 Ko 178 532 Ko 266 106 Ko 354 322 Ko
WMV9 88 362 Ko 176 482 Ko 264 550 Ko 352 730 Ko
DivX5 88 650 Ko 176 980 Ko 265 078 Ko 353 178 Ko
DivX3 88 518 Ko 176 516 Ko 264 516 Ko 352 520 Ko
H264 88 625 Ko 176 688 Ko 264 751 Ko 352 811 Ko

   * ici le XviD sature à q2 mais l'écart relatif de bitrate est faible (~1.5%) et donc acceptable.

  •  Script AviSynth:

Video=Mpeg2Source("G:\Mes dossiers\B.A\Matrix\azerty.d2v")
Video=Trim(Video,0,0)
Video=Crop(Video,0,76,-0,-76)
Video=Convolution3D(Video,0,3,4,3,4,3,0)
Video=BicubicResize(Video,720,304,0,0.5)
Return(Video)

 

  •  Réglages Codecs: Voici les réglages que je pense être les meilleurs pour chacun des codecs.

    •  RV10 réglages avec RMFactory: EHQ 100 + New Rate Control "Elysean" + inloop filtering Q10 + HFE1

    •  VP6 réglages avec VDM: 2 pass VBR Best quality + Sharp 5 + Post-Process PP4

    •  WMV9 VCM réglages avec VDM: 2 pass + Maximum Quality + Complex + Post-Process PP1

    •  XviD 1.0.1 réglages avec VDM: 2 pass + Ultra high + VHQ4 + H263 Matrix + chroma motion + bframe 2/1.50/1.00  + GMC + QPel + adaptative quant + trellis + all quant 2-31 + Post-Process PP4

    •  DivX 5.2.1 réglages avec VDM: 3 pass + slow "-pq 64" + H263 Matrix + Multibframe + GMC + Psy Fast + PP4

    •  DivX 3 ffdshow réglages avec VDM: 3 pass + Rate Distortion + SAD + Chroma Motion + H263 Matrix + PP4

    •  H264 Nero: -qual extra -rcmode 2pass -br 512000 -deblock 0 -ref 5 -setef wpred -cartoon -psy 1

 

 

 

Partie 3 : Tests Objectifs

 

 

1) Test PSNR et SSIM

 

.

 

 

2) Test Frame PSNR

Nous utiliseront les courbes de PSNR pour étudier le Rate Control. En effet, lorsque l'on superpose les courbes de répartition de bitrate et de PSNR, on constate qu'elles sont symétriques. Les courbes de PSNR sont donc d'excellents outils pour comparer indirectement le Rate Control des différents codecs. La courbe de référence utilisée est la courbe frame PSNR de XviD car son Rate Control permet facilement d'obtenir une qualité constante en 2 passes: il suffit pour cela de faire la première passe avec un quant dont on sait qu'il sera proche du quant moyen de la seconde passe. Ainsi dans les encodages XviD j'ai utilisé un quantizer égal à 2 lors de la 1ere passe pour l'encodage à 100% de compressibilité, q3 pour 75%, q4 pour 50% et enfin q8 pour pour l'encodage à 25% de compressibilité.

 

a) Compressibilité "Low"

.

 

b) Compressibilité "Medium"

.

 

c) Compressibilité "High"

.

 

d) Compressibilité "Extrême"

.

 

 

 

Partie 4 : Tests Subjectifs

 

 

 

1) Comparatif "Visuel blind test"

Voici un tableau récapitulatif qui résume les impressions visuelles en "blind test" concernant les différents codecs pour les niveaux de compressibilité où ils sont testés:

 

 

Qualité visuelle XviD DivX RV10 VP6 WMV9 DivX3 H264
"Low" 5eme 6eme 3eme 2nd 4eme 7eme 1er
"Medium" 5eme 6eme 3eme 2nd 4eme 7eme 1er
"High" 4eme 6eme 2nd 3eme 5eme 7eme 1er
"Extreme" 1er 1er 1er 1er 1er 7eme 1er

Rouge: Qualité trop faible. L'image n'est pas visionnable.

Orange: Qualité médiocre. L'image est visionnable.

Jaune: Assez bonne qualité. Les artéfacts de compression sont encore assez visibles.

Vert: Très bonne qualité. Encore de rares artéfacts de compression visibles.

Bleu: Qualité excellente. Aucun d'artéfacts de compressions apparents.

 

2) Comparatif "Sample"

Voici de petits sample qui permettront de vous faire une idée de la performance des codecs: ils vous permettront de comparer les codecs entre eux mais aussi de voir quelle sera la qualité pour les différents niveaux de compressibilité:

 

 

Compressibilité XviD RV10 VP6 WMV9 DivX5 H264 x264
"Low" Sample Sample Sample Sample Sample Sample* Sample
"Medium" Sample Sample Sample Sample Sample Sample* Sample
"High" Ø Ø Ø Ø Ø Ø Ø
"Extreme" Ø Ø Ø Ø Ø Ø Ø

                                                   * il vous faudra installer la dernière version de NeroVision pour lire ces samples

 

3) Comparatif "Image"

Voici une série de captures en "low motion" et "high motion". Il est impossible de faire un test codec sur la base d'une simple comparaison d'image: il existe de trop grandes différences locales liées au types de frames (I, P, S et BFrames) et il existe aussi des différences au niveau de la régulation du bitrate pour une même source avec les différents codecs. La série de capture suivante pourra donc seulement servir à voir l'évolution de la qualité en fonction de la compressibilité pour un même codec.

a) Compressibilité Faible 25% "Low Motion" & "High Motion"

.

Source "Low"

 

b) Compressibilité Moyenne 50% "Low Motion" & "High Motion"

.

Source "Low"

 

c) Compressibilité Forte 75% "Low Motion" & "High Motion"

.

Source "Low"

 

d) Compressibilité Extreme 100% "Low Motion" & "High Motion"

.

Source "Low"

 

 

Partie 5 : Conclusion

 

 

1) Comparatif Visuel "blind test"

1er   Le H264 Nero est un codec MPEG4 AVC. C'est le codec le plus performant visuellement et de loin dans ce test. La qualité de compression surtout à faible bitrate est vraiment impressionnante. C'est le premier codec MPEG4 AVC vraiment performant et il laisse sur place la concurrence ... !!!

 

2nd   Le RV10 "Elysean" est très performant à tout bitrate: visuellement c'est un des  codec les plus complet à faible et haute compressibilité. Son nouveau Rate Control et son inloop avec seuil d'activation basé sur le quant lui ont aussi permis de considérablement s'améliorer pour les encodages à hautes compressibilités.

 

3eme   Le VP6 6.2 "Sharpeness" est un codec vraiment performant: c'est sans doute celui qui conserve le plus les détails de l'image mais l'activation de son Post-Process est obligatoire à faible bitrate. Son mode "sharpeness" permet de créer artificiellement des différences locales de quantizer entre les frames lors de l'encodage. Cela permet d'avoir visuellement une images plus "sharp" mais un réglage trop fort créera des différences locales importantes qui pourront alors devenir visibles.

 

4eme    Le WMV9 "VCM" est un codec très performant à tout bitrate. Son Post-Process réglé trop haut par défaut en PP4 devra être positionné en PP1 pour une meilleure qualité. C'est un codec qui bloque très peu mais qui aura aussi tendance à vraiment "blurer" pour les encodages à faibles compressibilité.

 

5eme   Le XviD 1.0.1 est un codec MPEG4 ASP Open Source et partiellement compatible avec les platines MPEG4. C'est un excellent codec pour les encodages à moyennes et fortes compressibilités mais ses performances auront tendances à s'écrouler pour les encodages à faibles compressibilités: le Post-Process sera alors indispensable. C'est le codec MPEG4 ASP de référence en terme de qualité.

 

6eme   Le DivX 5.2.1 est un codec MPEG4 ASP compatible avec les platines MPEG4. C'est un excellent codec pour les encodages à moyennes et fortes compressibilités mais ses performances auront tendances à s'écrouler pour les encodages à faibles compressibilités: le Post-Process sera alors indispensable. C'est le codec MPEG4 ASP le plus populaire notamment grâce aux profils d'encodages hardwares qui permettent une parfaite compatibilité avec les platines MPEG4 AS@L5.

 

7eme   Le DivX 3 ffdshow est aussi partiellement compatible avec les platines MPEG4. C'est un très bon codec pour les encodages à fortes compressibilités mais ses performances auront tendances à s'écrouler pour les encodages à moyennes et faibles compressibilités: le Post-Process sera alors aussi indispensable. Ce codec même avec l'encodeur ffdshow est largement dépassé par la concurrence.

 

 

2) Comparatifs Métriques

a) Test Average PSNR

Ce test est une moyenne du PSNR de chaque frame. Dans ce test métrique le VP6 et surtout le H264 sont largement détachés devant les autres. On trouve ensuite dans un peloton très regroupé le RV10, le WMV9 puis le XviD. Plus loin on retrouve le DivX5 et enfin le DivX3 largement derrière. Voici les équivalences en terme de qualité Average PSNR:

 

 

H264

VP6

RV10

WMV9

XviD

DivX5

DivX3

500 Kbps

Référence

560 Kbps

+12%

650 Kbps

+30%

680 Kbps

+36%

720 Kbps

+44%

800 Kbps

+60%

990 Kbps

+98%

1000 Kbps

Référence

1090 Kbps

+09%

1180 Kbps

+18%

1250 Kbps

+25%

1270 Kbps

+27%

1530 Kbps

+53%

2100 Kbps

+110%

 

 

b) Test Overall PSNR

Ce test est une moyenne pondérée du PSNR de chaque frame. Dans ce test métrique le VP6 et surtout le H264 sont encore largement détachés devant les autres. Ensuite on trouve aussi dans un peloton très regroupé le RV10, le WMV9 puis le XviD. Puis plus loin on retrouve encore le DivX5 et enfin le DivX3 largement derrière. Voici les équivalences en terme de qualité Overall PSNR:

 

 

H264

VP6

RV10

WMV9

XviD

DivX5

DivX3

500 Kbps

Référence

540 Kbps

+08%

640 Kbps

+28%

650 Kbps

+30%

690 Kbps

+38%

780 Kbps

+56%

900 Kbps

+80%

1000 Kbps

Référence

1060 Kbps

+06%

1150 Kbps

+15%

1180 Kbps

+18%

1220 Kbps

+22%

1480 Kbps

+48%

1890 Kbps

+89%

 

 

c) Le Test SSIM

C'est selon moi le meilleur test métrique: c'est celui qui se rapproche le plus de mes impressions visuelles. Le meilleur codec à ce test est le H264. Les deux meilleurs codecs sont ensuite sont le VP6 et le RV10. Le VP6 prend largement l'avantage à faible et moyen bitrate alors que le RV10 s'en sort légèrement mieux à haut bitrate. Les deux codecs suivant sont le WMV9 et le XviD. Le WMV9 est largement meilleur à faible compressibilité et le XviD prend ensuite l'avantage à partir des compressibilités moyennes. On trouve ensuite le DivX5 assez proche du XviD. Au passage on note que les modes psy du H264, DivX5 ou du XviD sont très efficaces pour ce test. Le DivX3 est logiquement beaucoup plus loin derrière. On remarquera enfin que les différences entre les codecs tendent à rapidement diminuer vers les hautes compressibilités. Voici les équivalences en terme de qualité SSIM:

 

 

H264

VP6

RV10

WMV9

XviD

DivX5

DivX3

500 Kbps

Référence

570 Kbps

+14%

640 Kbps

+28%

680 Kbps

+36%

720 Kbps

+44%

760 Kbps

+52%

890 Kbps

+78%

1000 Kbps

Référence

1090 Kbps

+09%

1120 Kbps

+12%

1230 Kbps

+23%

1180 Kbps

+18%

1320 Kbps

+32%

1610 Kbps

+61%

 

 

d) Le Test Frame PSNR

Cet extrait de Martix Reloaded se décompose en 2 parties: une première partie "high motion" très peu compressible qui représente 85% de la longueur du sample et ensuite une seconde partie "low motion" assez sombre très compressible qui représente 15% de la longueur du sample. C'est donc un sample très stressant pour le Rate Control. La moindre erreur dans l'évaluation du volume de la partie "high motion" (surtout en cas d'oversize) aura de lourdes conséquences sur la qualité de la partie "low motion". Si le Rate Control n'est pas très performant on aura alors soit un mauvais target bitrate, soit une qualité très hétérogène entre la 1ère et la 2nd partie.

 

Dans ce test aucun codec ne connaît des problèmes majeurs. Les courbes Frames PSNR sont toutes plus ou moins parallèles. Les Rate Control du H264, du DivX5 et du WMV9 en particulier connaissent cependant des difficultés pour maintenir l'écart en terme de PSNR dans la seconde partie "low motion" mais la perte de qualité est relativement faible et c'est donc visuellement difficile à mettre en évidence. Le VP6 lui arrive à maintenir une qualité constante mais par contre le target bitrate n'est pas strictement respecté. Ces remarques étant faites il faut redire que cet extrait de Matrix Reloaded est un cas extrème pour la régulation du bitrate et donc le Rate Control des codecs sera en général beaucoup moins stressé.

 

 

3) Généralités

Voici un protocole qui vous permettra de faire un encodage avec le niveau de compressibilité souhaité: Si on défini le niveau de quantisation comme étant le niveau absolue de qualité on aura alors une qualité constante avec une même source si la qualité par unité de surface reste constante. J'utilise une formule empirique pour définir cette constance:

 

 

bits/( pixels^(3/4) * fps)

 

 

Dimensions 480*208*25 640*272*25 720*304*25 1280*544*25
encodage q=4 576 Kbps 872 Kbps 1032 Kbps 2431 Kbps
bits/pixel*fps 0.23 0.20 0.19 0.14
bits/pixel^0.75*fps 4.10 4.09 4.07 4.03


 

On veut faire un encodage avec un bitrate Bf et une compressibilité C. Lors de la première passe avec une résolution Ri on obtient bitrate Bi en quant 2. On fera donc l'encodage avec une résolution Rf  pour obtenir la compressibilité C et le bitrate Bf.

 

 

Rf = Ri*(Bf/(C*Bi))^(4/3)

 

 

Exemple: ma source est en 16/9 et je fait ma première passe en 640*352 et j'obtiens un bitrate de 1550 Kbps en quant 2. Je veux faire mon encodage à 700 Kbps et 55% de compressibilité. La résolution pour obtenir ces paramètres est Rf:


Rf = 640*352*(700/(0.55*1550))^(4/3)
Rf = 173 218 pixels
Rf = 554*312 comme résolution idéale en 16/9
Rf ~ 576*320 sera donc un bon choix mod16 par exemple ...

 

 

Précédente Accueil Remonter Suivante