Il peut arriver qu’on ait besoin de partager une vidéo servant à montrer ce qu’on voit dans son terminal. Personnellement, j’ai eu besoin notamment pour illustrer de la documentation. Plus récemment, avec mon équipe nous avons fait un exercice de programmation dont le but était d’implémenter le jeu de la vie (c’est un algorithme très simple mais intéressant), et je voulais partager une vidéo de mon implémentation.
Il existe des solutions purement vidéo, basées sur la capture d’une zone de l’écran. Cela fonctionne très bien, notamment pour faire des screencasts de logiciels ou de sites web. Mais pour capturer le rendu du terminal, c’est un peu lourd.
Pour cela, il existe le logiciel asciinema, qui sert justement à capturer l’affichage du terminal.
Installer asciinema
L’installation est très simple sur Ubuntu :
$ sudo apt install asciinema
Langage du code : Shell Session (shell)
Capturer le terminal
Pour lancer une capture avec asciinema, il suffit d’exécuter la commande suivante :
$ asciinema rec destination.cast
Langage du code : Shell Session (shell)
Vous pouvez alors utiliser le terminal comme vous le souhaitez, exécuter des commandes, etc. Tout sera capturé dans le fichier de destination jusqu’à ce que vous tapiez exit
ou CTRL-D.
Lire une capture
asciinema permet de jouer le screencast dans le terminal avec la commande :
$ asciinema play destination.cast
Langage du code : Shell Session (shell)
Intégrer un screencast dans une page web
asciinema permet aussi d’envoyer le fichier vers un serveur (par défaut le serveur asciinema.org).
En tapant la commande suivante, le screencast sera uploadé, et vous récupérerez un lien secret vers une page web dédiée à ce screencast :
$ asciinema upload destination.cast
Langage du code : Shell Session (shell)
À partir de cette page, vous pourrez récupérer la simple ligne de code qui permet d’embarquer le screencast dans une page web en utilisant un player Javascript.
Convertir un screencast en GIF animé
Le logiciel agg permet de générer un GIF animé à partir d’un screencast. Malheureusement, agg est rarement disponible dans les dépôts des distributions Linux. Il est aussi possible d’utiliser le projet gifcast, qui propose une page dont le code Javascript fait la conversion. Cette page est très simple à utiliser, et génère un fichier GIF fonctionnel.
Voici un exemple de GIF animé correspondant à l’exécution du jeu de la vie dans mon terminal :
Convertir un GIF animé en vidéo MP4
Il se peut que vous ayez besoin d’un fichier vidéo plutôt que d’un GIF animé. Il existe plusieurs outils de conversion. En ligne de commande, vous pouvez utilise FFMPEG :
$ ffmpeg -i destination.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)<em>2:trunc(ih/2)</em>2" destination.mp4
Langage du code : Shell Session (shell)
- Le paramètre
movflags
sert à optimiser le fichier de manière à ce qu’un navigateur puisse démarrer la lecture au plus vite. - Le paramètre
pix_fmt
est utilisé pour enregistrer les pixels dans un format supporté par un maximum de navigateurs. - Le paramètre
vf
permet de forcer un nombre de pixels compatible avec la norme H.264.
Gardez en tête qu’une conversion en MP4 génère souvent un fichier plus léger que le GIF d’origine. Par exemple, pour le GIF animé de 2 MO présenté plus haut, FFMPEG génère un fichier MP4 de 1 MO.
Si vous n’avez pas FFMPEG, vous pouvez utiliser un site web de conversion comme EzGif.