ffmpeg
Outil de gestion des médias audio et vidéo, en ligne de commande. Des versions existent également en GUI.
Merci à alex pour m'avoir encouragé à m'intéresser à cet outil.
Installation
Le paquet ``ffmpeg`` se trouve en général dans les dépôts de votre distribution et il est disponible pour les systèmes d'exploitation privateurs.
Screencast
``ffmpeg`` est une bonne solution pour capturer son écran. Sur le wiki officiel on trouve des informations utiles : https://trac.ffmpeg.org/wiki/Capture/Desktop
Un exemple de commande, sous GNU/Linux :
ffmpeg -f x11grab -show_region 1 -framerate 30 -video_size 1920x1080 -i :0.0 -f alsa -ac 1 -i hw:1 output.mp4
``x11grab`` est l'utilitaire pour capturer les événements du bureau. Voir la
documentation pour un détail des options.
``-show-region 1`` entoure la zone capturée avec une bordure, ce qui est inutile dans notre cas, vu que l'on capture la totalité de l'écran.
``-framerate 30`` correspond au nombre d'images par seconde capturée, ce qui a un impacte sur la qualité.
``-video_size 1920×1080`` est la taille de la zone capturée, ici l'écran entier.
``-i :0.0`` indique quel écran il s'agit de capturer. On peut lui ajouter des paramètres pour situer le sommet en haute à gauche de la zone à capturer : ``-i :0.0+100,200``
``-f alsa`` précise quel utilitaire choisir pour la capture du son, dans le cas où c'est nécessaire.
``output.mp4`` est le fichier de sortie, qui peut comprendre un chemin, bien-sûr. Pour obtenir un autre format, il suffit de changer l'extension du fichier. Ou encoder ensuite.
Pour la sélection de la carte son et de l'entrée, il faut consulter les fichiers suivants :
$ cat /proc/asound/cards
$ cat /proc/asoud/devices
Conversion
Voir https://trac.ffmpeg.org/wiki/Encode/VP8 et https://trac.ffmpeg.org/wiki/Encode/VP9
Je considère que pour la publication en ligne, le format ``webm`` est une bonne solution. On peut par exemple utiliser la commande suivante :
ffmpeg -i input-file.mp4 -c:v libvpx -crf 18 -b:v 0 -c:a libvorbis output-file.webm
``-i input-file.mp4`` : le fichier à convertir
``-c:v`` permet de préciser l'encodeur vidéo, ici ``libvpx`` pour le format ``webm`` en version 8 (la version 9 n'étant pas toujours bien supportée par Firefox, je pense qu'il faut un plugin particulier, à vérifier).
``-crf 18`` choisi un *rate factor* constant. Ce taux a une incidence sur la qualité, 0 étant le meilleur, mais affreusement long. On peut lire ici ou là que 18 - 20 est une bonne pratique… De plus, ce n'est peut-être pas la meilleure méthode…

``-c:a`` indique l'encodeur audio, ici ``libvorbis``.
``output-file.webm`` est le fichier de sortie.
Streaming vers Icecast2
Source
Considérant :
un serveur icecast2 configuré,
une entrée son sur la ligne principale,
l'utilisation du codec opus,
il est possible d'utiliser ``ffmpeg`` pour convertir le flux d'entrée vers icecast2.
$ ffmpeg -f alsa -i hw:1 -c:a libopus -vbr on -b:a 48k -ice_name [name] -ice_public 1 -content_type audio/ogg -f opus icecast://[user]:[passwd]@server/mounting_point