Transformez vos vidéos au format WebM

Rédigé par antistress le 31 mai 2010 - 14 commentaires

Magicien effectuant un tour

Rappelons rapidement que WebM est le nouveau format libre et ouvert de référence pour la diffusion audio et vidéo sur le Web, basé notamment sur le codec vidéo VP8 récemment libéré par Google.

Je ne vais pas rentrer aujourd'hui dans le détail des options d'encodage (je ne m'y suis d'ailleurs pas encore plongé sérieusement), mais plutôt vous expliquer comment inclure le support du codec vidéo libre VP8 dans FFmpeg (en attendant que ce dernier soit mis à jour) pour bénéficier d'un outil complet d'encodage prêt à l'emploi.

Pas de miracle ici, le format étant extrêmement récent, il va falloir mettre les mains dans le cambouis pour adapter FFmpeg. Ce billet n'est pas destiné aux débutants : les instructions données ici peuvent endommager votre configuration.

Installer la version de FFmpeg prenant en charge notamment WebM

Mise à jour : Ce billet détaillait initialement comment patcher la version 0.5 de FFmpeg pour lui ajouter le support de WebM ; depuis, la version 0.6 de FFmpeg est sortie (le 15 juin 2010), incluant notamment le support de WebM. Désormais pour profiter de WebM avec FFmpeg, il suffit d'installer la dernière version de ce dernier (qui sera celle présente par défaut dans Ubuntu 10.10).

Pour les distributions incluant une version antérieure de FFmpeg, ubuntuforums.org détaille la méthode de compilation de la dernière version de ce logiciel (testée avec Ubuntu 10.04).

Tout d'abord supprimez le cas échéant les paquets x264, libx264-dev et ffmpeg de votre système (attention cela supprimera tous les logiciels dépendant de cette bibliothèque qu'il faudra donc penser à réinstaller ensuite):

sudo apt-get remove ffmpeg x264 libx264-dev

puis ajoutez les paquets suivants :

sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

Ensuite récupérez et installez la dernière version de x264 :

cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "2:0.`grep X264_BUILD x264.h -m1 | cut -d' ' -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default

Même chose avec la dernière version de VP8 :

cd
git clone git://review.webmproject.org/libvpx.git
cd libvpx
./configure --target=x86-linux-gcc
make
sudo checkinstall --pkgname=libvpx --pkgversion="`date +%Y%m%d%k%M`-git" --backup=no --nodoc --default

Remarques : si votre système est 64 bits, remplacez --target=x86-linux-gcc par --target=x86_64-linux-gcc dans l'exemple ci-dessus.

Au tour de FFmpeg :

cd
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`svn info | grep Revision | awk '{ print $NF }'`" --backup=no --default hash x264 ffmpeg ffplay

Utiliser FFmpeg pour produire des fichiers WebM

Vous pouvez à présent simplement transcoder un fichier existant en WebM avec cette commande :

ffmpeg -i video.xyz -threads 2 video.webm

qui comporte trois paramètres :

  • -i permet de spécifier le nom de la vidéo à convertir (ici video.xyz),
  • -threads vous sert à spécifier le nombre de cœurs de votre processeur (ici 2), pour accélérer le transcodage,
  • video.webm est le nom du fichier final.

Enfin, comme vous en avez maintenant l'habitude, l'outil mkclean vous permettra d'optimiser votre fichier WebM (et, dans mon cas, de le rendre conforme à la spécification, selon mkvalidator).

A noter enfin que Google fournit avec ses patchs pour FFmpeg un jeu de réglages optimisés pour un encodage dans différents formats (voir ici) :

  • 1080p50
  • 1080p
  • 360p
  • 720p50
  • 720p

À vous de jouer!

14 commentaires

#1  - Kurtnoise a dit :

Si c'est pour faire *uniquement* du transcodage en webm, alors pas besoin d'installer les librairies x264, xvid, faac, lame...

Autre point : il aurait était préférable d'attendre un peu que FFmpeg intègre directement libvpx au lieu de jouer avec les patches. Dans quelques semaines ton post sera complètement obsolète. Mais bon, je comprends, écrire sur webm fait monter les stats en ce moment. ;-)

Répondre
#2  - Alex a dit :

Libérer VP8 , libérer VP8 \o/

Un peu sérieux, très bonne article, je testerais ça ce soir.

Répondre
#3  - antistress a dit :

@ Kurtnoise : ton argument selon lequel ce billet serait motivé par la recherche d'audience tombe doublement à plat car, vois-tu :
1°) Je n'ai pas attendu WebM pour écrire des billets audio-vidéo, tu en trouveras un certain nombre sur Ogg Theora qui n'est pas la meilleure façon de « faire grimper ses stats » tu en conviendras.
2°) Surtout, ce blogue fonctionne sans pub ni outil de stats (liberté : je n'espionne pas mes visiteurs) : il faut le souligner.
Je n'ai ainsi aucune idée du nombre de mes visiteurs (sauf pour ceux qui commentent)...
J'ai seulement deux informations à ma disposition, et les visiteurs du blogue ont les mêmes (égalité) :
- un compteur public du nombre de visiteurs en ligne simultanément en bas de page,
- les commentaires.
Pour ces derniers, comme pour mes articles, chacun peut en juger la pertinence.
Tu auras compris que j'estime que ton commentaire manque sincèrement de perspicacité.
Si tu souhaites me présenter des excuses pour ton agressivité gratuite qu'un smiley n'efface pas, je les accepterai avec plaisir.
En attendant tu devrais plutôt faire part de ta vision sur les blogues bourrés de Javascript et/ou de pub, car il y en a quelques-uns où ton commentaire aurait entièrement sa place, il faut bien le reconnaître aussi.

@ Alex : le nouveau psaume de LTP est "adoptez VP8" !

Répondre
#4  - Kurtnoise a dit :

Fais-moi rire. Technorati, Identi.ca, Delicious, etc...c'est pour la déco ?

J'aimerais plutôt avoir des explications sur les première phrases que j'ai écrit...D'ailleurs, je viens de voir que j'ai oublié git dans la liste. Mais bon, pas grave.

Je remets pas en cause l'ensemble de tes écrits. Juste celui-ci...accepte au moins un certaine critique.

Pour ce qui est des autres blogs, si t'as des liens, envoie. Je suis pas devin. J'irais m'y promener avec plaisir.

Répondre
#5  - antistress a dit :

@ Kurtnoise : Franchement j'utilise pas ces trucs mais je sais que beaucoup les utilisent ; en ce qui me concerne je partage les articles qui me plaisent par courriel, sur les forums dans un fil en relation avec le sujet traité ou sur ce blogue.
Je ne vois pas en quoi proposer cette fonctionnalité aux lecteurs, qui sont libres de l'utiliser ou non – comme le courriel – participe d'une volonté de « faire péter les stats » ?
Il n'y a rien d'automatique, d'imposé ni de caché : tout est entre les mains des lecteurs (liberté).

Pour les autres blogs, installe NoScript, tu sera surpris des merdes qui sont cachées dans les sites. Tiens, par exemple, ce témoignage de Christophe "Quand même une petite remarque : 50 scripts bloqués sur ta page d'accueil ! C'est énorme ! Une vraie pollution !" sous ce billet http://blog.nicolargo.com/2010/04/tu-fais-quoi-apres-linstallation-de-firefox.html
Ce n'est sans doute pas le seul blogue concerné ; toutefois parmi ceux qui diffusent sur le Planet Libre celui-ci peut paraitre emblématique. Heureusement que la lecture depuis le Planet Libre limite ce genre d'écueil.

Tu es libre de t'exprimer comme tu le vois. De mon côté j'accepte la critique et c'est pourquoi j'ai pris la peine d'argumenter une réponse. En l'espèce ta critique est sans fondement, je te le répète et te l'ai démontré. Reconnais que tu as chassé le mauvais gibier.

Répondre
#6  - antistress a dit :

@ Kurtnoise : git est superflu, je le supprime (bien vu :-)
Les autres permettent d'avoir un ffmpeg pleinement fonctionnel, pas juste un ffmpeg dédié à VP8

Répondre
#7  - Kurtnoise a dit :

Biennnn...ya du mieux :-)

Maintenant, expliques pourquoi tu copies les fichiers header & la bibliothèque dans /usr au lieu de /usr/local ?

Répondre
#8  - Kurtnoise a dit :

oui, le blog de NicoLargo est à éviter en ce qui concerne la Vidéo. Mais cela ne nous regarde pas...

Répondre
#9  - antistress a dit :

@ Kurtnoise : en effet, usr/local est plus propre, c'est également corrigé merci.

Répondre
#10  - lapsus63 a dit :

Hi,

Perso j'ai pas tout testé encore, je viens de finir l'install de ffmpeg ; mais je tiens à te féliciter pour la clarté de ton tuto, je n'ai eu aucun problème pour arriver au bout, et pourtant j'ai pas trop l'habitude de compiler mes paquets sur ubuntu... Je le trouve très rigoureux dans sa démarche.
Trouver des tutos aussi bons (en français qui plus est) sur des technos aussi récentes, je tiens à dire que c'est pas fréquent. Alors merci !

Répondre
#11  - antistress a dit :

@ lapsus63 : et bien sache que des commentaires aussi sympa c'est pas si fréquent non plus, alors merci aussi !

Répondre
#12  - lapsus63 a dit :

@antistress : J'aurais simplement une question : La conversion via ffmpeg marche très bien avec les paramètres que tu as donné, mais pas avec certains AVI. ffmpeg me détecte les codecs suivants :

Stream #0.0: Video: mjpeg, yuvj422p, 320x240, 15 tbr, 15 tbn, 15 tbc
Stream #0.1: Audio: pcm_u8, 11024 Hz, 1 channels, u8, 88 kb/s

A priori le codec "son" ne serait pas pris en charge, si j'analyse correctement l'erreur :
Error while opening encoder for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height

Aurais tu une idée ?
Encore merci pour ce tuto :)

Répondre
#13  - antistress a dit :

Je ne sais quoi te répondre :-/
Pourtant PCM est bien supporté par FFmpeg semble t-il (comme le MJPEG) http://www.ffmpeg.org/general.html#SEC7
Un ami commun m'a dit que Kurtnoise est particulièrement calé en son, peut-être pourrait-il t'aider ?

Répondre
#14  - lapsus63 a dit :

J'espère :) Merci pour ta réponse. Si ça peut aider, j'ai une info supplémentaire : lesdits AVI sont issus d'appareils photos (ceci dit j'ai pas essayé d'autres AVI).

Répondre

Fil RSS des commentaires de cet article

Écrire un commentaire

NB : en publiant votre commentaire, vous acceptez qu'il soit placé sous la licence CC BY-SA comme indiqué aux conditions d'utilisation du site

Quelle est le deuxième caractère du mot vyju4 ?