Noob question: What good is RPi support in the NDI SDK for Linux if it cannot play NDI streams?

swooby

New member
I am tinkering with trying to get an RPi4B to play NDI stream on its screen.
It seems like such a simple task should be...well...simple.
Basically: A basic NDI Monitor (Player) for RPi in the SDK like there is in the NDK Tools for Windows and Mac.
Shouldn't the basic ability to play a stream be include in at least the "NDK SDK for Linux"?

Yes, I know about dicaffine and ORFAST.
The former is a bit too slow for my needs which may be due to its web-based feel, and the latter costs $99.

I am hoping that it is at least possible to code my own if I don't want to use those (afterall; they wrote theirs somehow).
I was hoping the NDI SDK would at least provide me a sample of how to do that.

I am also briefly aware of the ffmpeg's past ability to play NDI streams and the removal of that ability.
Is there really no free **and** native binary efficient way to play NDI streams on the RPi?
It wouldn't just be awesome if VLC or ffmeg could do this...I dare say a noob might think it reasonable to expect that ability.

Swooby
 
Last edited:

MDARltd

New member
I am tinkering with trying to get an RPi4B to play NDI stream on its screen.
It seems like such a simple task should be...well...simple.
Basically: A basic NDI Monitor (Player) for RPi in the SDK like there is in the NDK Tools for Windows and Mac.
Shouldn't the basic ability to play a stream be include in at least the "NDK SDK for Linux"?

Yes, I know about dicaffine and ORFAST.
The former is a bit too slow for my needs which may be due to its web-based feel, and the latter costs $99.

I am hoping that it is at least possible to code my own if I don't want to use those (afterall; they wrote theirs somehow).
I was hoping the NDI SDK would at least provide me a sample of how to do that.

I am also briefly aware of the ffmpeg's past ability to play NDI streams and the removal of that ability.
Is there really no free **and** native binary efficient way to play NDI streams on the RPi?
It wouldn't just be awesome if VLC or ffmeg could do this...I dare say a noob might think it reasonable to expect that ability.

Swooby
I agree.

The Windows NDI viewer is great, but what a waste of an (comparably) expensive computer and OS, just to view a single stream.

Sure there are ARM32 viewers, but who sells or uses ARM32 machines these days?


All I'm looking for is a tiny Linux ARM64 app that can be started from a command line, including the URL of the source.
(Ideally without a desktop manager too, even if that means using Xinit with an app, just like I do with Chromium)

Something like
Code:
xinit ndihxviewer -source 192.168.100.100


I'm not a programmer, but I'm happy to pay someone that is.
However, it's just not possible until the NewTek SDK supports ARM64

(Sept 2021, I've ordered a BirdDog Play (~$150) as a way to address this but would prefer to use a mini computer that is already in the rack)
 
Last edited:

swooby

New member
I'm not a programmer, but I'm happy to pay someone that is.

I hear ya, but I have a slightly different opinion.

I guess I am spoiled with the expectations set with the free Windows NDI Monitor, but I would expect NewTek to release a similar viewer for platform that the NDI SDK supports, including for Linux and Raspberry Pi (at least the latest 4B).

The MacOS NDI Tools has a "NDI Video Monitor".
MacOS is Unix based...so why isn't there a similar official viewer for Linux...and then why isn't there one for RPi [that is Debian Linux]?

I understand and appreciate that NewTek distributes these tools for free and does not directly make money from them.
But it seems a dubiously arbitrary marketing choice to release a supported NDI viewer for Windows and Mac and not for other platforms that the NDI SDK is supported on.

I furthermore expected any of the SDKs, including Windows, to have at least a bare bones hello world NDI **Viewer** app.
Even the `NDI 5 Advanced SDK\Examples\C++\NDIlib_Recv_GPUDecode`, that goes through the effort of showing how to offload decoding to the GPU, does not show the last mile of just displaying the video on the screen.
Even weirder that this example does not decode on my Windows 10 w/ 3080 GPU that I have no problem using NDI Monitor to view.
Even weirder still, this example is hard-coded for Windows, but has an identical copy in the "Linux/ARM Advanced NDI SDK"...what use is that?
 

swooby

New member
DiCaffeine is free and works on the Pi 4B. But, that device kind of sucks.
Yes, I know about DiCaffeine. It is pretty slow.

ORFAST is much faster, proof of concept that the RPi4B may suffice for my requirements, but it isn't free.

I am interested in learning how to do what ORFAST is doing.

I am also evaluating doing the identical thing on the Nvidia Jetson Nano 2GB, which might actually be easier if I ever have the time to sit down and learn a few things.
 
Yes, I know about DiCaffeine. It is pretty slow.

ORFAST is much faster, proof of concept that the RPi4B may suffice for my requirements, but it isn't free.

I am interested in learning how to do what ORFAST is doing.

I am also evaluating doing the identical thing on the Nvidia Jetson Nano 2GB, which might actually be easier if I ever have the time to sit down and learn a few things.
Orfast is not using the NDI SDK on the Raspberry Pi. He has his own version of a decoder to unpack the frames.
 

swooby

New member
Orfast is not using the NDI SDK on the Raspberry Pi. He has his own version of a decoder to unpack the frames.
Running binwalker and gdb, it definitely looks like orfast is using the NDI SDK:

Code:
[email protected]:~/orfast/_orfastndi-4.6.1.extracted/squashfs-root $ gdb --batch -ex "info functions" ndiviewer | grep "  NDIlib_"
0x00016f18  [email protected]
0x00017074  [email protected]
0x000170bc  [email protected]
0x0001717c  [email protected]
0x00017194  [email protected]
0x00017428  [email protected]
0x000174e8  [email protected]
0x00017560  [email protected]
0x00017764  [email protected]
0x000178e4  [email protected]
0x000179c8  [email protected]
0x00017b24  [email protected]
0x00017b48  [email protected]
0x00017cf8  [email protected]
0x00017f38  [email protected]

I can believe that they wrote their own decoder.
 
Last edited:
You know more about it than I do. But, perhaps the reason the performance of Orfast is better than Decaffeine is because he wrote his own decoder?
 
Top Bottom