teltek / gst-plugin-ndi

GStreamer NDI Plugin for Linux
GNU Lesser General Public License v2.1
154 stars 27 forks source link

gst-plugin-ndi not able to receive audio/video data #112

Open jacobsunil1987 opened 1 year ago

jacobsunil1987 commented 1 year ago

We have been trying to add NDI support in our webOS platform. For that we integrated gst-plugin-ndi along with libndi (NDI SDK) onto our webOS. But when we tested , we are currently facing issue in gst-plugin-ndi not receiving audio/video data.

We separately tested all examples related to libndi NDI SDK. We are able to receive audio/video data in libndi by running sender and receiver examples provided in NDI SDK. Below is the success logs of libndi after receiving video data from NDI server.

root@LGwebOSID:/media/bin# ./NDIlib_Recv
Looking for sources ...
No data received.
No data received.
Video data received (1920x1080).
Video data received (1920x1080).
Video data received (1920x1080).
Video data received (1920x1080).
Video data received (1920x1080).

But when we try to receive data from gst-plugin-ndi , we are unable to receive the data. Below is libndi logs

Looking for sources ...
No data received.
No data received.
No data received.
No data received.
No data received.
No data received.

Below is gst-plugin-ndi logs.

root@LGwebOSID:~# GST_DEBUG=ndi*:9 gst-launch-1.0 -v playbin3 uri=ndi://10.221.44.79:5961 video-sink=lxvideosink
Setting pipeline to PAUSED ...
0:00:00.043919680  6454  0x1a01e40 DEBUG                 ndisrc src/ndisrc/imp.rs:737:gstndi::ndisrc::imp:<source> URI setting done uri is : "ndi://10.221.44.79:5961"
0:00:00.044008280  6454  0x1a01e40 DEBUG                 ndisrc src/ndisrc/imp.rs:132:gstndi::ndisrc::imp:<source> URI Scheme is : "ndi"
0:00:00.044032880  6454  0x1a01e40 DEBUG                 ndisrc src/ndisrc/imp.rs:143:gstndi::ndisrc::imp:<source> Host is : "10.221.44.79"
0:00:00.044053760  6454  0x1a01e40 DEBUG                 ndisrc src/ndisrc/imp.rs:146:gstndi::ndisrc::imp:<source> Port is : "5961"
0:00:00.044073120  6454  0x1a01e40 DEBUG                 ndisrc src/ndisrc/imp.rs:151:gstndi::ndisrc::imp:<source> URI-ADDRESS is : "10.221.44.79:5961"
0:00:00.044687600  6454  0x1a01e40 DEBUG                 ndisrc src/ndisrc/imp.rs:531:gstndi::ndisrc::imp:<source> Setting the parameters : Settings { ndi_name: None, url_address: Some("10.221.44.79:5961"), uri: Some("ndi://10.221.44.79:5961"), connect_timeout: 10000, timeout: 5000, max_queue_length: 10, receiver_ndi_name: "GStreamer NDI Source 1.0.0-12656af+", bandwidth: 100, color_format: UyvyBgra, timestamp_mode: ReceiveTimeTimecode }
0:00:00.044778700  6454  0x1a01e40 DEBUG            ndireceiver src/receiver.rs:581:gstndi::receiver:<source> Starting NDI connection...
0:00:00.044808120  6454  0x1a01e40 DEBUG            ndireceiver src/receiver.rs:585:gstndi::receiver:<source> Connecting to NDI source with NDI name 'None', URL/Address Some("10.221.44.79:5961")
Values setting for ndi_name : None and url_address : Some("10.221.44.79:5961")
NDILib receiver created : 0x1967510
receiver instance passed
recv instance called : Some(RecvInstance(0x1967510))
Capture result type : NDIlib_frame_type_status_change
0:00:00.049181720  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Pipeline is live and does not need PREROLL ...
0:00:00.049531960  6454  0x1a15980 DEBUG                 ndisrc src/ndisrc/imp.rs:731:gstndi::ndisrc::imp:<source> Getting uri from ndisrc : Some("ndi://10.221.44.79:5961")
Redistribute latency...
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: ring-buffer-max-size = 0
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: buffer-size = -1
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: buffer-duration = -1
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: use-buffering = false
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: download = false
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: uri = ndi://10.221.44.79:5961
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: connection-speed = 0
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0: source = "\(NdiSrc\)\ source"
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0/NdiSrc:source.GstPad:src: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement0.GstPad:src: caps = application/x-ndi
New clock: GstSystemClock
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0.GstGhostPad:src_0: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstTypeFindElement:typefind.GstPad:src: caps = application/x-ndi
0:00:00.054109440  6454  0x1a15980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp:<ndisrcdemux0:sink> Handling event Event { ptr: 0x1a19d98, type: "stream-start", seqnum: Seqnum(39), structure: Some(GstEventStreamStart, stream-id=(string)a14d3513c3989f64919b7202b4f8321d5eda9828d336dad9c66ef037dfc53721, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;) }
0:00:00.054324360  6454  0x1a15980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp:<ndisrcdemux0:sink> Handling event Event { ptr: 0xf3102810, type: "caps", seqnum: Seqnum(70), structure: Some(GstEventCaps, caps=(GstCaps)application/x-ndi;) }
0:00:00.054451580  6454  0x1a15980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp:<ndisrcdemux0:sink> Handling event Event { ptr: 0x1a19d98, type: "stream-start", seqnum: Seqnum(39), structure: Some(GstEventStreamStart, stream-id=(string)a14d3513c3989f64919b7202b4f8321d5eda9828d336dad9c66ef037dfc53721, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;) }
0:00:00.054501320  6454  0x1a15980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp:<ndisrcdemux0:sink> Handling event Event { ptr: 0xf3102810, type: "caps", seqnum: Seqnum(70), structure: Some(GstEventCaps, caps=(GstCaps)application/x-ndi;) }
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/NdiSrcDemux:ndisrcdemux0.GstPad:sink: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstTypeFindElement:typefind.GstPad:sink: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0.GstGhostPad:sink: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0.GstGhostPad:sink: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0.GstGhostPad:src_0.GstProxyPad:proxypad1: caps = application/x-ndi
Capture queue called
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement0.GstPad:sink: caps = application/x-ndi
Capture result type : NDIlib_frame_type_metadata
0:00:00.062071440  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:723:gstndi::receiver:<source> Received metadata at timecode 0:00:00.000000000: <ndi_tally_echo on_program="false" on_preview="false"/>
Capture result type : NDIlib_frame_type_none
0:00:00.112157000  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.162249740  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.212334220  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.262833580  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.312943960  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.363029320  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.413114600  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.463196500  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry
Capture result type : NDIlib_frame_type_none
0:00:00.513275640  6454  0x1a22920 DEBUG            ndireceiver src/receiver.rs:690:gstndi::receiver:<source> No frame received yet, retry

Can we get any support on this issue? or we want to know the reason why no frames are received in gst-plugin-ndi.

jacobsunil1987 commented 1 year ago

One observation from logs is

We compared logs of ubuntu working case with webOS non working case.

working case - Ubuntu : ndireceiver src/receiver.rs:719:gstndi::receiver:<ndisrc0> Received metadata at timecode 0:00:00.000000000: <ndi_tally_echo on_program="true" on_preview="false"/> non working case - webOS : ndireceiver src/receiver.rs:720:gstndi::receiver:<source> Received metadata at timecode 0:00:00.000000000: <ndi_tally_echo on_program="false" on_preview="false"/>

we see that on_program= false in issue case. Any reason why this difference in metadata? Can this be the reason for not receiving audio/video data in gst-plugin-ndi?

sdroege commented 1 year ago

Can you provide a stream that shows this behaviour?

That metadata difference is going to be related, yes. However when creating the receiver, we already set that to true/false. That needs a bit of debugging directly with such a stream.

Also keep in mind that this repository is outdated. The latest version can be found at https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/tree/main/net/ndi

jacobsunil1987 commented 1 year ago

@sdroege Thank you so much for your quick support.

We are checking on how to upload the stream file here as we have restrictions from our firewall. We will share you the file soon after clearing the restrictions. But in our observation , we find this same problem in any file streaming.

And about the metadata , we checked our issue case and we see that

Ubuntu working case : We receive metadata twice
     First time on_program="false", 
     Second time on_Program="true")

webOS non working case : metadata received only once with on_program="false"

Also we have tried to use gst-plugins-rs ndi code in our setup. We found same behaviour in that as well. We will soon provide you the logs of that.

jacobsunil1987 commented 1 year ago

@sdroege We have tried the same test run using ndi from gst-plugins-rs

Server : OBS Studio Stream file used : https://download.samplelib.com/mp4/sample-30s.mp4

Client : webOS device We have observed same behaviour in client and the streaming failed with "No frame received yet, retry".


   root@LGwebOSID:~# GST_DEBUG=ndi*:9 gst-launch-1.0 -v playbin3 uri=ndi://10.221.44.89:5961 video-sink=lxvideosink
Setting pipeline to PAUSED ...
URI setting done uri is : 'ndi://10.221.44.89:5961'
uri schema is : 'ndi'
host is : '10.221.44.89'
port is : '5961'
url-address is : '10.221.44.89:5961'
Settings : Settings { ndi_name: None, url_address: Some("10.221.44.89:5961"), uri: Some("ndi://10.221.44.89:5961"), connect_timeout: 10000, timeout: 5000, max_queue_length: 10, receiver_ndi_name: "GStreamer NewTek NDI Source 0.11.0-alpha.1-12656af+", bandwidth: 100, color_format: UyvyBgra, timestamp_mode: Auto }
0:00:00.035133860 12607  0x2350c40 DEBUG            ndireceiver src/ndisrc/receiver.rs:694:gstndi::ndisrc::receiver::Receiver::connect::{{closure}}:<source> Starting NDI connection...
0:00:00.035183660 12607  0x2350c40 DEBUG            ndireceiver src/ndisrc/receiver.rs:698:gstndi::ndisrc::receiver::Receiver::connect:<source> Connecting to NDI source with NDI name 'None', URL/Address Some("10.221.44.89:5961") and URI Some("ndi://10.221.44.89:5961")
0:00:00.038751200 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
Getting uri from ndisrc : 'Some("ndi://10.221.44.89:5961")'
Pipeline is live and does not need PREROLL ...
Redistribute latency...
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: ring-buffer-max-size = 0
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: buffer-size = -1
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: buffer-duration = -1
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: use-buffering = false
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: download = false
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: uri = ndi://10.221.44.89:5961
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0: connection-speed = 0
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0: source = "\(GstNdiSrc\)\ source"
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0/GstNdiSrc:source.GstPad:src: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement0.GstPad:src: caps = application/x-ndi
New clock: GstSystemClock
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0.GstGhostPad:src_0: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0.GstGhostPad:sink.GstProxyPad:proxypad2: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstTypeFindElement:typefind.GstPad:src: caps = application/x-ndi
0:00:00.043071460 12607  0x2364980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp::NdiSrcDemux::sink_event:<ndisrcdemux0> Handling event Event { ptr: 0x2369198, type: "stream-start", seqnum: Seqnum(39), structure: Some(GstEventStreamStart { stream-id: (gchararray) "d98d50a2689291c9c08823e9f7969c161f852ba990457a6437c8adacce31782f", flags: (GstStreamFlags) ((GstStreamFlags) GST_STREAM_FLAG_NONE), group-id: (guint) 1 }) }
0:00:00.043169260 12607  0x2364980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp::NdiSrcDemux::sink_event:<ndisrcdemux0> Handling event Event { ptr: 0xf3502410, type: "caps", seqnum: Seqnum(70), structure: Some(GstEventCaps { caps: (GstCaps) application/x-ndi }) }
0:00:00.043268600 12607  0x2364980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp::NdiSrcDemux::sink_event:<ndisrcdemux0> Handling event Event { ptr: 0x2369198, type: "stream-start", seqnum: Seqnum(39), structure: Some(GstEventStreamStart { stream-id: (gchararray) "d98d50a2689291c9c08823e9f7969c161f852ba990457a6437c8adacce31782f", flags: (GstStreamFlags) ((GstStreamFlags) GST_STREAM_FLAG_NONE), group-id: (guint) 1 }) }
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstNdiSrcDemux:ndisrcdemux0.GstPad:sink: caps = application/x-ndi
0:00:00.043316200 12607  0x2364980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp::NdiSrcDemux::sink_event:<ndisrcdemux0> Handling event Event { ptr: 0xf3502410, type: "caps", seqnum: Seqnum(70), structure: Some(GstEventCaps { caps: (GstCaps) application/x-ndi }) }
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstTypeFindElement:typefind.GstPad:sink: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0.GstGhostPad:sink: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0.GstGhostPad:sink: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0.GstGhostPad:src_0.GstProxyPad:proxypad1: caps = application/x-ndi
/GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement0.GstPad:sink: caps = application/x-ndi
0:00:00.088832840 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.138896520 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.188957040 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.239022120 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.289085600 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.339150600 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.389212140 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.439475160 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.489537360 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.539610820 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.589676020 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.639733760 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.689789660 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.739848140 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.789910080 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
0:00:00.839969200 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:802:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> No frame received yet, retry
.
.
.
0:00:10.052586320 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:798:gstndi::ndisrc::receiver::Receiver::receive_thread:<source> Timed out -- assuming EOS
0:00:10.052626540 12607  0x2371b20 DEBUG            ndireceiver src/ndisrc/receiver.rs:865:gstndi::ndisrc::receiver::Receiver::receive_thread::{{closure}}:<source> Signalling EOS
0:00:10.052922080 12607  0x2364980 LOG              ndisrcdemux src/ndisrcdemux/imp.rs:298:gstndi::ndisrcdemux::imp::NdiSrcDemux::sink_event:<ndisrcdemux0> Handling event Event { ptr: 0xf35025c0, type: "eos", seqnum: Seqnum(31), structure: None }
ERROR: from element /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstNdiSrcDemux:ndisrcdemux0: Could not demultiplex stream.
Additional debug info:
src/ndisrcdemux/imp.rs(302): gstndi::ndisrcdemux::imp::NdiSrcDemux::sink_event (): /GstPlayBin3:playbin3-0/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstNdiSrcDemux:ndisrcdemux0:
EOS without available srcpad(s)
Execution ended after 0:00:10.013628420
Setting pipeline to NULL ...
0:00:10.054686620 12607  0x2350c40 DEBUG                 ndisrc src/ndisrc/imp.rs:498:<gstndi::ndisrc::imp::NdiSrc as gstreamer_base::subclass::base_src::BaseSrcImpl>::unlock:<source> Unlocking
0:00:10.055048700 12607  0x2350c40 DEBUG                 ndisrc src/ndisrc/imp.rs:506:<gstndi::ndisrc::imp::NdiSrc as gstreamer_base::subclass::base_src::BaseSrcImpl>::unlock_stop:<source> Stop unlocking
0:00:10.055089020 12607  0x2350c40 DEBUG            ndireceiver src/ndisrc/receiver.rs:569:<gstndi::ndisrc::receiver::ReceiverInner as core::ops::drop::Drop>::drop::{{closure}}:<source> Closed NDI connection
Freeing pipeline ...
sdroege commented 1 year ago

Please report that in gitlab.freedesktop.org then, thanks. I'd also need step by step instructions for how to set up an NDI stream with OBS.

jacobsunil1987 commented 1 year ago

@sdroege Sure thanks again. I will report this issue in gitlab.freedesktop.org

we can setup NDI Server using using two options

jacobsunil1987 commented 1 year ago

@sdroege i would like to update you on one thing. We have been using gst-plugin-ndi over gst-plugin-rs although gst-plugin-rs has latest ndi source because in webOS , we have gstreamer 1.18 version supported. But we know that gst-plugin-rs (NDI source) depends on gstreamer 1.20. So we have been trying with gst-plugin-ndi until now.

sdroege commented 1 year ago

It does not depend on 1.20. By default it requires 1.18 but you can also compile it with 1.14 if you disable some features.

jacobsunil1987 commented 1 year ago

Once again thanks for your quick response. It really helps us know quickly on what next to be done. By the way the reason why i mentioned about the dependency of gst-plugins-rs with gstreamer 1.20, is that we got the below error while building gst-plugins-rs.

gstreamer-audio & gstreamer-pbutils were expecting v1.20

|   cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
|   cargo:warning=`"pkg-config" "--libs" "--cflags" "gstreamer-audio-1.0" "gstreamer-audio-1.0 >= 1.20"` did not exit successfully: exit status: 1
|   error: could not find system library 'gstreamer-audio-1.0' required by the 'gstreamer-audio-sys' crate
|
|   --- stderr
|   Requested 'gstreamer-audio-1.0 >= 1.20' but version of GStreamer Audio library is 1.18.2
|
| The following warnings were emitted during compilation:
|
| warning: `"pkg-config" "--libs" "--cflags" "gstreamer-pbutils-1.0" "gstreamer-pbutils-1.0 >= 1.20"` did not exit successfully: exit status: 1
|
| error: failed to run custom build command for `gstreamer-pbutils-sys v0.21.0 (https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#0b922b0e)`
|
sdroege commented 1 year ago

Build inside net/ndi only instead of building everything.

Once again thanks for your quick response. It really helps us know quickly on what next to be done.

I don't expect to be able to have time to look into the actual problem anytime this week btw.

jacobsunil1987 commented 1 year ago

@sdroege The above error mentioned was got by building net/ndi alone.

And about your time, we are thankful until now for your responses to our queries. We will try to check ourself now. In any case we get any other queries , we will reach out to you later.