Publicité
test du codec VP9

VP9 est officiel depuis le 17 juin 2013. Au mois de mai, j'écrivais qu'il serait bien de voir ce qu'il vaut. Au mois de novembre me voilà parti dans l'aventure. Je dis bien aventure, car je pensais innocemment que cela serait simple (ça l'est une fois qu'on a bien tout compris et tout bien fait). En fait, lorsqu'on est un early débutant(comprend par là quelqu'un qui veut tester en premier les choses) on croit qu'il suffit de télécharger l'application, la compiler et tout fonctionne. En fait, il en est rien pour le VP9. Il vaut mieux lire la documentation et la comprendre. Cela fait des mois que j'attends que ce format arrive tout prêt dans mes encodeurs préférés. Peine perdue, il n'arrive pas vraiment. VLC vient tout juste d'implémenter le décodage VP9 !! Pour visionner les vidéos, vous serez presque condamné à utiliser chrome dans ses dernières versions ou VLC en version 2.1.

 

Tout d'abord, une petite parenthèse. Pourquoi la guerre des codecs est relancée ? Tout d'abord, le défi se situe au niveau des téléviseurs 4K. Après nous avoir fait la TV HD (1280x720), la FULL HD(1920x1080) maintenant arrive la 4K (3840 × 2160, ou 4096 × 2160). Il va bien falloir faire passer 2 fois plus d'informations dans un tuyau qui n'a pas aussi vite grandi que la résolution à afficher (je ne parle même pas de la TNT). Bref, la solution est de compresser encore plus le signal vidéo. La première manche a largement été remportée par le H.264, le consortium est toujours là avec le H.265 (payant) . De l'autre côté on a Google et son codecs plus ou moins libre le VP9.

 

Je ne m’attendais pas à devoir compiler ffmpeg

Pour ceux qui crois que l'encodeur fourni avec le VP9 (vpxenc) accepte tous les formats de fichiers vidéos en entrée c'est une erreur. Il ne prend que peu de formats en entrée, à savoir le RAW ou le YV. Format que bien entendu, le commun des mortels n'a pas vraiment à sa disposition.

J’ai bien essayé la ligne de commandes suivante :

vpxenc --codec=vp9 --width=1280 --verbose --target-bitrate=4000 --height=720 -o test2ouput.webm  big_buck_bunny_720p_surround.avi

 Mise à part obtenir de la neige, je n’ai rien obtenu. J’en ai donc conclu que je ne pourrais m’en sortir qu’en compilant un logiciel qui permet le transcodage. J’ai donc choisi  FFMPEG, dont la réputation n’est plus à faire. La dernière version de FFMPEG prend en compte et en mode expérimental de VP9.

 

La marche à suivre du early bourrin pour tester le VP9

1) Télécharger VP9 ici  http://www.webmproject.org/vp9/ (je ne suis pas sur que cette étape soit indispensable car il me semble que FFMPEG intègre ces propres codecs)

git clone http://git.chromium.org/webm/libvpx.git
cd libvpx
git co master    ## likely unnecessary
./configure
make
sudo make Install

2) Télécharger la dernière version de FFMPEG

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg 
./configure --enable-libvpx --enable-libvorbis --enable-gpl

make 
sudo make install

 

 

3) Tester

Lorsqu’un codec est expérimental, il faut ajouter l’option  -strict -2  à la ligne de commande de FFMPEG. Cette options évitera une erreur qui vous dira ... d’ajouter l’option.

 

La procédure de test

Pour réaliser ce test je suis partis de la vidéo Big-Buck-Bunny  au format 720p - a52 - MP4 (324Mo).

J’encode en plusieurs débits. Ensuite je visionne les vidéos pour contrôler la fluidité,  je réalise des captures d’images que je superpose via GIMP (voir le fichier) pour voir le résultat.

Certes la méthode est artisanale, mais elle a le mérite de ne pas balancer des chiffres que le commun des mortels dont je fais parti ne comprenne pas.

 

Les lignes de commandes

Voici une ligne de commande qui fonctionne pas trop mal pour l’encodage à destination des smartphones

 ffmpeg -i big_buck_bunny_720p_surround.avi -codec:v libvpx-vp9 -quality good -cpu-used 0 -b:v 500k -qmin 10 -qmax 42 -maxrate 500k -bufsize 1000k -threads 4 -vf scale=-1:480 -codec:a libvorbis -b:a 128k -strict -2 output.webm

 Ligne de commande qui fonctionne pas trop mal pour un test en HD (encodage des 20 premières secondes)

ffmpeg -i big_buck_bunny_720p_surround.avi -t 20 -codec:v libvpx-vp9 -quality good -cpu-used 0 -b:v 2000k -qmin 10 -qmax 42 -maxrate 2500k -bufsize 1000k -threads 4 -vf scale=-1:720 -codec:a libvorbis -b:a  128k -strict -2 output-HD.webm

 Vous vous demandez peut-être pourquoi j’ai limité l’encodage à 20 secondes ? La première remarque est que c’est horriblement lent, pour ne pas dire méga hyper lent … Pour encoder 20 secondes, il a fallu en 44 et 53 minutes !! En VP8, il a fallu 64 secondes pour ces mêmes 20 secondes.

Ligne de commande qui fonctionne pas trop mal pour un test en HD et VP8

ffmpeg -i big_buck_bunny_720p_surround.avi -t 20 -codec:v libvpx -quality good -cpu-used 0 -b:v 2000k -qmin 10 -qmax 42 -maxrate 2500k -bufsize 1000k -threads 4 -vf scale=-1:720 -codec:a libvorbis -b:a 128k -strict -2 output-vp8.webm

 

Tableau de synthèse

 

 

VP8 - 2000K

VP9 - 2000K

VP9-500k

VP9-100k

VP9-50k

Vidéo (fluide)

OK

OK

OK

Moyen

bof

Son (fluide et audible)

OK

OK

OK

OK

NON

Poids

5,2 Mo

5,3 Mo

1,7Mo

1 Mo

830 Ko

 

Conclusion

L’encodage jusqu’en 500k est de très bonne facture. Pour vous donner une idée en h.264 on compresse en général autour de 10 à 15 Mo / minute de film, ici est on est de l’ordre de 8,5 Mo par minute de film pour une qualité plus acceptable. Mais il y a un prix qui lui est inacceptable. Sur ma machine hypersonique en général pour encoder un film en h.264 d’une minute il m’en faut 3. Ici pour encoder 20 secondes il a fallu 45 minutes en moyenne … Donc oui la qualité est le poids sont acceptables, non le temps d’encodage ne l’est pas. Ce temps n’est pas acceptable d’autant que la qualité entre un encodage VP8 et VP9 en 2000kbits sont très très proches pour ne pas dire identique. Évidemment je n’ai pas encore testé du h.265, je n’ai donc pas de base de comparaison à codecs équivalent. Mais en l’état, si guerre des codecs il y a le VP9 ne peut pas s’imposer, même sur les machines de Youtube. Bref il reste du progrès à faire, où alors je suis complètement passé à côté de la ligne de commande qui va bien.

 

Les Images

Google VP9 img 001 Google VP9 img 002 Google VP9 img 003 Google VP9 img 004 Google VP9 img 005 Google VP9 img 006 Google VP9 img 007

 

Les vidéos résultats

SI vous ne voyez pas les vidéos ci-dessous c’est peut être que votre navigateur n’est pas compatible VP9

Vidéo VP9 2000K 1280x720

Vidéo VP9 500K 1280x720

Vidéo VP9 100K 1280x720

Vidéo VP9 50K 1280x720
 


Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :


Commentaires (2)

  • Invité - Nico

  • Invité - Nico

    <p>Bonjour,</p><p>Concernant le temps d'encodage, il faut aussi dire que rien n'est optimisé à l'heure d'aujourd'hui et qu'aucune accélération matérielle n'est disponible.. le h.265 et le VP9 n'ayant pas un an officiellement.</p><p>Il serait intéressant d'encoder avec des paramètres identiques en h.265 et VP9 pour comparer en essayant un film (images de paysages..) plutôt qu'un D.A où les impacts de la compression sont plus visibles.</p><p>Bon après quand il y a encore plus de 10 chaines de la TNT en Mpeg2...</p>

Poster un commentaire en tant qu'invité

0

Publicité - Ce contenu peut vous intéresser - Test