Outils pour utilisateurs

Outils du site


informatique:ffmpeg

Ceci est une ancienne révision du document !


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.
    • ``-i hw:1`` indique la carte son à utiliser et l'entrée sur cette carte son.
  • ``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… FIXME
  • ``-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
informatique/ffmpeg.1528616112.txt.gz · Dernière modification: 2018/07/29 09:08 (modification externe)