Ces essais ont été réalisés grace à la lecture de ce post :
http://forum.doom9.org/showthread.php?threadid=75527
Ce qui suit ci-dessous est très largement inspiré de ce post. Mon anglais étant très mauvais, veuillez me pardonner si la traduction n'est qu'approximative et me corriger si besoin....
Le paramétrage par défaut du codec XviD pose des problèmes avec des films "hors normes". Par "hors normes" il faut comprendre que ces films sont essentiellement composés de scènes lentes et/ou sombres (c'est mon cas, ainsi que l'auteur du post sur Doom). Dans ce cas le codec gère mal le flux et provoque des non respect de taille finale de fichier. Et là , il y a 2 cas de figure distincts :
- Si vos quantizers sont réglés en 2-31 (mini=2, maxi=31) vous serez en "undersize" (taille finale fichier < taille demandée)
- Si vos quantizers sont réglés en 1-31 vous serez en "oversize" (taille finale fichier > taille demandée)
Par rapport à ceci, on peut apporter quelques remarques supplémentaires :
- Définir un bitrate ou une taille finale via le panneau de configuration du codec ne change rien au résultat final
- Plus le bitrate demandé (ou calculé) est important plus l'erreur sera importante aussi
- La matrice H.263 génère plus d'écart que la matrice MPEG
- Il y a eu avec l'apparition des dernières RC du codec un changement du paramétrage des quantizers par défaut (passage de 2-31 à 1-31). La raison "serait" : Que le risque d'oversize en Quant 1-31 est moins important que le risque d'undersize en Quant 2-31. Mais il est reconnu que les cas d'oversize/undersize existent et sont directement imputables au codec.
Pour résoudre ce pb de respect de la taille demandée, il existe au moins 3 solutions :
- Quant 1-31 + Overflow à 20%
- Quant 2-31 + resize très grand + script avs "hard" (pas de denoiser, un resize de type Lanczos par exemple) + utilisation matrice MPEG ou Andreas_78
- Quant 1-31 + pas de B-VOP + Overflow à 0/4/9
A partir de ceci j'ai effectué des tests sur mon film à pb. L'encodage a été réalisé sur la totalité du film et non une portion. Le film en question est un dessin animé.
Mon paramètrage par défaut du codec : Profil AS@L5, matrice H.263, B-VOPs 1/1.50/1.00, Motion=6, VHQ=1, Use chroma
La taille demandée du film à chaque encodage est de 699 + 5Mo d'écart (donc une taille cible de 699 Mo)
Le script avisynth utilisé est le suivant :
CODE
DimX = 576
DimY = 432
Video = Mpeg2Source( Source, idct=CPUType)
Video = Crop(Video, Left, Top, -Right, -Bottom)
Video = Undot(Video)
Video = Tweak(Video, sat=1.1, bright=2, cont=1.1)
video = lanczosresize(video, DimX, DimY)
Video = Limiter(Video)
DimY = 432
Video = Mpeg2Source( Source, idct=CPUType)
Video = Crop(Video, Left, Top, -Right, -Bottom)
Video = Undot(Video)
Video = Tweak(Video, sat=1.1, bright=2, cont=1.1)
video = lanczosresize(video, DimX, DimY)
Video = Limiter(Video)
Encodage N°1 :
Paramétrage par défaut + Quant 2-31
Taille finale fichier = 398 Mo
Encodage N°2 :
Paramétrage par défaut + Quant 1-31
Taille finale fichier = 1100 Mo (de mémoire je n'ai pas gardé le fichier et trop faignasse pour le refaire...)
Encodage N°3 :
Idem N°2 mais avec réglage des Overflow
Overflow control strength = 20
Max overflox improvement = 20
Max overflow degradation = 20
Taille finale fichier = 698 Mo
Encodage N°4 :
Idem N°2 mais avec matrice codec MPEG et dans le fichier avs : DimX = 720 et DimY = 544
Taille finale fichier = 696 Mo
Encodage N°5 :
Idem N°2 mais pas de B-Frames et réglage des Overflow
Overflow control strength = 0
Max overflox improvement = 4
Max overflow degradation = 9
Taille finale fichier = 698 Mo
Donc effectivement les 3 solutions (encodages 3, 4 et 5) permettent d'obtenir (à quelques Mo) la taille demandée. Par contre au niveau qualité de l'image il y a de grosses différences. J'ai comparé les encodages 1, 3, 4 & 5. L'encodage N°2 étant éliminé d'office (et puis ça m'arrange puisque je ne l'ai plus..)
L'encodage N°3 donne le plus mauvais résultat (apparition de pixels dans les mouvements). L'encodage N°4 apporte beaucoup de bruit et donc une image de moins bonne qualité.
Reste l'encodage N°1 et N°5 et là c'est très proche (paradoxalement avec 300 Mo de différence, peut être à cause de la nature du film : dessin animé ??). Je dirai que l'encodage N°5 est un poil plus net et avec moins de bruit mais là on commence à rentrer dans le subjectif....
Pour finir quelques chiffres extrait de DivX DRF Analyzer
CODE
Encod1 Encod3 Encod4 Encod5
I Frames:1.12% 1.12% 1.17% 1.13%
P Frames:50.18% 50.18% 50.34% 98.87%
B Frames:48.70% 48.70% 48.49%
DRF=1&2: 50.8% 18.1% 24.1% 64.0%
DRF=3: 0.0% 15.9% 26.4% 36.0%
DRF=4: 49.2% 9.7% 37.0% 0.0%
DRF=5: 0.0% 9.1% 11.6% 0.0%
DRF=6: 0.0% 1.5% 0.9% 0.0%
DRF=7: 0.0% 9.1% 0.0% 0.0%
DRF=8: 0.0% 2.2% 0.0% 0.0%
DRF=9: 0.0% 3.8% 0.0% 0.0%
DRF>9: 0.0% 30.5% 0.0% 0.0%
La dernière chose qu'il me reste à faire est de tester une portion de l'encodage N°5 sur ma platine, car le graphe de DivX DRF Analyzer revèle des pics monstrueux, mais avec peu de frames contigües. A voir donc....
Je veux bien vous montrer des shots, mais j'ai pas de site pour les stocker....
La conclusion de tout ceci ?? ...je serai tenté de dire que la solution N°1 avec son pb d'undersize était suffisante...peut on le généraliser à tous les cas d'undersize, j'en sais rien.
Faudra "tester pour voir"....