|

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 ...
-
-
-
-
-
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.
|
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) |
|
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é:
* 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"
b) Compressibilité Moyenne 50% "Low Motion"
& "High Motion"
c) Compressibilité Forte 75% "Low Motion" &
"High Motion"
d) Compressibilité Extreme 100% "Low Motion"
& "High Motion"
1) Comparatif
Visuel "blind test"
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 ... !!!
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.
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.
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é.
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é.
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.
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 ...

|