Возникла необходимость в воспроизведении видео с одновременным извлечением ONVIF-метаданных.
Имеем такой вот источник:
gst-launch-1.0 rtspsrc location="rtsp://user:pass@xxx.xxx.xxx.xxx:ppp/someurl" debug=true ! fakesink
на выходе (кроме всего прочего) получаем вот такой вот SDP-пакет:
v=0
o=- 1188340656180883 1 IN IP4 192.168.0.4
s=Session streamed with GStreamer
i=rtsp-server
t=0 0
a=tool:GStreamer
a=type:broadcast
a=control:*
a=range:npt=now-
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
a=rtpmap:96 H264/90000
a=control:stream=0
a=fmtp:96 sprop-parameter-sets=Z0IAH+KQCgC3YC3AQEB4eJEV,aM48gA==
m=application 0 RTP/AVP 96
c=IN IP4 0.0.0.0
a=rtpmap:96 vnd.onvif.metadata/90000
a=control:stream=1
sdp packet 0x7fc330012610:
Проблема раз: не получается выделить поток метаданных, то есть команда
gst-launch-1.0 rtspsrc location="rtsp://user:pass@xxx.xxx.xxx.xxx:ppp/someurl" ! application/x-rtp, media=application ! fakesink dump=true
...
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Internal data flow error.
Additional debug info:
gstrtspsrc.c(4587): gst_rtspsrc_loop (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0:
streaming task paused, reason not-linked (-1)
...