2017-10-29 1 views
0

Ich habe in den nächsten Hauptelementen erstellt und ich versuche, sie zu verbinden, um Video zu spielen, aber das Ergebnis von gst_element_link_many ist immer falsch.Ich kann nicht Elemente aus GStreamer-Bibliothek mit Funktion verknüpfen gst_element_link_many

GstElement *pipeline, *videosrc, *videoenc, *muxer, *sink; 
pipeline = gst_pipeline_new ("video-player"); 
    videosrc = gst_element_factory_make ("filesrc", "videosrc"); 
    muxer = gst_element_factory_make ("qtdemux", "mux"); 
    videoenc = gst_element_factory_make ("avdec_mpeg4", "videoenc"); 
    sink = gst_element_factory_make ("autovideosink", "sink"); 

g_object_set (G_OBJECT (videosrc), "location", argv[1], NULL); 
gst_bin_add_many (GST_BIN (pipeline), videosrc, muxer, videoenc, sink, NULL); 

    /* link the elements together */ 
    int resLinkMany = gst_element_link_many (videosrc, muxer, videoenc, sink, NULL); 

    printf(" resLinkMany = %d \n", resLinkMany); //I get 0 

Im Allgemeinen versuche ich, Video zu starten, aber es funktionierte nicht wegen falscher Verknüpfung. Hier ist der vollständige Code meines Programms: https://pastebin.com/BER1BZDU

+0

Verwenden Sie die Umgebungsvariable GST_DEBUG, um die Fehler anzuzeigen. Probieren Sie auch den Befehl mit gst-launch. – Velkan

Antwort

0

Dies ist ein häufiger Fehler - wie Sie sehen können von gst-inspect-1.0 qtdemux die src-Pads sind "manchmal" Pads. Sie müssen das Pad-Add-Signal verwenden, um eine Verbindung zu ihnen herstellen zu können. gst-launch macht das transparent.

Verwandte Themen