vendredi 16 septembre 2016

Python: Découverte des possibilités vidéo de GStreamer et FFmpeg grâce à FWomaj

En consultant les news de Linuxfr.org, je tombe sur l'article "Fwomaj 0.3 : Vidéos à la coupe au rayon frais".
Bien que je ne m'intéresse pas spécialement à la vidéo, le fait de Fwomaj utilise Python 3 m'incite à faire une petite lecture... fructueuse puisque je découvre de nouveaux outils pour mon environnement favoris.
Si l'article décrit le travail de l'auteur dans son projet, il énumère surtout certaines dépendances et donne des liens vraiment utiles.
Couteaux Suisse de la vidéo, je découvre donc les possibilités de GStreamer et FFmpeg qu'il est possible commander depuis Python et d'inclure dans une application GTK.

FFmpeg - codage/décodage/transcodage
FFmpeg est un Framework Multimedia très populaire capable de décoder, encoder, transcoder mixer (mux), démixer (demux), streamer, filtrer et jouer (play) presque tout ce que l'homme et la machine ont créés. Il support la plupart des anciens formats obscur jusqu'au tout dernier standard hi-tech.
Très portable, FFmpeg compile, s'exécute et passe avec succès l'infrastructure de test FATE sous Linux, Mac OS X, Microsoft Windows, les BSDs, Solaris, etc. Sous une large variété d'environnement de compilation, architecture logiciel et configuration.
GStreamer - rendu vidéo
Source: Fwomaj 0.3 : Vidéos à la coupe au rayon frais

Pour reprendre la note de l'article d'origine:
On peut faire plein de choses avec GStreamer. C'est un langage de pipes vidéo assez fascinant, qu'on prototype à l'aide de l'utilitaire gst-launch, pour construire des "tuyaux" d'images qui bougent:

gst-launch-1.0 videotestsrc pattern=1 ! video/x-raw,format=AYUV,framerate=\(fraction\)10/1,width=100,height=100 ! videobox border-alpha=0 top=-70 bottom=-70 right=-220 ! videomixer name=mix sink_0::alpha=0.7 sink_1::alpha=0.5 ! videoconvert ! xvimagesink videotestsrc ! video/x-raw,format=AYUV,framerate=\(fraction\)5/1,width=320,height=240 ! mix.

Comme rien ne vaut un beau dessin pour comprendre rapidement

Source: GStreamer Cheat Sheet

Source: GStreamer Cheat Sheet

Ressources:
  • GStreamer Cheat Sheet
    Une excellente ressource à propos de GStreamer incluant de nombreux exemples (capture webcam, network stream, generator, etc)