Écrit par : leon1789 07/10/2007 10:29
Les citations ci-dessous et quelques bribes de phrases proviennent du post http://forum.ripp-it.com/index.php?showtopic=287 Je pense malheureusement que cet "ancien" post contient bcp d'imprecisions et participe à la confusion entre la qualité d'une compression informatique (c'est ce qu'il présente) et la qualité réelle d'un encodage vidéo sur écran (dont il ne parle pas)...
Motivations
Questions habituelles, à l'ordre du jour depuis des années : quel bitrate dois-je choisir pour réaliser un bon encodage ? quelle résolution ? quel codec ? ...
Choisir un codec n'est pas l'objectif ici : c'est sujet à caution et beaucoup trop complexe (et dans un an, les choses auront évoluées). En revanche, on peut tenter une réponse sur la résolution et le bitrate, et cela sans aucun calcul savant. De manière générale...
...il n'existe pas de bitrate idéal et/ou de résolution parfaite. En effet, tout va dépendre de l'importance que vous allez accorder aux paramètres suivants : la taille du film, la résolution, la qualité souhaitée de l'image, la compressibilité du film, etc. Et ceux-ci sont intimement assujettis les uns avec les autres (...) Mais il n'en reste pas moins la possibilité d'optimiser l'ensemble de ces différents paramètres afin de tendre vers la "meilleure" compression.
Précisément, une fois le procédé d'encodage spécifié (film, pre-processing et codec), les trois valeurs
Qualité, Bitrate, Résolution sont "mathématiquement" reliées : donner des valeurs à deux d'entre elles impose une valeur précise à la troisième.
Ceci dit, trois questions peuvent alors se poser :
-- une fois le bitrate et la résolution choisis, quelle qualité réelle obtient-on ?
-- une fois la résolution et la qualité fixées, quel bitrate choisir (pour un encodage multi-passes) ?
-- une fois la qualité et le bitrate imposés, quelle résolution est la plus convenable ?
La première question a une réponse directe : pour le voir, il suffit d'encoder votre film avec le bitrate et la résolution choisis... (Cela ne demande aucun "Test sur vidéo".)
La seconde question n'est pas difficile à résoudre : une méthode est proposée ci-dessous. (Cela demande un "Test sur Vidéo".)
La troisième question est un peu plus complexe, et n'est pas traitée ce message, mais ici http://forum.ripp-it.com/index.php?showtopic=17128&st=0&gopid=254639&#entry254639 . (Le bitrate et la qualité d'encodage étant imposés, il est nécessaire de réaliser deux "Tests sur vidéo" pour connaître la résolution optimale)
Une méthode d'optimisationNous allons
donner de l'importance aux paramètres qui "se voient à l'écran" : la résolution et la qualité d'encodage. Cela nous permettra donc de déterminer le bitrate ad hoc.
Bien sûr, si le bitrate de la compression est imposé, la démarche présentée ici ne s'applique pas. En revanche, si vous hésitez entre plusieurs bitrates (pour stocker sur 1 CD, 2 CDs , 1/2 DVD , etc.), alors la méthode est simplement là pour vous guider au mieux dans votre choix.
Une fois la résolution déterminée, un "Test sur Vidéo" permet de déterminer le bitrate le plus adapté en fonction de la qualité désirée. Il s'agit simplement d'un test visant à estimer la compressibilité du film.
Ce qui nous amène à rappeler, que la compressibilité d'un film donné variera et sera spécifique de celui-ci. Ce qui semble valable pour un film en particulier au niveau de sa compression, ne le sera pas ipso facto pour un autre. Un film de presque deux heures pourra tout à fait, dans certains cas, être compressé sur 1 CD avec une très bonne qualité, alors qu'un autre, moins long, nécessitera 2 CDs pour la même qualité d'image !!!
Quelques idées pour choisir la résolution d'encodageL'interdépendance des paramètres, vous l'avez bien compris, pose le problème relatif aux systèmes complexes (liés), c'est à dire, que la variation de l'un des paramètres va entraîner celle des autres, par répercussion ou par compensation dans un sens ou dans l'autre. Il est nécessaire de fixer au moins un des paramètres.
Avec la méthode proposée ici, on détermine la résolution :
-- si la vidéo est destinée à être regardée sur un écran particulier, alors pourquoi ne pas choisir la résolution de cet écran ?
-- si la vidéo n'a pas de "destination spécifique", pourquoi ne pas garder la résolution de la vidéo originale ?
Le second paramètre à fixer est la qualité de l'encodage proprement dite : on en reparle dans le paragraphe suivant...
Quel est le bitrate optimal ?Une fois la résolution R fixée, il reste à réaliser un "Test sur Vidéo" : ce test, qui dure malheureusement plusieurs (dizaines de) minutes, va vous permettre d'obtenir le bitrate B adapté à la qualité souhaitée, compte tenu de la compressibilité de votre film. Ce bitrate B est celui obtenu par l'encodage d'un échantillon de
140 Frames toutes les 2400 Frames pendant tout le long du film (en supposant que votre vidéo dure au moins 1 heure, sinon il faut revoir les nombres 140 et 2400). Cet encodage se réalise en une passe à quantizer Q fixé, la valeur quantizer permettant de viser la qualité désirée (Q=2 est souvent considéré comme la qualité maximale, mais libre à vous de prendre Q=3,4,5,... plus le quantizer est élevé, moindre est la qualité de l'encodage).
Voilà, vous avez maintenant en main une résolution R et un bitrate B optimisés pour assurer un encodage avec la qualité que vous désirez.
Écrit par : leon1789 10/10/2007 19:04
Maintenant, je reviens sur la troisième question du message précédent.
Le problème est le suivant :
on veut réaliser une video de bitrate Bv kbps (Bv étant la valeur moyenne du débit sur l'ensemble de la vidéo) pour une qualité donnée (disons minimale acceptable).
Quelle résolution (disons maximale acceptable) doit-on choisir ?
(Pour fixer la qualité, on se donne une valeur quantizer Q quelconque, ce qui n'est valable que pour certains codecs, comme le divx par exemple)
-----------------------------------------------------------------------
L'idée principale de la méthode
-----------------------------------------------------------------------
Une fois la valeur quantizer fixée, la résolution R et le bitrate B sont liés par une formule du genre R = a B^k. On passe en écriture logarithmique : log( R ) = log(a) + k log( B ), c'est-à-dire que log( R ) et log( B ) sont sur une droite (de coefficients log(a) et k) qu'il faut déterminer.
On réalise simplement deux tests pour trouver deux points sur cette droite : on donne deux résolutions et on obtient deux bitrates via deux encodages "tests". On peut alors déterminer les valeurs uniques de a et k, et finalement déduire la résolution adaptée au bitrate désiré.
Par soucis de précision, je fais dépendre la résolution du second test du résultat du premier test, de sorte que la résolution du second test soit relativement proche de la résolution finale. Je peux faire ainsi car je sais par expérience que k est proche du nombre 1 (plus précisément compris entre 1 et 2).
Mais en réalité pour ce second test, on pourrait prendre également n'importe quelle résolution (pas trop proche de celle du premier test quand même) et cela ne changerait pas le résultat, car deux points quelconques d'une droite définissent cette droite.
-----------------------------------------------------------------------
Les formules théoriques
-----------------------------------------------------------------------
-1-
Un premier test (encodage à quantizer fixé Q) avec une resolution Xo*Yo (la résolution est celle du film par exemple, mais ce n'est pas obligatoire, libre à vous...) donne un bitrate Bo
-2-
Un second test (encodage à quantizer fixé Q) avec la resolution Xi*Yi où
Xi := Xo * (Bv/Bo)^0.5 et Yi := Yo * (Bv/Bo)^0.5
donne un bitrate
Bi-3-
On peut conclure que pour tout encodage à quantizer Q (sur la vidéo en question), avec une résolution
X*Y et un bitrate
B, on a
(X*Y)/(Xo*Yo) = (B/Bo)^k ou encore (X*Y)/(Xi*Yi) = (B/Bi)^k
où
k := log( (Xo*Yo)/(Xi*Yi) ) / log( Bo/Bi )
-4-
La résolution
Xm*Ym optimale (maximale acceptable pour le débit et la qualité imposés) est
Xm := Xo * (Bv/Bo)^(k/2) et Ym := Yo * (Bv/Bo)^(k/2)
On peut maintenant (enfin !) réaliser l'encodage multi-passes avec le débit moyen de
Bv kbps et la résolution
X*Y.
-----------------------------------------------------------------------
Exemple 1 : film peu compressibleEncoder le film "Le Projet Blair Witch" à Bv := 700 kbps avec une qualité souhaitée
(ici quantizer 4. Pourquoi 4 ? ben, c'est seulement un exemple
).
Quelle est la résolution adaptée ?
Test n°1 avec la résolution du film après rognage des bandes noires (Xo := 544) * (Yo := 384)
Via une compression (avec quantizer Q=4), on obtient le bitrate Bo := 1447 kbps
Test n°2 avec la résolution Xi * Yi
où Xi := Xo * (Bv/Bo)^0.5 = 378 et Yi := Yo * (Bv/Bo)^0.5 = 267
On arrondit Xi et Yi à des multiples de 16 (recommandé pour le divx)
on obtient alors Xi := 384 et Yi := 272
Via une compression (avec quantizer Q=4),
on obtient un bitrate Bi := 865 kbps
Désormais, pour tout encodage à quantizer Q (sur ce film),
on a (X*Y) = 11.54 * B^k
où X x Y est la résolution, B le bitrate et
k := log( Xo/Xi * Yo/Yi ) / log( Bo/Bi ) = 1.35
Et la résolution Xm * Ym optimale (maximale acceptable) est
Xm := Xo * (Bv/Bo)^(k/2) = 333 (arrondi à 336)
Ym := Yo * (Bv/Bo)^(k/2) = 235 (arrondi à 240)
On peut maintenant (enfin !) réaliser l'encodage multi-passes
avec le débit moyen de 700 kbps et la résolution 336x240
Pour mémoire, sur ce film,
le PSNR moyen de compression est de 44.36 (valeur satisfaisante)
l' Indice de Qualité est de 0.36 (valeur très élevée)
-------------------------------------------------------------------------
Exemple 2 : film très compressibleEncoder le film "Da Vinci Code" à Bv := 700 kbps
avec une qualité souhaitée
(ici quantizer 4. Pourquoi 4 ? ben, c'est seulement un exemple
).
Quelle est la résolution adpatée ?
Test n°1 avec la résolution du film après rognage des bandes noires (Xo := 720) * (Yo := 304)
Via une compression (avec quantizer Q=4),
on obtient le bitrate Bo := 443 kbps
Test n°2 avec la résolution Xi * Yi
où Xi := Xo * (Bv/Bo)^0.5 = 905 et Yi := Yo * (Bv/Bo)^0.5 = 382
On arrondit Xi et Yi à des multiples de 16 (recommandé pour le divx)
on obtient alors Xi := 912 et Yi := 384
Via une compression (avec quantizer Q=4),
on obtient un bitrate Bi := 621 kbps
Désormais, pour tout encodage à quantizer Q=4 (sur ce film),
on a (X*Y) = 45.46 * B^k
où X x Y est la résolution, B le bitrate et
k := log( Xo/Xi * Yo/Yi ) / log( Bo/Bi ) = 1.39
Et la résolution Xm * Ym optimale (maximale acceptable) est
Xm := Xo * (Bv/Bo)^(k/2) = 990 (arrondi à 992)
Ym := Yo * (Bv/Bo)^(k/2) = 418 (arrondi à 416)
On peut maintenant (enfin !) réaliser l'encodage multi-passes
avec le débit moyen de 700 kbps et la résolution 990x418.
Pour mémoire, sur ce film,
le PSNR moyen de compression est de 49.03 (valeur excellente)
l' Indice de Qualité est de 0.07 (valeur très faible)
-----------------------------------------------------------------------
Comparaison de ces deux exemples
-----------------------------------------------------------------------
Pour comparer la qualité visuelle, je regarde les deux vidéos divx dans des fenêtres assez grandes (mais dont le nombre de pixels est le même, vu que le premier film est en format 1.4 et le second au format 2.35). Je trouve que les qualités sont relativement semblables...
Si on réencode la première vidéo en augmentant sa résolution ( zoom x1.4 ), les macroblocs sont davantage visibles.
Si on réencode la seconde vidéo en diminuant sa résolution ( zoom x0.6 ), il y a davantage de flou.