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 queue
s 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!