gst-plugin-ndi icon indicating copy to clipboard operation
gst-plugin-ndi copied to clipboard

NDI HX

Open RobertoAlda opened this issue 3 years ago • 7 comments

Hi, is there a way to get the NDI source HX and put it on a virtual video capture device created with v4l2loopback?

I've tested the source created by NDI tool "NDI Screen Capture" running on my Windows PC and captured on Ubuntu machine by the cmd: gst-launch-1.0 ndivideosrc ndi-name="PCROBERTOALDA (NVIDIA Quadro P620 1)"
! videoconvert
! "video/x-raw, format=YUY2, interlace-mode=progressive, tune=zerolatency"
! tee
! v4l2sink device=/dev/video0

and all is OK.

But when i try with source created by "NDI Screen Capture HX" it shows these msgs and exits:

Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock Got EOS from element "pipeline0". Execution ended after 0:00:10.023522556 Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ...

There are a lot of NDI HX Camera sources on commerce and i'd like to get them with gstreamer.

Is it possible to decode Ndi sources using hw acceleration of Intel (vaapi) or nvidia (NVDEC) video cards?

Can you help me please?

Thank you.

RobertoAlda avatar Mar 09 '21 11:03 RobertoAlda

Can you get a debug log with GST_DEBUG=3,ndi*:9 from the HX source, and attach the log here?

Also please make sure that the NDI name you configure on the source is actually correct. You can use gst-device-monitor-1.0 -f to list all the available ones.

sdroege avatar Mar 15 '21 12:03 sdroege

This is the gst-device-monitor-1.0 -f result:

`Monitoring devices, waiting for devices to be removed or new devices to be added...

Device found:

name  : PCROBERTOALDA (NVIDIA Quadro P620 1) (Audio)
class : Source/Audio/Network
caps  : audio/x-raw, format=(string){ S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string)interleaved;
properties:
	ndi-name = "PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 1\)"
	url-address = 192.168.1.114:5961
gst-launch-1.0 ndiaudiosrc ndi-name="PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 1\)" url-address=192.168.1.114:5961 ! ...

Device found:

name  : PCROBERTOALDA (NVIDIA Quadro P620 1) (Video)
class : Source/Video/Network
caps  : video/x-raw, format=(string){ UYVY, YV12, NV12, I420, BGRA, BGRx, RGBA, RGBx }, width=(int)[ 0, 2147483647 ], height=(int)[ 0, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
properties:
	ndi-name = "PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 1\)"
	url-address = 192.168.1.114:5961
gst-launch-1.0 ndivideosrc ndi-name="PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 1\)" url-address=192.168.1.114:5961 ! ...

Device found:

name  : PCROBERTOALDA (NVIDIA Quadro P620 2) (Audio)
class : Source/Audio/Network
caps  : audio/x-raw, format=(string){ S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string)interleaved;
properties:
	ndi-name = "PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 2\)"
	url-address = 192.168.1.114:5962
gst-launch-1.0 ndiaudiosrc ndi-name="PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 2\)" url-address=192.168.1.114:5962 ! ...

Device found:

name  : PCROBERTOALDA (NVIDIA Quadro P620 2) (Video)
class : Source/Video/Network
caps  : video/x-raw, format=(string){ UYVY, YV12, NV12, I420, BGRA, BGRx, RGBA, RGBx }, width=(int)[ 0, 2147483647 ], height=(int)[ 0, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
properties:
	ndi-name = "PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 2\)"
	url-address = 192.168.1.114:5962
gst-launch-1.0 ndivideosrc ndi-name="PCROBERTOALDA\ \(NVIDIA\ Quadro\ P620\ 2\)" url-address=192.168.1.114:5962 ! ...`

This is my cmd: gst-launch-1.0 ndivideosrc timeout=0 connect-timeout=0 ndi-name="PORTATILE-RA (Intel(R) UHD Graphics 620 1)" ! videoconvert ! "video/x-raw, format=YUY2, interlace-mode=progressive" ! tee ! v4l2sink device=/dev/video0

the log result is : 0:00:00.030372374 3290 0x55ee79fa0260 DEBUG ndivideosrc src/ndivideosrc.rs:303:gstndi::ndivideosrc: Changing timeout from 5000 to 0 0:00:00.030405525 3290 0x55ee79fa0260 DEBUG ndivideosrc src/ndivideosrc.rs:291:gstndi::ndivideosrc: Changing connect-timeout from 10000 to 0 0:00:00.030421628 3290 0x55ee79fa0260 DEBUG ndivideosrc src/ndivideosrc.rs:254:gstndi::ndivideosrc: Changing ndi-name from None to Some("PCROBERTOALDA (NVIDIA Quadro P620 1)") Setting pipeline to PAUSED ... 0:00:00.035050468 3290 0x55ee79fa0260 DEBUG ndivideosrc src/receiver.rs:533:gstndi::receiver: Starting NDI connection... 0:00:00.035073334 3290 0x55ee79fa0260 DEBUG ndivideosrc src/receiver.rs:583:gstndi::receiver: Connecting to NDI source with NDI name 'Some("PCROBERTOALDA (NVIDIA Quadro P620 1)")' and URL/Address None Pipeline is live and does not need PREROLL ... 0:00:00.037145444 3290 0x55ee79fda2d0 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:ndivideosrc0:src Creating random stream-id, consider implementing a deterministic way of creating a stream-id Setting pipeline to PLAYING ... New clock: GstSystemClock 0:00:00.038216374 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.088375647 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.138473691 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.188679017 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.238788369 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.289095158 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.339171483 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.389250560 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.439614614 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.489694083 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.539772722 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.589852171 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.639923588 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.690001743 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry 0:00:00.740085357 3290 0x55ee79fe6a70 DEBUG ndivideosrc src/receiver.rs:913:gstndi::receiver: No video frame received yet, retry

If i use Screen Capture (not HX) from my Windows PC the same command works and i can get the video stream into my virtual device made with v4l2loopback in my Ubuntu.

RobertoAlda avatar Mar 15 '21 18:03 RobertoAlda

That looks like a problem with the NDI SDK then, or how it's used here. Without being able to reproduce it myself there's not much I can do about that.

sdroege avatar Mar 15 '21 18:03 sdroege

I'm having the same issue.

gst-launch-1.0 videotestsrc is-live=true ! videoconvert ! ndisink ndi-name=test

and

GST_DEBUG="3,ndi*:9" gst-launch-1.0 ndivideosrc ndi-name=test url-address="127.0.0.1:5961" ! videoconvert ! autovideosink

produces:

0:00:00.018749319 937119 0x563cc0ebdd20 DEBUG            ndivideosrc src/ndivideosrc.rs:254:gstndi::ndivideosrc:<ndivideosrc0> Changing ndi-name from None to Some("test")
0:00:00.018787571 937119 0x563cc0ebdd20 DEBUG            ndivideosrc src/ndivideosrc.rs:266:gstndi::ndivideosrc:<ndivideosrc0> Changing url-address from None to Some("127.0.0.1:5961")
Setting pipeline to PAUSED ...
0:00:00.022184878 937119 0x563cc0ebdd20 DEBUG            ndivideosrc src/receiver.rs:533:gstndi::receiver:<ndivideosrc0> Starting NDI connection...
0:00:00.022253186 937119 0x563cc0ebdd20 DEBUG            ndivideosrc src/receiver.rs:583:gstndi::receiver:<ndivideosrc0> Connecting to NDI source with NDI name 'Some("test")' and URL/Address Some("127.0.0.1:5961")
0:00:01.025074640 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
Pipeline is live and does not need PREROLL ...
0:00:01.025274304 937119 0x563cc1121920 FIXME                default gstutils.c:4025:gst_pad_create_stream_id_internal:<ndivideosrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:01.075206758 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.125410529 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.175539070 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.225587471 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.275687418 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.325787555 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.375891399 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.425993100 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.476096774 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.526197542 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.576300836 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.626401915 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.676509256 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.726617860 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.776727064 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.826838613 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.876954019 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.927073863 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:01.977194519 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.027311188 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.077427636 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.127547430 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.177648740 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.227765058 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.277887427 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.328189502 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.378307633 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.428529860 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.478636229 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.528739172 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:01.524184440
Setting pipeline to NULL ...
0:00:02.549751994 937119 0x563cc0ebdd20 DEBUG            ndivideosrc src/ndivideosrc.rs:418:gstndi::ndivideosrc:<ndivideosrc0> Unlocking
0:00:02.549861068 937119 0x563cc0ebdd20 DEBUG            ndivideosrc src/ndivideosrc.rs:426:gstndi::ndivideosrc:<ndivideosrc0> Stop unlocking
Freeing pipeline ...
0:00:02.578841554 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:918:gstndi::receiver:<ndivideosrc0> No video frame received yet, retry
0:00:02.578867132 937119 0x7f2ab8002400 DEBUG            ndivideosrc src/receiver.rs:892:gstndi::receiver:<ndivideosrc0> Shutting down
0:00:02.578879915 937119 0x7f2ab8002400 ERROR            ndivideosrc src/receiver.rs:739:gstndi::receiver:<ndivideosrc0> Signalling error

Townsheriff avatar Mar 29 '21 12:03 Townsheriff

I'm having the same issue.

This is a different problem and has nothing to do with NDI HX :) If you run gst-device-monitor-1.0 -f you'll see the mistake: the NDI name (and probably URL address) are not matching.

The NDI name that you configure on the sink is always prefixed by the hostname (in uppercase letters) by the NDI SDK. So in your case it would become "YOURHOSTNAME (test)".

sdroege avatar Mar 29 '21 12:03 sdroege

Thank you so much. I was also missing sudo before gst-device-monitor-1.0.

Townsheriff avatar Mar 29 '21 13:03 Townsheriff

That shouldn't be needed unless your system setup is rather strange :)

sdroege avatar Mar 29 '21 13:03 sdroege