gst-plugin-ndi
gst-plugin-ndi copied to clipboard
Dropping old buffer - queue has 11 items
Hello,
I'm new to this plugin, but I think I have built it correctly, and I have tried the following pipeline, where 192.168.1.85:5961 is the IP address/port of an NDI source (found using gst-device-monitor-1.0), and host=192.168.1.250 port=1234 is the address of the destination machine running VLC Media Player with an appropriate SDP file. No image appears, and I have run tshark, and see no UDP packets generated.
gst-launch-1.0 --gst-debug=3 ndisrc url-address=192.168.1.85:5961 ! ndisrcdemux name=demux demux.video ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=192.168.1.250 port=1234 demux.audio ! fakesink sync=false
When I run it, I see the following debug output:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
0:00:00.082723224 1950 0x559fb55000 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<ndisrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
New clock: GstSystemClock
Redistribute latency...
Redistribute latency...
0:00:02.063782791 1950 0x7f68003530 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.130537229 1950 0x7f68003530 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.323813387 1950 0x7f68003530 WARN ndireceiver src/receiver.rs:353:gstndi::receiver:<ndisrc0> Delta 1033615241 too far from skew 265757, resetting
0:00:02.327066490 1950 0x7f68003530 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
I don't know if I'm doing something wrong, or if it is an issue with the plugin. How can I troubleshoot this further? Is the pipeline incorrect, how should I change it?
Apologies if this is a silly issue at my end; I've spent a day troubleshooting, and tried to figure it out on my own, but would appreciate a helping hand.
Many thanks.
Like in the README.md, you have to add big enough queues after both source pads of ndisrcdemux. That will likely solve it.
Thank you for the response, I had tried with and without queue, but both fail for me. I have attached a level 4 debug below.
gst-launch-1.0 --gst-debug=4 ndisrc url-address=192.168.1.85:5961 ! ndisrcdemux name=demux demux.video ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=192.168.1.250 port=1234 demux.audio ! queue ! fakesink sync=false
Result (level 4 debug): debuglevel4.txt
Level 3 debug:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
0:00:00.084467023 12366 0x5597c836d0 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<ndisrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Redistribute latency...
0:00:02.229755868 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.283460188 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.335539832 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:353:gstndi::receiver:<ndisrc0> Delta 1044645150 too far from skew 51112, resetting
0:00:02.338128387 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.398646108 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.582945435 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.587964259 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.592667607 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
0:00:02.647812224 12366 0x7f68003470 WARN ndireceiver src/receiver.rs:755:gstndi::receiver:<ndisrc0> Dropping old buffer -- queue has 11 items
Hello, I was wondering, is there any other debug I should try, to troubleshoot this further? Many thanks.
Just noticed a closed issue, https://github.com/teltek/gst-plugin-ndi/issues/86 that was created by @danjenkins I think I may be hitting the same issue, since I'm using HX as well. I'm using the Android HX Camera App. I've reached out to NewTek to request the Linux/ARM Advanced NDI SDK with the potential fix. I'll close this issue if it turns out to be the same thing.
Hey @shabaz123 i'm seing the same issue with a birddog camera, no matter how big are my queues the problem persists. Were you able to solve it?
Hello, I still have this issue.
:gstndi::receiver:
I'm running it on an ARM-based Linux platform, if that makes any difference.
Hey @shabaz123, in my case i was able to solve the issue adding an async property to the fakesing element:
fakesink sync=false async=false
Hi @Rajiv91 Thank you! That gets me a lot further. I used this syntax (on my ARM device):
gst-launch-1.0 --gst-debug=4 ndisrc url-address=192.168.1.91:5961 ! ndisrcdemux name=demux demux.video ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=192.168.1.250 port=1234 demux.audio ! queue ! fakesink sync=false async=false
For the video source, I am using the Android NDI HX app.
I see this output:
gstbin.c:2623:gst_bin_element_set_state:<ndisrc0> skipping transition from PLAYING to PLAYING
0:00:00.492219264 23527 0x7f88004680 INFO GST_STATES gstbin.c:2954:gst_bin_change_state_func:<pipeline0> child 'ndisrc0' changed state to 4(PLAYING) successfully
0:00:00.492272130 23527 0x7f88004680 INFO GST_STATES gstelement.c:2676:gst_element_continue_state:<pipeline0> completed state change to PLAYING
0:00:00.492305047 23527 0x7f88004680 INFO GST_STATES gstelement.c:2579:_priv_gst_element_state_changed:<pipeline0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:01.438288176 23527 0x7f7c003470 WARN ndireceiver src/receiver.rs:345:gstndi::receiver:<ndisrc0> Delta 1012482166 too far from skew 72852, resetting
0:00:02.440498586 23527 0x7f7c003470 WARN ndireceiver src/receiver.rs:345:gstndi::receiver:<ndisrc0> Delta 1002227963 too far from skew 251802, resetting
0:00:03.446071733 23527 0x7f7c003470 WARN ndireceiver src/receiver.rs:345:gstndi::receiver:<ndisrc0> Delta 1005582001 too far from skew 465167, resetting
0:00:04.451576649
The VLC Player has the following file (which I called h264.sdp) contents:
c=IN IP4 127.0.0.1
m=video 1234 RTP/AVP 96
a=rtpmap:96 H264/90000
However I do not see any video appear, but I do see this message displayed in VLC Media Player:
Do you know what I may be doing wrong here? From the message displayed on the VLC player, it sounds like the NDI decoder is not installed, but I did install it. Here is the output from gst-inspect-1.0 ndi:
gst-inspect-1.0 ndi
Plugin Details:
Name ndi
Description NewTek NDI Plugin
Filename /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstndi.so
Version 1.0.0-12656af
License LGPL
Source module gst-plugin-ndi
Source release date 2022-04-09
Binary package gst-plugin-ndi
Origin URL https://github.com/teltek/gst-plugin-ndi
ndideviceprovider: NewTek NDI Device Provider
ndisrc: NewTek NDI Source
ndisrcdemux: NewTek NDI Source Demuxer
3 features:
+-- 2 elements
+-- 1 device providers
The SDK is correctly installed I believe, because I was successfully able to run an example application:
:~/development/ndi/ndi_adv_sdk/examples/C++/NDIlib_Send_PNG
and I was able to successfully see an image file as video, using the NDI Studio Monitor software on the Windows PC.
Is it a problem with the NDI HX app do you think? If so, is there any other NDI app to try? I do not have any other NDI source. My actual goal was to use a mobile phone (I don't mind what app, it doesn't have to be the NDI HX app if there is another one), and so I do not have any other suitable video source since the goal is to use mobile.
I'm a newcomer to NDI so apologies if I'm asking very basic things! If you have a suggestion for what the gst-launch syntax should be, or what I should place in the VLC player file, then it would be gratefully appreciated. Thank you for all the help so far!
Hi @shabaz123, Were you able to get past this "Video decoder not found" message?
@Rajiv91 If you can share something, that would be great!