Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink  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 !! smile

#8 Le 05/06/2011, à 16:43

Melanie91

Re : Ne comprend pas comment fonctionne GStreamer

Ok merci jvais continué

Hors ligne