#1 Le 19/05/2011, à 15:55
- Melanie91
Ne comprend pas comment fonctionne GStreamer
Bonjour,
Je suis actuellement entrain d'essayer de programmer une interface gtk permettant de d'afficher ce que voix ma webcam. En cherchant sur la toile, je suis tombé sur différent forum parlant de GStreamer. Heureuse de cette trouvaille, je me suis documenté sur cette librairie mais j'y ai pas compris grand chose. J'ai eu beaux regardé le magnifique tutoriel de nicolargo, et plein d'autre. Je n'y comprend toujours rien veuillez m'aider SVP.
Voici un code que j'ai essayer de faire qui compile mais pose problème lors de l’exécution :
#include <gst/gst.h>
int main(gint argc, gchar *argv[])
{
GstElement * music;
gst_init(&argc, &argv);
player = gst_element_factory_make ("oggvorbisplayer", "music");
g_object_set (player, "cheminVersLeFichier", "Fichier.ogg", NULL);
gst_element_set_state (GST_ELEMENT (music), GST_STATE_PLAYING);
return 0;
}
erreur lors de l’exécution :
(tet:2314): GLib-GObject-CRITICAL **: g_object_set: assertion `G_IS_OBJECT (object)' failed
(tet:2314): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed
Hors ligne
#2 Le 20/05/2011, à 12:46
- Melanie91
Re : Ne comprend pas comment fonctionne GStreamer
Je suis seul sur ce forum ?
Hors ligne
#3 Le 20/05/2011, à 21:25
- obiwankennedy
Re : Ne comprend pas comment fonctionne GStreamer
il te manque plusieurs points. En faite il faut créer un pipeline entre le fichier et les haut parleurs en passant par les étapes: extraction, décodage, mixage…
plus d'info: (il marche)
http://gstreamer.freedesktop.org/data/d … world.html
Il est aussi possible de créer des playbin qui construit la chaine pour toi.
J'ai trouvé ça:
http://bluwiki.com/go/GStreamer/C_Hello_World
Dans tous les cas, tu as besoin d'une Mainloop de glib.
Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam
Hors ligne
#4 Le 23/05/2011, à 16:20
- Melanie91
Re : Ne comprend pas comment fonctionne GStreamer
Bonjour,
Merci pour tes réponse, puis avec tes conseils j'en suis arriver la :
int main(gint argc, gchar *argv[])
{
GstElement *pipeline;
GstElement *filesrc;
GstElement *codec;
GstElement *queue;
GstElement *filtre;
GstElement *Vision;
GMainLoop *loop;
/* init GStreamer */
gst_init (&argc, &argv);
loop = g_main_loop_new(NULL, FALSE);
pipeline = gst_pipeline_new("my_pipeline");
/* create element */
filesrc = gst_element_factory_make("filesrc" , "source");
g_object_set(G_OBJECT(filesrc), "location", "/home/dudul/fichier.avi", NULL);
codec = gst_element_factory_make ("decodebin", "Codec");
if (!codec) {
g_print ("Failed to create element of type 'fakesrc'\n");
return -1;
}
queue = gst_element_factory_make("queue" , "Queue");
filtre = gst_element_factory_make("ffmpegcolorspace" , "Filtre");
Vision = gst_element_factory_make("autovideosink" , "sink");
gst_bin_add_many (GST_BIN (pipeline),filesrc, codec, queue, filtre, Vision, NULL);
gst_element_link_many (filesrc, codec, queue, filtre, Vision, NULL);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
g_main_loop_run(loop);
gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL);
gst_object_unref(GST_OBJECT(pipeline));
return 0;
}
Sa compile mais sa n'affiche rien est normal ?
Hors ligne
#5 Le 26/05/2011, à 14:37
- Melanie91
Re : Ne comprend pas comment fonctionne GStreamer
il me sort erreur de flux de donnée :s
Hors ligne
#6 Le 31/05/2011, à 13:32
- Melanie91
Re : Ne comprend pas comment fonctionne GStreamer
Alors résultat ?
Hors ligne
#7 Le 04/06/2011, à 12:20
- compte supprimé
Re : Ne comprend pas comment fonctionne GStreamer
Essaye avec une video ou il n'y a pas de son la queue pour la video prend peut être le canal audio d'ou l'erreur !!
Autrement il faut linker en dynamique avec une callback (evenement "new-decoded-pad ") et un test pour déterminer le type de canal .
La documentation et les exemples sont assez claires sur le site officiel .
Ne perd pas courage, ça en vaut vraiment la peine !!
#8 Le 05/06/2011, à 16:43
- Melanie91
Re : Ne comprend pas comment fonctionne GStreamer
Ok merci jvais continué
Hors ligne