まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Screencast, capturer son écran avec ffmpeg

Screencast ou capturer une vidéo de son écran est bien utile quand on veut faire des démonstrations vidéo.
Plusieurs logiciel existent, comme istanbul ou recordmydesktop qui capturent puis compressent une vidéo de l'écran directement en ogg (théora+vorbis)
Mais malgré tous les tests effectués aucun d'eux ne m'a donné satisfaction… trop d'images perdues, vidéo saccadée, résolution trop petite… etc

J'ai alors lut parlé qu'on pouvait faire la même chose avec ffmpeg, en ligne de commande donc… ahhh cette fameuse ligne de commande Ô combien puissante et pratique, qui fait si peur aux noob et nous fait passer pour des bêtes curieuses.

Seulement voila, de base, la version de ffmpeg disponible dans mon système d'exploitation ne dispose pas de ce qu'il faut pour capturer l'écran, c'est à dire x11grab.
Il faut donc compiler les source de ffmpeg avec les options nécessaire… après pas mal de tentatives infructueuses, j'ai découvert sur le Planet Ubuntu qu'il fallait des sources patchées.

j'étais tellement content de l'avoir trouvé que j'ai repris une partie de cet article ^^
http://planet.ubuntu-fr.org/post/2006/09/21/Faire-du-screencast-sous-Ubuntu

On installe les paquets nécessaires :

   $ sudo apt-get install build-essential xlibs-dev ffmpeg

On crée le répertoire nécessaire :

   $ mkdir screencap && cd screencap

On récupère le fichier de source et on l'extrait :

   $ wget http://lecoindespotes.free.fr/ubuntu/screencast/ffmpeg-0.4.9-p20051216.tar.bz2 && tar xjfv ffmpeg-0.4.9-p20051216.tar.bz2 && cd ffmpeg-0.4.9-p20051216

Il faut maintenant le patcher afin de lui permettre de faire du screen capture :

   $ wget http://lecoindespotes.free.fr/ubuntu/screencast/ffmpeg-0.4.9-p20051216.diff && patch -Np1 -i ffmpeg-0.4.9-p20051216.diff

Il ne nous reste plus qu'à compiler :

    $ ./configure --extra-ldflags=-L/usr/X11R6/lib --enable-x11grab --enable-gpl && make

Il se peut que la compilation se passe mal, vérifiez que vous ayez un executable ffmpeg, le reste du paquet ne nous intéresse pas vraiment. On obtient alors un exécutable 'ffmpeg'

Pour lancer une capture, il suffit de taper ce genre de commande :

   $ ./ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi

La puissance de la «ligne de commande», c'est qu'on va pouvoir customiser la capture !
Par exemple, j'ai utilisé ça :

$ ./ffmpeg -acodec pcm_s16le -vcodec mpeg4 -b 1000 -r 25 -g 300 -vd x11:0,0 -s 1280x960 ~/screencast004.avi

La capture sonore en PCM 16 bits à été ajoutée :

  • -acodec pcm_s16le

La capture vidéo est en MPEG4

  • -vcodec mpeg4

25 images/secondes sont capturées :

  • -r 25

La taille de la vidéo est adaptée à la résolution de mon écran :

  • -s 1280x960

Même commande, sans l'audio, qui m'a servit à capturer le tuto cinelerra

$ ./ffmpeg -an -vcodec mpeg4 -b 1000 -r 25 -g 300 -vd x11:0,0 -s 1280x960 ~/screencast008.avi

La commande

$ ./ffmpeg -formats

donne la liste des codecs utilisable à la capture, reste à tester et choisir ceux qui vous conviennent !

Malgré ces paramètres exigeant en ressources, la capture est parfaite, alors que les logiciels cités plus haut ont étés bien incapable de faire le 1/4 de ce qu'a réalisé cette commande ffmpeg :)

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet