2016-01-28 3 views
0

Я пытаюсь использовать GStreamer 1.7.1 для запуска RTSP-сервера с поддержкой аутентификации и TLS. Код, который я использую, почти идентичен file from source, за исключением #define WITH_AUTH и #define WITH_TLS.Сервер GStreamer RTSP с ошибкой TLS

Я запускаю сервер, используя ./test-video после компиляции, находясь внутри каталога примеров.

Чтобы получить доступ к течению, я соединяюсь с той же машины, используя следующую строку в терминале: gst-launch-1.0 rtspsrc location=rtsps://127.0.0.1:8554/test user-id=user user-pw=password tls-validation-flags=generic-error ! rtph264depay ! avdec_h264 ! videoconvert ! osxvideosink

После того, как я пытаюсь запустить клиент, сервер выдает эти сообщения:

0:00:03.217216000 26896 0x7fe1248159e0 ERROR    rtspclient rtsp-client.c:733:find_media: client 0x7fe1240208e0: not authorized to see factory path /test 
0:00:03.217248000 26896 0x7fe1248159e0 ERROR    rtspclient rtsp-client.c:2276:handle_describe_request: client 0x7fe1240208e0: no media 

(test-video:26896): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_element_get_request_pad: assertion 'GST_IS_ELEMENT (element)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed 

(test-video:26896): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_element_get_request_pad: assertion 'GST_IS_ELEMENT (element)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed 

(test-video:26896): GLib-GObject-WARNING **: invalid (NULL) pointer instance 

(test-video:26896): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(test-video:26896): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_element_get_request_pad: assertion 'GST_IS_ELEMENT (element)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed 

(test-video:26896): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_element_get_request_pad: assertion 'GST_IS_ELEMENT (element)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed 

(test-video:26896): GLib-GObject-WARNING **: invalid (NULL) pointer instance 

(test-video:26896): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed 

(test-video:26896): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

В то время как клиентский выход:

Setting pipeline to PAUSED ... 
Pipeline is live and does not need PREROLL ... 
Progress: (open) Opening Stream 
Progress: (connect) Connecting to rtsps://127.0.0.1:8554/test 
Progress: (open) Retrieving server options 
Progress: (open) Retrieving media info 

** (gst-launch-1.0:26910): CRITICAL **: gst_rtsp_message_take_header: assertion 'value != NULL' failed 
Progress: (request) SETUP stream 0 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: invalid (NULL) pointer instance 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: invalid (NULL) pointer instance 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gtype.c:4272: type id '0' is invalid 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: can't peek value table for type '<invalid>' which is not currently referenced 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gvalue.c:184: cannot initialize GValue with type '(null)', this type has no GTypeValueTable implementation 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gtype.c:4272: type id '0' is invalid 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: can't peek value table for type '<invalid>' which is not currently referenced 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gvalue.c:184: cannot initialize GValue with type '(null)', this type has no GTypeValueTable implementation 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_value_deserialize: assertion 'G_IS_VALUE (dest)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_value_deserialize: assertion 'G_IS_VALUE (dest)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_object_set_property: assertion 'G_IS_OBJECT (object)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_object_set_property: assertion 'G_IS_OBJECT (object)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_value_unset: assertion 'G_IS_VALUE (value)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_value_unset: assertion 'G_IS_VALUE (value)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_element_get_request_pad: assertion 'GST_IS_ELEMENT (element)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

** (gst-launch-1.0:26910): CRITICAL **: gst_rtsp_message_take_header: assertion 'value != NULL' failed 
Progress: (request) SETUP stream 1 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: invalid (NULL) pointer instance 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: invalid (NULL) pointer instance 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gtype.c:4272: type id '0' is invalid 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: can't peek value table for type '<invalid>' which is not currently referenced 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gvalue.c:184: cannot initialize GValue with type '(null)', this type has no GTypeValueTable implementation 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gtype.c:4272: type id '0' is invalid 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: can't peek value table for type '<invalid>' which is not currently referenced 

(gst-launch-1.0:26910): GLib-GObject-WARNING **: gvalue.c:184: cannot initialize GValue with type '(null)', this type has no GTypeValueTable implementation 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_value_deserialize: assertion 'G_IS_VALUE (dest)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_value_deserialize: assertion 'G_IS_VALUE (dest)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_object_set_property: assertion 'G_IS_OBJECT (object)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_object_set_property: assertion 'G_IS_OBJECT (object)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_value_unset: assertion 'G_IS_VALUE (value)' failed 

(gst-launch-1.0:26910): GLib-GObject-CRITICAL **: g_value_unset: assertion 'G_IS_VALUE (value)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_element_get_request_pad: assertion 'GST_IS_ELEMENT (element)' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed 

(gst-launch-1.0:26910): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed 
Progress: (open) Opened Stream 
Setting pipeline to PLAYING ... 
New clock: GstSystemClock 
Progress: (request) Sending PLAY request 
Progress: (request) Sending PLAY request 
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc4: Internal data flow error. 
Additional debug info: 
gstbasesrc.c(2948): void gst_base_src_loop(GstPad *)(): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc4: 
streaming task paused, reason not-negotiated (-4) 
Execution ended after 0:00:00.001834000 
Setting pipeline to PAUSED ... 
Setting pipeline to READY ... 
Setting pipeline to NULL ... 
Freeing pipeline ... 

Я в настоящее время пытаюсь использовать машину OS X El Capitan, но у меня также есть попробовал в ящике Linux Mint 17.3 и получил одинаковые сообщения.

Есть ли у кого-нибудь идеи о том, как я могу решить эту проблему? Спасибо за любую помощь заранее.

ответ

1

Эти ошибки, вероятно, связаны с тем, что gstreamer или glib не могут динамически загружать модули.

Первая регистрация:

С любым из функциональности TLS, Glib динамически загружает в модуль TLS. По defualt это модуль gnutls. На Ubuntu это можно найти в /usr/lib/x86_64-linux-gnu/gio/modules/libgiognutls.so. Эта зависимость обеспечивается glib-networking (https://github.com/GNOME/glib-networking), если вы хотите скомпилировать ее самостоятельно.

Второй Проверил:

После рукопожатия TLS завершена, сервер RTSP затем переходит к настройке канала SRTP. Если плагины SRTP не существуют в системе, программа выведет CRITICAL ошибки. Запустите gst-inspect-1.0 srtpenc и gst-inspect-1.0 srtpdec, чтобы убедиться, что эти плагины существуют и что их зависимости выполнены.

+0

Мне не хватало плагина srtp из gst-plugins-bad, потому что ни у одной машины не было установлен srtp. Спасибо за помощь! – BurnerBoy

Смежные вопросы