Что-то не так с моей конфигурацией gst-rstp-server? - PullRequest
1 голос
/ 15 марта 2020

Я пытаюсь использовать gst-rtsp-сервер для передачи видеопотока H264, предоставляемого IP-видеокамерой.

Я использую https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server.git

Запуск

./test-launch "videotestsrc ! video/x-raw,width=960,height=504 ! timeoverlay text='H.264' valignment=top halignment=left ! x264enc ! rtph264pay name=pay0 pt=96"

работает нормально, и у меня есть хороший тестовый дисплей при запуске

ffplay rtsp://127.0.0.1:8554/test 

Теперь, когда я запускаю

./test-launch "rtspsrc location=rtsp://user:pass@my.local.ip.adress:554 ! rtph264pay name=pay0 pt=96"

я получаю

stream ready at rtsp://127.0.0.1:8554/test
0:00:04.041775651     8 0x7fdb68003770 WARN                 default grammar.y:506:gst_parse_no_more_pads:<rtspsrc0> warning: Delayed linking failed.
0:00:04.041848650     8 0x7fdb68003770 WARN                 default grammar.y:506:gst_parse_no_more_pads:<rtspsrc0> warning: failed delayed linking some pad of GstRTSPSrc named rtspsrc0 to some pad of GstRtpH264Pay named pay0
0:00:04.042011196     8 0x55ebb9fa9370 WARN               rtspmedia rtsp-media.c:3014:default_handle_message: 0x7fdb94010400: got warning Delayed linking failed. (./grammar.y(506): gst_parse_no_more_pads (): /GstPipeline:media-pipeline/GstBin:bin0/GstRTSPSrc:rtspsrc0:
failed delayed linking some pad of GstRTSPSrc named rtspsrc0 to some pad of GstRtpH264Pay named pay0)
0:00:04.043518904     8 0x7fdb88005d40 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc1> error: Internal data stream error.
0:00:04.043548883     8 0x7fdb88005d40 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc1> error: streaming stopped, reason not-linked (-1)
0:00:04.043742638     8 0x55ebb9fa9370 WARN               rtspmedia rtsp-media.c:3001:default_handle_message: 0x7fdb94010400: got error Internal data stream error. (gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:media-pipeline/GstBin:bin0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1:
streaming stopped, reason not-linked (-1))
0:00:04.043802176     8 0x55ebb9fa5050 WARN               rtspmedia rtsp-media.c:3272:wait_preroll: failed to preroll pipeline
0:00:04.043815921     8 0x55ebb9fa5050 WARN               rtspmedia rtsp-media.c:3652:gst_rtsp_media_prepare: failed to preroll pipeline
0:00:04.044665029     8 0x7fdb8c005230 WARN                 rtspsrc gstrtspsrc.c:6320:gst_rtsp_src_receive_response:<rtspsrc0> receive interrupted
0:00:04.044710262     8 0x7fdb8c005230 WARN                 rtspsrc gstrtspsrc.c:8648:gst_rtspsrc_pause:<rtspsrc0> PAUSE interrupted
0:00:04.055129828     8 0x7fdb8c005230 WARN                 rtspsrc gstrtspsrc.c:6561:gst_rtspsrc_send:<rtspsrc0> error: Unhandled error
0:00:04.055182089     8 0x7fdb8c005230 WARN                 rtspsrc gstrtspsrc.c:6561:gst_rtspsrc_send:<rtspsrc0> error: Method Not Valid in This State (455)
0:00:04.055293147     8 0x7fdb8c005230 WARN                 rtspsrc gstrtspsrc.c:8072:gst_rtspsrc_close:<rtspsrc0> error: Could not send message. (Generic error)
0:00:04.055650169     8 0x55ebb9fa9370 WARN               rtspmedia rtsp-media.c:3001:default_handle_message: 0x7fdb94010400: got error Unhandled error (gstrtspsrc.c(6561): gst_rtspsrc_send (): /GstPipeline:media-pipeline/GstBin:bin0/GstRTSPSrc:rtspsrc0:
Method Not Valid in This State (455))
0:00:04.055687457     8 0x55ebb9fa9370 WARN               rtspmedia rtsp-media.c:3001:default_handle_message: 0x7fdb94010400: got error Could not write to resource. (gstrtspsrc.c(8072): gst_rtspsrc_close (): /GstPipeline:media-pipeline/GstBin:bin0/GstRTSPSrc:rtspsrc0:
Could not send message. (Generic error))
0:00:04.056751894     8 0x55ebb9fa5050 ERROR             rtspclient rtsp-client.c:1077:find_media: client 0x55ebba025d20: can't prepare media
0:00:04.057123746     8 0x55ebb9fa5050 ERROR             rtspclient rtsp-client.c:2963:handle_describe_request: client 0x55ebba025d20: no media

ffplay отображает ошибку 503

Мой синтаксис rtspsr c и конвейер выглядит нормально.

Что здесь не так?

Это синтаксис логина / пароля в URL?

Пояснения:

Я хочу отобразить поток H264, предоставляемый IP-видеокамерой, в теге HTML5. Медиапоток этого видеоэлемента должен быть передан в поток WEB-RT C.

Для этого

  1. gst-rtsp-server маскирует пользователя / пароль из URL (rtsp: // user:pass@my.local.ip.adress: 554)
  2. Поток RTSP websockified (https://github.com/novnc/websockify)
  3. media-stream-library (https://www.npmjs.com/package/media-stream-library) отображает видео на веб-странице

Кто-нибудь уже сделал это? Есть ли лучший способ сделать это?

...