svictor.net

Victor A. Stoichiţă

Bienvenue ! Ci et ça Tests de compression vidéo

Tests de compression vidéo

Imprimer
Samedi, 15 Septembre 2007 16:45

Il s'agit de trouver un format de numérisation de vidéos selon les contraites suivantes (les vidéos doivent figurer sur le DVD accompagnant mon ouvrage sur la ruse des musiciens professionnels):

  1. très bonne qualité;
  2. 1h de vidéo ne doit pas dépasser 4 GO;
  3. lisible sur tous les systèmes d'exploitation;
  4. requiert peu ou pas d'installation/configuration de la part de l'utilisateur.

 

DV 

Le format dv (celui utilisé par les caméras numériques) conviendrait mais 1h de vidéo prend environ 12 GO.

FLV

Flv conviendrait, en fournissant avec les vidéos le lecteur opensource de neolao.

ffmpeg -i entree.avi -ab 224 -ar 44100 -b 5000 -r 24 -s 600x480 -f flv -t 00:00:30 -deinterlace sortie.flv

Pour maintenir une qualité irréprochable, il faut encoder à environ 5000 kb/s en 600x480 (c'est à dire sans redimensionner l'image). En lisant la vidéo avec mplayer, tout va bien. Mais bizarrement, les lecteurs flashe comme celui de jeroenwijering demandent une capacité de calcul dont la plupart des ordinateurs ne disposent pas encore. Avec un Pentium 1400 MHz et 512 Mo de RAM, la vidéo est encore hachée.

Difficile de comprendre pourquoi les lecteurs swf s'en tirent moins bien que mplayer. Ce qu'ils chargent est bien le processeur et non sur la mémoire. La charge dépend, non du débit de la vidéo mais de la taille d'image et plus exactement, de la taille de l'image affichée. Ainsi, toutes les vidéos en 720x576 posent le même problème, qu'elles soient encodées en 200 kb/s ou en 5000 kb/s. En revanche, lorsqu'elles sont affichées en 320x288, tout va bien (même si elles ont été codées en 600x480 à 5000 kb/s). On en comprend que ce qui noie le lecteur flash est sa manière particulière d'afficher les images (différente de celle de mplayer, xine, vlc, etc.), non la vidéo elle-même.

Mpeg2 

Sur la plupart des systèmes, mpeg2 requiert d'être installé. On trouve le codec dans de nombreux "packs" mais il ne semble pas y avoir d'installeur individuel. Or je ne peux demander à l'utilisateur d'installer une dizaine de codecs sur la machine pour lire mon DVD. Qui plus est, les packs offrent des options troublantes et potentiellement énervantes pour le néophyte.

Xvid

Xvid doit également être installé. Mais contrairement à mpeg2, il existe des installeurs individuels,d'un emploi relativement simple. Sur windows, c'est un exécutable qui pose une seule question, de type oui/non. Sur Mac, c'est un composant QuickTime, que l'utilisateur doit faire glisser dans le dossier ~/Library/Quicktime. Qui plus est Xvid est sous licence GNU/GPL, donc redistribuable sur un DVD commercial. 

mencoder entree.avi -oac pcm -srate 44100 -af lavcresample=44100  -ovc xvid -xvidencopts bitrate=5000  -vf pp=lb -aspect 4:3 -o sortie.avi

  • Un encodage en 2 passes donnera une vidéo de meilleure qualité. Pour cela répéter ajouter :pass=1 puis :pass=2 dans les xvidencopts. Pour accélérer la 1re passe, diriger la sortie vers /dev/null (à la place de sortie.avi) et donner le codec "copy" à la place de "pcm.
  • Attention: sur Mac, QuickTime ne lit pas correctement les flux audio mp3 en abr à 48000 khz. C'est sans doute dû au 48000 plutôt qu'au abr.

Mpeg1

Mpeg1 est un vieux codec vidéo (la norme date de 1988). Ses taux de compression sont plutôt mauvais. En revanche, tous les OS l'intégrent d'emblée. pas besoin d'installation donc. Mpeg1 est utilisé sur les VCD, avec mp2 pour l'audio. Les dimensions de ce standard sont plutôt réduites (352x288 en PAL). Mais rien n'interdit, d'essayer des taux l'utiliser autrement.

Mencoder donne de bons résultats, à en juger par le rendu de mplayer ou de VLC, mais Windows Media Player ne suit pas: traînées de couleur, images clignotantes... FFmpeg est plus sûr mais il reste des problèmes avec Windows Media Player, en particulier avec sa manière d'interpréter les "b frames" (images de prédiction bi-directionnelle).

En forcant le débit à quelques 15000 kb/s et en ne codant que des  images intra (pas de "b frames", option -intra de ffmpeg), la qualité est acceptable. Par contre-coup, la taille du fichier devient trop grande. Sur le principe, un flux qui ne comporte que des images intra n'a que la qualité des images elles-mêmes: aucune prédiction de mouvement, aucun rapport entre le codage d'une image et celui de ses voisines... À ce moment, autant utiliser le format DV. 

PortableVLC

Une autre stratégie consiste à fournir à l'utilisateur le lecteur VLC, opensource et qui lit d'empblée la plupart des formats (c'est le cas notamment de mpeg2 et de xvid). Il existe en une version "portable", qui ne requiert pas d'installation:

Attention: l'arborescence de la version Mac emploie des liens symboliques. Ceux-ci ne peuvent être copiés tels quels sur un DVD, ni sur une clé usb en FAT32 (ces systèmes de fichiers ne le permettent pas). Pour placer un lecteur prêt à l'emploi sur l'un de ces médias, il faut remplacer les liens symboliques par les fichiers correspondants. Pour cela:

cp -L /PorableVLC.app/* /Volumes/ma_clef_usb/repertoire_VLC

Après, tout marche bien, en principe.

Cependant, ça ne marche plus si on grave PortableVLC sur un CD ou DVD (ce qui était le but initial) car dans ce cas, le prog ne peut plus écrire dans son répertoire... Du moins sur Mac, ça plante.

Reste à fournir à l'utilisateur un joli index, regroupant tous les documents. On peut pour cela écrire une petite animation Flash, avec un projecteur intégré. La clef est alors la méthode "exec" de "fscommand", qui permet de lancer un exécutable contenu obligatoirement dans le dossier "fscommand/". Impossible de passer un argument à l'exécutable. On ne peut donc pas écrire:

fscommand ("exec", "PortableVLC.exe monfichier.avi")

Mais on peut faire un petit script du genre (pour Windows):

@ echo off
start PortableVLC.exe video.avi
exit

Pour mac, on peut facilement écrire l'équivalent en bash.  Après, c'est ce script qu'on passe à fscommand. Bien sûr, il faut autant de scripts que de vidéos à ouvrir.

Sur windows, il y a une petite fenêtre noire à l'ouverture d'un script .bat. Plusieurs méthodes permettent de la supprimer. La plus connue est sans doute freemx.exe... 

Mais dans l'ensemble, la piste PortableVLC se heurte, une fois de plus, à l'anarchie des OS Mac. PortableVLC requiert en effet Quicktime version 6.5.3 ou supérieure. S'il ne trouve pas la bonne version de QT, il plante silencieusement, sans autre message d'erreur. Or les utilisateurs Mac ne maintiennent pas nécessairement à jour leurs systèmes... Donc la méthode n'est pas assez fiable pour un DVD commercial.  

 

 

Menu