Magic mirror (Vala) Use your webcam as a mirror using the GStreamer framework and GTK+ Daniel G. Siegel dgsiegel@gnome.org Johannes Schmid jhs@gnome.org Marta Maria Casetti mmcasetti@gmail.com 2013 Luc Rebert, traduc@rebert.name 2011 Alain Lojewski, allomervan@gmail.com 2011-2012 Luc Pionchon pionchon.luc@gmail.com 2011 Bruno Brouard annoa.b@gmail.com 2011-12 Luis Menina liberforce@freeside.fr 2014 Miroir magique

Your mirror just fell off the wall and broke into a thousand pieces — but you need a mirror to shave your beard off or add some makeup! You only have 15 minutes left before catching the bus to work. So what can you do?

Dans ce tutoriel, nous allons faire un programme qui va vous permettre d'utiliser votre webcam comme miroir. Vous apprendrez comment :

créer une application GTK+,

accéder à votre webcam en utilisant GStreamer et intégrer le résultat dans une fenêtre,

récupérer des photos de votre webcam,

Vous avez besoin de ce qui suit pour pouvoir suivre ce tutoriel :

l'installation du paquet Anjuta IDE,

l'installation des paquets GTK, GStreamer et d'un compilateur Vala,

des connaissances de base d'un langage de programmation d'objets.

Création d'un projet dans Anjuta

Avant de commencer à programmer, vous devez ouvrir un nouveau projet dans Anjuta. Ceci crée tous les fichiers qui vous sont nécessaires pour construire et exécuter votre programme plus tard. C'est aussi utile pour tout regrouper en un seul endroit.

Lancez Anjuta et cliquez sur FichierNouveauProjet pour ouvrir l'assistant de création de projet.

Choose GTK+ (simple) from the Vala tab, click Forward, and fill out your details on the next few pages. Use magic-mirror as project name and directory.

Désactivez Utiliser GtkBuilder pour l'interface utilisateur car nous allons créer l'interface utilisateur manuellement. Consultez le tutoriel Accordeur de guitare à propos de l'utilisation du constructeur d'interface GtkBuilder.

Assurez-vous que Configuration des paquets externes est activé. Sur la page suivante, sélectionnez gstreamer-0.10 dans la liste pour inclure la bibliothèque GStreamer à votre projet.

Cliquez sur Appliquer et votre projet est créé. Ouvrez src/miroir_magique.vala depuis l'onglet Projet ou l'onglet Fichiers. Vous devez voir apparaître du code commençant par les lignes :

Première construction du programme

Le programme charge et affiche une fenêtre (vide). Vous trouverez plus de détails ci-dessous ; passez cette liste si vous comprenez les bases :

Les deux lignes using importent des espaces de noms que nous n'aurons plus à nommer explicitement.

Le constructeur de la classe principale Main crée une nouvelle fenêtre et définit son titre. Ensuite, la fenêtre est affichée et un signal permettant de quitter l'application est connecté à la fermeture de la fenêtre. Plus d'informations sur les signaux sont données plus tard.

La fonction statique main est exécutée par défaut quand vous lancez une application Vala. Elle appelle d'autres fonctions qui créent la classe « Main », initialise et ensuite exécute l'application. La fonction Gtk.Main démarre la boucle principale GTK, qui lance l'interface utilisateur et commence à écouter les événements (comme des clics de souris ou des appuis sur des touches).

Le programme est prêt à être utilisé, donc vous pouvez le compiler en cliquant sur ConstruireConstruire le projet ou en appuyant sur MajF7.

Pour configurer le répertoire de compilation, modifiez la Configuration à Par défaut et cliquez sur Exécuter. Il ne faut le faire qu'une seule fois, à la première compilation.

Accès au flux vidéo de votre webcam avec GStreamer

L'architecture multimédia de GStreamer sait gérer les vidéos en provenance de webcams. Ajoutons GStreamer à notre application et nous pouvons ainsi accéder au flux vidéo.

Enlevons d'abord la fenêtre créée précédemment, car GStreamer va gérer l'affichage de l'image à l'écran.

Créons maintenant un élément GStreamer qui va accéder à notre webcam. Nous utilisons l'élément « Camerabin », qui est un élément caméra tout-en-un et qui sait faire des photos, des vidéos, appliquer des effets et beaucoup plus encore. Parfait dans notre cas ! Avec this.camerabin.set_state (Gst.State.PLAYING) nous disons au pipeline GStreamer, que nous venons de créer, de commencer la lecture. Facile, non ?

Of course it is also possible to integrate the video more tightly into other windows but that is an advanced topic that includes some details of the X Window System we will omit here.

Compilez et exécutez le programme à nouveau. Vous obtenez finalement deux fenêtres. À l'étape suivante, nous allons intégrer la vidéo dans la fenêtre GTK+.

Implémentation de référence

Si vous rencontrez des difficultés avec ce tutoriel, comparez votre programme à ce programme de référence. Il existe aussi une implémentation plus complète qui intègre la fenêtre à une fenêtre standard Gtk, mais qui nécessite des techniques avancées ainsi que l'ajout de boutons pour lire/arrêter l'image.

Documentation complémentaire

Pour en savoir plus à propos de la programmation en langage Vala, consultez le manuel Vala.

Conclusion

Ça y est ; vous avez réussi à créer une application fonctionnelle pour webcam en 15 minutes. Maintenant, vous pouvez vous raser ou maquiller votre joli visage avant de passer une belle journée sur votre lieu de travail, où vous allez pouvoir épater vos amis et collègues avec une application géniale faite en 15 minutes.