Sites


Blender pour le montage vidéo

Optimiser le poids des fichiers : export avancé

Afin de produire des médias vidéos de bonne qualité, Blender propose plusieurs options permettant de contrôler le ratio qualité/poids des fichiers produits. Nous allons ici nous intéresser à ces contrôles afin de cibler de manière plus précise notre public et la qualité requise en fonction de celui-ci. Nous verrons également que des préconfigurations d'encodage nous aideront à prendre les bonnes décisions.

Varier la quantité d'information et optimiser le poids des fichiers

Depuis la sortie de Blender 2.79b, de nouveaux paramètres bien plus évolués que précédemment sont accessibles via l'intégration d'une version récente de l'encodeur FFMPEG. Celui-ci a su s'imposer depuis plusieurs années comme le couteau suisse de la vidéo, allant même jusqu'à devenir la référence dans le domaine professionnelle. De nombreux services d'ingénierie au sein des chaînes de télévision du monde entier l'utilisent tous les jours. Nous allons voir ici comment tirer le meilleur parti de cette intégration en encodant des fichiers de poids optimisé, tout en maintenant une qualité visuelle optimale.

L'encodage d'une vidéo ou d'une source audio se fait dans les encodeurs moderne de manière adaptative. Historiquement, avant que les techniques de compression ne se développent réellement, une image complètement noire prenait sur le disque dur autant de place que la photo d'une forêt regorgeant de détails, encodant chaque pixel de l'image de manière indépendante.

On se rend pourtant compte qu'une image noire pourrait être décrite avec beaucoup moins d'informations qu'une image très détaillée, en indiquant par exemple que tous les pixels de l'image sont identiques. On peut ainsi exploiter les redondances d'informations dans une image ou une séquence vidéo afin d'optimiser le poids du fichier résultant. Dans le cas d'une image fixe, on exploitera les redondances spatiales, alors que dans le cas d'une vidéo, on exploitera les redondances temporelles, où une partie de l'image reste inchangée au cours du temps. C'est en effet souvent le cas dans le cadre d'une interview où tout l'arrière-plan est généralement fixe.

Les encodeurs modernes exploitent cette évolution des besoins au cours du temps. Si les variations de l'image sont nombreuses dans un court laps de temps, alors il faudra enregistrer beaucoup d'informations chaque seconde. Si au contraire on constate que le contenu des images n'évolue que peu, alors l'encodeur peut se permettre de sauvegarder moins d'informations par seconde. A la manière d'une rivière, dont l'intensité du courant peut évoluer en fonction des crues, on retrouve en vidéo cette notion de débit variable. La variation du débit en fonction du contenu de l'image et de son évolution dans le temps peut ainsi réduire le poids du fichier final.

Les paramètres d'encodage se trouvent toujours dans la section Render de la fenêtre de propriétés.

Propriétés de rendu

Superviser manuellement le débit d'un média

De nombreux mécanismes de contrôle de débit ont été développés par le passé, demandant bien souvent à l'utilisateur de définir lui-même la quantité de données à allouer à l'encodage de l'image et du son.

Plus le débit est faible et plus l'encodeur se doit de résumer le contenu d'une image ou d'un son avec peu d'informations. Le fichier résultant est alors léger, mais bien évidemment, les détails fins de l'image sont littéralement oubliés et seront à jamais irrécupérables. Nous pouvons nous rendre compte de cette forte réduction de débit par l'apparition de gros carrés dans l'image. A contrario, si on permet à l'encodeur d'utiliser une grande quantité d'informations chaque seconde, tous les détails de l'image seront conservés de manière fidèle, au prix d'un fichier de poids beaucoup plus élevé.

Initialement, les encodeurs demandaient à l'utilisateur de définir lui-même un débit d'informations constant pour l'encodage des contenus. Ce processus porte l'acronyme de CBR (Constant BitRate - Débit Constant). Il vise à définir un débit d'informations utilisé tout au long de la vidéo, quel que soit son contenu. Que celui-ci soit paisible ou au contraire dynamique, la même quantité d'informations est utilisée chaque seconde. Il faut donc trouver une valeur qui corresponde à la fois aux deux types de scénarios. La qualité peut bien souvent ne pas convenir à l'action de la séquence. Pour éviter d'avoir un poids de fichier trop important, l'utilisateur a tendance à réduire le débit, au détriment de la qualité. De plus, cette valeur qui doit être entrée dans l'encodeur est exprimée en kilobits par seconde, une notation bien difficile à comprendre et à appréhender pour des personnes néophytes en encodage.

Afin de pallier à ce problème, un deuxième type de contrôle de débit vu le jour. Le VBR (Variable Bitrate - Débit Variable), permettant de moduler la quantité d'informations par seconde en fonction du contenu. L'encodeur se charge de définir si celui-ci requiert beaucoup ou peu de débit de manière automatique, mais demande tout de même à l'utilisateur de rentrer cette fois-ci non pas une, mais trois valeurs. Nous allons devoir par conséquent définir une valeur minimum en dessous de laquelle l'encodeur ne pourra pas descendre, définissant ainsi la qualité basse, une valeur maximum définissant la qualité haute et vers laquelle l'encodeur tendra quand le contenu de l'image sera complexe à encoder. Pour finir, il nous faut définir une valeur moyenne, nommée valeur cible, que l'encodeur essaye d'utiliser la plupart du temps.

Bien que ce mode de compression nous offre plus de contrôle, il requiert à nouveau de la part de l'utilisateur une connaissance accrue du processus d'encodage afin de choisir les bonnes valeurs en kilobits par seconde. De nombreux essais sont alors nécessaires pour satisfaire les exigences qualités/poids de certains modes de livraison. Pour un envoi par mail par exemple, on doit se contenter du poids maximal d'une pièce jointe.

Blender offre la possibilité de manuellement définir ces paramètres, en passant le Output Quality de la section Encoding en None; Use constant bit-rate.
On voit alors apparaître dans la sous-section Rate, les valeurs de Bitrate moyen ainsi que les valeurs maximale et minimale.

Contrôler le débit vidéo de manière automatique

Afin de rendre le contrôle de débit accessible pour le commun des mortels, un nouveau mode de contrôle a fait son apparition il y a quelques années, le CRF (Constant Rate Factor - Facteur Constant de Débit). Celui-ci ne demande pas à l'utilisateur de fournir des valeurs informatiques pour ajuster le débit d'un média, mais requiert une information concernant la qualité finale requise. Il suffit par conséquent d'informer l'encodeur que nous voulons obtenir une vidéo et/ou un son de qualité moyenne, faible ou au contraire élevée et de laisser le processus choisir les valeurs de débit automatiquement. Celles-ci pourront alors varier au cours du temps en fonction du contenu. Le débit sera important si l'action le demande et sera réduit si peu de modifications sont apportées à l'écran.

Cette notion de qualité est représentée dans le CRF par un nombre pouvant évoluer de 0 à 51. Plus ce nombre se trouve proche de zéro et plus la qualité du média sera importante. Plus elle s'approche de 51 et moins l'image sera regardable. Afin de rendre ces paramètres encore plus accessibles, Blender propose 8 niveaux de qualité, allant de très haute à très faible et auxquels une valeur CRF est assignée.

On trouve ces paramètres à nouveau dans le menu déroulant Output Quality.

On peut remarquer que le fait de choisir un profil de qualité grise complètement la partie de l'interface permettant de rentrer manuellement les valeurs de débit. La machine se chargeant à la place de l'utilisateur de contrôler ces paramètres, il est normal d'en bloquer l'accès.

Cette manière d'encoder est actuellement la plus efficace et il est fortement recommandé d'utiliser celle-ci.

Définir la vitesse d'encodage et améliorer le rapport qualité/poids

Afin de définir si l'encodeur peut se permettre de réduire le débit, ou au contraire se doit de l'augmenter, celui-ci doit analyser le contenu de l'image, son évolution dans le temps et surtout les mouvements des formes et objets qui composent la vidéo. Plus l'encodeur analysera les segments futurs de la vidéo par rapport à un instant T et plus il pourra anticiper les mouvements, voir décréter qu'une grosse partie de l'image est complètement immobile pendant un laps de temps très long. Si ce dernier cas se présente, on peut donc se permettre de ne pas réencoder un grand ensemble de pixels pendant un long moment, réduisant fortement le poids du fichier.

A contrario, si on demande à l'encodeur de se dépêcher afin d'obtenir rapidement le fichier voulu, celui-ci n'aura pas le temps d'analyser une grande section d'images et ne pourra pas pratiquer une forte optimisation temporelle. La qualité visuelle de l'image sera identique à ce qu'une analyse lente peut proposer, mais le poids du fichier s'en trouvera décuplé. Selon les cas, on peut parfois voir le poids de son fichier multiplié par 10, entre deux encodages de qualité constante mais de vitesse différente.

Le menu déroulant de la section Encoding speed permet de choisir le temps que nous comptons allouer à l'encodage, allant de ultra rapide à très lent. En fonction des délais dans lesquels nous devons produire votre film, voir de la vitesse de notre connexion internet pour le transfert du fichier, nous serons amenés à choisir le profil adéquat.

Contrôler la taille maximale des GOP

Dans une précédente section de ce livre dédiée à l'encodage, nous avons évoqué le notion de GOP, sorte de groupe d'images dont la taille peut fortement influencer le poids du fichier, mais aussi la difficulté de la machine à décoder la vidéo. La première image d'un GOP, dans la terminologie Blender est appelée Keyframe. Le paramètre Keyframe interval permet par conséquent de spécifier la taille maximale d'un GOP, afin de ne pas produire des fichiers difficilement décodables par une machine modeste dans le cas d'une lecture aléatoire, c'est dire en se déplaçant manuellement et rapidement dans le fichier, afin par exemple de chercher une action spécifique dans la vidéo. Dans le cas d'une lecture continue, si par exemple l'utilisateur lance la vidéo depuis le départ et la regarde tout du long, une grande taille de GOP est moins problématique puisque le décodage de la vidéo est progressif, se basant uniquement sur l'image précédente pour décoder l'image courante.

Blender propose par défaut une taille maximale des GOP de 15 images, mais il est possible de lui donner la valeur 0 afin de laisser l'encodeur définir lui-même la taille des GOP, qui peuvent d'ailleurs dans le codec H.264, être variable dans le temps. Le poids du fichier s'en trouve alors réduit, au risque de rendre la vidéo plus difficile à lire en lecture aléatoire.

Certains effets secondaires dus à une taille de GOP trop importante sont visibles par exemple sur le lecteur YouTube. Il arrive parfois que l'on veuille se déplacer dans une vidéo hébergée sur cette plateforme, mais que malgré le fait d'avoir placé la tête de lecture de manière précise, celle-ci glisse vers une image antérieure, selon un écart qui peut être plus ou moins important. Le lecteur choisit en effet de se replacer à la première image du GOP courant. Il n'est pas rare de voir ce manque de précision atteindre plusieurs secondes de décalage.

Blender 2.79b propose ce qui se fait de mieux à l'heure actuelle en termes de compression vidéo. Les codecs disponibles sont parmi les plus répandus et l’efficacité du CRF permet d'obtenir un rapport qualité/poids d'une efficacité inégalée, parfois supérieur à certains encodeurs dits professionnels, alors que ceux-ci ne proposent pas ce mode de contrôle de débit.

Quelques configurations avancées

La science de l'encodage n'est pas exacte et est ouverte à de nombreuses discussions. Les différentes expériences personnelles, les paramètres d'encodage si nombreux et la dépendance aux matériels, aux réseaux de diffusion, chaque configuration réponds à un cas de figure d'encodage. Blender ne propose pas un encodage aux petits oignons. Pour cela, une star audiovisuelle du transcodage libre est l'application FFMPEG utilisable en ligne de commande et scriptable.

Voici trois cas de figure, une solution pour le streaming dont la priorité est la diffusion sur un réseau informatique, une autre solution celle d'une lecture locale avec une qualité optimum pour un plaisir domestique et une solution pour les événements de type V-Jaying qui demande un accès immédiat aux fichiers vidéos sans calculs d'images. Les trois cas ont en commun la recherche du plus petit poids de fichier audiovisuel.

1. Configuration pour le streaming :

  • Codec vidéo H264 : output quality - medium, encoding speed - very fast, gop = 50
  • Codec audio AAC : 128 kbs

2. Configuration pour une qualité Blu-Ray

  • Codec vidéo H264 : output quality - high quality , encoding speed - very slow, gop = 15
  • Codec audio AAC : 128 kbs

3. Configuration pour une qualité V-Jay

  • Codec vidéo H264 : output quality - high quality , encoding speed - very slow, gop = 2
 


 




Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.