Si vous souhaitez faire une capture vidéo de votre écran sous Unix, la commande avconv (anciennement ffmpeg) devrait probablement vous suffire. J’ai eu besoin de faire ça, et voilà comment que je me suis débrouillé.
Capture
Pour faire la capture vidéo de l’écran :
avconv -f x11grab -show_region 1 -framerate 24 -s sxga -i :0.0+350,0 -threads 2 -q 1 -bt 8000000 -b 8500000 video.avi
Les options utilisées sont les suivantes :
-
-f x11grab
: pour dire que l’on capture l’écran (le serveur X) -show_region 1
: pour afficher un rectangle autour de la zone de l’écran capturée-framerate 24
: on capture 24 images par secondes-s sxga
: la zone capturée fait 1280×1024-i :0.0+350,0
: le décalage (300 pixels en horizontal et 0 en vertical)-threads 2
: le nombre de coeurs de votre processeur utilisés-q 1
: meilleure qualité (pas de compression, ça on verra après)-bt 8000000 -b 8500000
: le débit (« bitrate ») et sa tolérance, pour permettre une bonne qualité
Compression
Ensuite, pour compresser la jolie vidéo, il faut modifier l’argument q :
avconv -i video.avi -q 12 video_smaller.avi
Watermark
Pour ajouter un filigrane (« watermark ») sur la vidéo, il suffit d’une image. Prenez par exemple le logo de votre entreprise, et rendez le un peu plus discret à l’aide du Gimp par exemple, avec les deux transformations suivantes :
- Couleurs > Niveaux > Niveaux de sortie : augmenter le seuil du bas
- Couleurs > Couleur vers alpha…
Si cette image est image.png et dans le même dossier que vos vidéos, pour l’ajouter en sur-impression à la vidéo :
avconv -i video.avi -vf "movie=image.png [watermark]; [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out]" -q 12 video_watermark.avi
J’ai gardé l’argument -q 12
pour compresser la vidéo en même temps, et j’ai ajouté l’argument -vf
, qui est assez compliqué… Si j’ai bien compris, la partie movie=image.png [watermark];
définie un calque à ajouter et le nomme watermark, puis la seconde partie [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out]
permet d’ajouter ce calcque. Le overlay permet de positionner l’image, et les nom main_w, main_h, overlay_w et overlay_h correspondent respectivment aux largeurs et hauteurs de la vidéo et de l’image. Si vous avez suivi, notre filigrane sera donc centrée ! Mais si vous voulez par exemple la positionner en haut à gauche, il faut utiliser overlay=0:0
Démo !
Je fais à la fois la capture, le filigrane et la compression. La commande exacte est la suivante :
avconv -f x11grab -show_region 1 -framerate 24 -s 1280x900 -i :0.0+0,105 -vf "movie=me.png [watermark]; [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out]" -threads 2 -q 12 -bt 8000000 -b 8500000 demo_blog.flv
Ok, ça fait un peu narcissique de se mettre en filigrane mais c'est la première image que j'avais sous la main !
Sources
- La page du manuel de la commande avconv : http://libav.org/avconv.html
- Un billet que j'ai utilisé pour les paramètres concernant la qualité : http://my.opera.com/patkoscsaba/blog/2012/08/17/desktop-recording-with-avconv-formerly-know-as-ffmpeg
- Centrage de l'image : http://stackoverflow.com/questions/10918907/how-to-add-transparent-watermark-in-center-of-a-video-with-ffmpeg