GStreamer: имя сигнала 'get-transceivers' недопустимо для экземпляра 'x' типа '(NULL)' - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь использовать GStreamer webRT C на windows, используя webrtcbin со следующим кодом (частично):

...

gchar* descr = g_strdup(
    "webrtcbin name=webrtcbin stun-server=stun://stun.l.google.com:19302 "
    "videotestsrc ! videorate ! video/x-raw,width=640,height=360,framerate=15/1 ! videoconvert ! queue max-size-buffers=1 ! x264enc bitrate=600 speed-preset=ultrafast tune=zerolatency key-int-max=15 ! video/x-h264,profile=constrained-baseline ! queue max-size-time=100000000 ! h264parse ! "
    "rtph264pay config-interval=-1 name=payloader ! "
    "application/x-rtp,media=video,encoding-name=H264,payload=96 !"
    " webrtcbin. "
);
pipeline = gst_parse_launch(descr, &error);

...

//---- BUS
guint bus_watch_id;
bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
bus_watch_id = gst_bus_add_watch(bus, my_bus_callback, NULL);
gst_object_unref(bus);

//---- webRTC
GstWebRTCRTPTransceiver* trans;
GArray* transceivers;

webrtcbin = gst_bin_get_by_name(GST_BIN(pipeline), "webrtcbin");
g_assert(webrtcbin != NULL);

g_signal_emit_by_name(webrtcbin, "get-transceivers", &transceivers);
g_assert(transceivers != NULL && transceivers->len > 0);
trans = g_array_index(transceivers, GstWebRTCRTPTransceiver*, 0);
trans->direction = GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY;
...

Однако, когда программа запускается. На консоли отображается следующая ошибка:

 GLib-GObject-WARNING **: D:\Programs\vcpkg\buildtrees\glib\src\2.52.3-34a15219ec\gobject\gsignal.c:3492: signal name 'get-transceivers' is invalid for instance '000001A62557B0F0' of type '(NULL)'
**
ERROR:D:\gst-test\src\main.cpp:98:TestPipeline: assertion failed: (transceivers != NULL && transceivers->len > 0)
...