((/news-custom/public/gstreamer-logo.png|Logo Gstreamer|C|Logo Gstreamer))
Dans ce billet, je vais vous présenter le »framework » multimedia [Gstreamer|http://gstreamer.freedesktop.org/]. et nous étudierons un cas concret, l’utilisation d’une webcam (sous __Linux__).
!!!!Le principe
Gstreamer est une bibliothèque permettant de manipuler des flux (audio et / ou audio) à l’aide de »pipes ».
Les flux sont vus comme des éléments auxquels on peut leurs appliqués des opérations (filtres, transformations, etc.).
Ci-dessous un schéma synthétisant les différentes étapes possibles. »(Cliquez dessus pour zoomer) »
[((/news-custom/public/.gst-pipeline_s.jpg|Gstreamer – pipelines|C|Gstreamer – pipelines))|/news-custom/public/gst-pipeline.png||Gstreamer – pipelines]
!!!!Étude de cas
!!!Une webcam
Il s’agit d’un périphérique ??USB|Universal Serial Bus??, on peut donc obtenir des informations grâce à la commande @@lsusb@@.
///
olivier@bornem:~ $ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 15a9:0004 Gemtek WUBR177G
Bus 002 Device 004: ID 058f:6377 Alcor Micro Corp. Multimedia Card Reader
Bus 004 Device 002: ID 046d:c00e Logitech, Inc. M-BJ58/M-BJ69 Optical Wheel Mouse
Bus 002 Device 005: ID 03f0:a707 Hewlett-Packard
olivier@bornem:~ $
///
La dernière ligne correspond à la marque de la webcam. Son identifiant est __03f0:a707__.
Que nous renvoie la commande @@dmesg@@ ?
///
olivier@bornem:~ $ dmesg | grep 03f0:a707
[14220.497178] uvcvideo: Found UVC 1.00 device HP Webcam HD-2200 (03f0:a707)
olivier@bornem:~ $
///
Si l’on fait la recherche avec comme mot clé, __Webcam__, on obtient plus d’information.
///
olivier@bornem:~ $ dmesg | grep Webcam
[14220.431459] usb 2-3: Product: HP Webcam HD-2200
[14220.431464] usb 2-3: Manufacturer: HP Webcam HD-2200
[14220.497178] uvcvideo: Found UVC 1.00 device HP Webcam HD-2200 (03f0:a707)
[14220.499787] input: HP Webcam HD-2200 as /devices/pci0000:00/0000:00:04.1/usb2/2-3/2-3:1.0/input/input7
olivier@bornem:~ $
///
On remarque que la webcam est prise en charge par le »driver » __uvcvideo__ $$??UVC|USB video class?? est un protocole de gestion des périphériques vidéo utilisant des ports USB.$$. Il s’agit d’un module chargé automatiquement (dans mon cas) par le noyau.
Si vous obtenez un résultat, le »driver » n’est peut être pas présent sur votre système. Vous pouvez effectuer une recherche :
///
olivier@bornem:~ $ find /lib/modules/ -type f -name ‘*uvcvideo*’ -print
///
Ou bien recompiler votre noyau, assurez-vous d’avoir ces paramètres dans votre fichier @@config@@.
///
[…]
CONFIG_VIDEO_V4L2_COMMON=m
[…]
CONFIG_VIDEO_V4L2=m
[…]
CONFIG_V4L2_MEM2MEM_DEV=m
[…]
CONFIG_V4L_USB_DRIVERS=y
CONFIG_USB_VIDEO_CLASS=m
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
[…]
///
La webcam étant parfaitement reconnue, il peut être intéressant de connaître le nom « générique » $$C’est utile dans le cas, où on a branché et débranché successivement la webcam.$$, car par défaut, Gstreamer utilise @@/dev/video0@@.
@@/dev/v4l/@@ contient ce qui nous intéresse :
///
olivier@bornem:~ $ ls -l /dev/v4l/by-id/
total 0
lrwxrwxrwx 1 root root 12 30 juin 09:40 usb-HP_Webcam_HD-2200_HP_Webcam_HD-2200-video-index0 -> ../../video0
olivier@bornem:~ $
///
!!Capture du flux vidéo
Nous allons créer notre premier pipeline