Gstreamer c++ ошибка 'G_IS_OBJECT (object)' failed

345
09 августа 2017, 20:17

Есть батник принимающий видео трансляцию по RTP средствами gstreamer. Пытаюсь написать программу, которая делал бы тоже самое, что бы не было нужды в установке gstreamer'a на целевой компьютер. Компилируется нормально, но при запуске появляются ошибки:

(gstreamer-app.exe:3776): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(gstreamer-app.exe:3776): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(gstreamer-app.exe:3776): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(gstreamer-app.exe:3776): GStreamer-CRITICAL **: gst_bin_add_many: assertion 'GST_IS_ELEMENT (element_1)' failed

(gstreamer-app.exe:3776): GStreamer-CRITICAL **: gst_element_link_many: assertion 'GST_IS_ELEMENT (element_1)' failed

bat файл:

gst-launch-1.0.exe udpsrc port=3000 ! capsfilter caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z2QAKK2EBUViuKxUdCAqKxXFYqOhAVFYrisVHQgKisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQCgC3I\,aO48sA\=\=\", payload=(int)96, ssrc=(guint)321130676, clock-base=(guint)96808957, seqnum-base=(guint)33742" ! queue ! rtph264depay ! avdec_h264 ! queue ! d3dvideosink sync=false

Программа

#include <gst/gst.h>
#include <glib.h>    
gchar* caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z2QAKK2EBUViuKxUdCAqKxXFYqOhAVFYrisVHQgKisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQCgC3I\,aO48sA\=\=\", payload=(int)96, ssrc=(guint)321130676, clock-base=(guint)96808957, seqnum-base=(guint)33742";
gint main(int argc, char *argv[]) {
    gst_init (&argc, &argv);
    GstElement *pipeline, *videosrc, *capsfilter , *que, *depay, *dec, *que2, *sync;
    // init GStreamer
    GstCaps* cap = gst_caps_from_string (caps);
    GMainLoop* loop = g_main_loop_new (NULL, FALSE);
    // setup pipeline
    pipeline = gst_pipeline_new ("pipeline");
    videosrc = gst_element_factory_make ("udpsrc", "source");
    capsfilter = gst_element_factory_make ("capsfilter", "filter");
    que = gst_element_factory_make("queue", "que1");
    depay = gst_element_factory_make("rtph264depay", "depay");
    dec = gst_element_factory_make("avdec_h264", "dec");
    que2 = gst_element_factory_make("queue", "que2");
    sync = gst_element_factory_make ("d3dvideosink", "out");

    //--------------------------------------------------
    g_object_set(G_OBJECT(videosrc), "port", 3000, NULL);
    g_object_set(G_OBJECT(capsfilter), "caps", cap, NULL);
    g_object_set(G_OBJECT(sync), "sync", false, NULL);
    //---------------------
    gst_bin_add_many (GST_BIN (pipeline), videosrc, que, depay, dec, que2, sync, NULL);
    gst_element_link_many (videosrc, que, depay, dec, que2, sync, NULL);
    gst_element_set_state (pipeline, GST_STATE_PLAYING);
    g_main_loop_run (loop);
    gst_element_set_state (pipeline, GST_STATE_NULL);
    gst_object_unref (GST_OBJECT (pipeline));
    g_main_loop_unref (loop);
    return 0;
}

Компилирую в code blocks под windows, все header'ы и lib'ы подключил.

READ ALSO
Контейнер &lt;set&gt; C++

Контейнер <set> C++

Возникла задача, в которой надо обращаться с двумя соседними элементами множества setТакой вопрос: как это сделать? Гуглил, нигде не нашел...

354
Не работает программа?

Не работает программа?

Есть данная программа которая работает с принтером, проблема заключается в том что при попытке прочитать с ком порта ничего не происходит,...

393
Перегрузка &ldquo;=&rdquo; для контейнера STL

Перегрузка “=” для контейнера STL

Нужно перегрузить оператор "=" (присваивания для следующих типов данных)

328
Статически слинковать zlib и boost

Статически слинковать zlib и boost

Как статически слинковать zlib с boostКомпилировал командой:

283