NDI

dodgepong

Administrator
Community Helper
Network Device Interface: http://newtek.com/ndi

Think of it like SDI, but over ethernet/IP, thus not requiring expensive capture cards and simplifying cabling/routing. It actually works surprisingly well, with indiscernable latency. NDI support would involve being able to add input from NDI video "devices", and possibly output over NDI as well, though a lower priority than supporting NDI inputs.

All I can really say about it is that it will probably be thrown onto the pile of feature requests with everything else, but don't hold your breath for a release with NDI support soon unless someone takes the time to implement it of their own volition and submit a PR.

It's possible there are licensing issues with Newtek that would prevent it from being compatible with the GPL2, in which case it's an impossibility. I haven't looked into it enough to know for sure.
 
Last edited:

Lain

Forum Admin
Lain
Forum Moderator
Developer
I contacted them and I have access to the NDI, I haven't spent time on it yet.
 

dandruff

New Member
I just found out about NDI today and ran over here to see if anyone was talking about it. Was not disappointed.

I think it would definitely be useful to have OBS act as the transmitter, allow you to locally play streams across the network!
 

R5Dad

New Member
Following this topic.

Right now I'm streaming 5 systems to an nginx relay then to a combining system. The latency is killing us!

NDI would eliminate two computers from the mix.

The issue I see, fysa, is the system requirements to run the scan converter app. Only two systems in my house are strong enough to run it. If the plugin can have a small enough footprint to run on slightly older systems, that would be most helpful.

Thanks Jim, and good luck! Beta tester right here!
R5Dad
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
Got it. Will take a look when I get a chance. Just haven't had enough time lately and have been working on higher priority things.
 

Kane Peterson

New Member
I look forward to it. If I can help in any way, let me know (I work for NewTek). I'm not a dev, there, but I can probably get you in contact with the correct people.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
Oh thank you! I did get in contact with an engineer over there. They were able to get me set up with access. I just haven't had a chance yet, but it's looking a bit higher priority because of how many people have been asking for it.
 

vedranius

New Member
Oh thank you! I did get in contact with an engineer over there. They were able to get me set up with access. I just haven't had a chance yet, but it's looking a bit higher priority because of how many people have been asking for it.
Are there any updates about adding NDI support to OBS studio? Thanks! :)
 

e7d

New Member
This feature would be just delightful! I have been testing it with Xsplit, and this is so convenient not to need a capture card. I would be looking forward to it, but I can't see any hint of any development regarding it in the links shared above. Also, as I'm myself a developer, would there be any way to contribute, if it would be within my skillset?
 

dodgepong

Administrator
Community Helper
So I spent some time this weekend looking at the NDI SDK, and it appears that the license distributed with the SDK is not GPL-friendly, given that we cannot distribute the header files. One contributor has created a plugin that requires users to download the SDK themselves and compile OBS themselves, but that is obviously not ideal. Another solution is to implement a bypass using inter-process communication, but while that is technically legal, it's pretty frowned-upon as far as the GPL goes. Ideally it would be better for Newtek to license the SDK in a manner that is already known to be GPL-friendly. Looks like NDI support is going to be more complicated than we hoped.
 

dalegaard

New Member
I spent the weekend implementing an IPC based solution to this problem, and have a prototype NDI source working over shared memory under Linux now. I'm not a strong Windows coder, so it will take some time for me to get it ported, but I expect to be done with most of the work by the end of the week. I'll be publishing my code, both for the OBS plugin side of things, as well as the other side of the IPC link(the "ndibridge" as I call it). Between them there's a shared memory link I designed for moving A/V data between processes, not restricted to this particular case.

I'll let the decision on inclusion of the OBS side of the plugin into NDI be up to the OBS project, since at the end of the day you guys decide how to interpret the GPL in this case. The ndibridge program contains no OBS code, and thus doesn't have to be under the GPL. Likewise the OBS plugin contains no NDI SDK source, and thus is not covered by the NDI license. I will be publishing binaries(so users don't have to request access to the OBS SDK first) along with the source for this. As dodgepong says the IPC route can be considered a loop hole and is probably frowned upon.

I've also built an NDI output, that uses the same IPC link code, but since OBS Studio doesn't currently appear to support custom outputs I haven't had a chance to test it out yet. I might just have to create some functionality for custom outputs :-)

So NDI support will be there(and in fact is already here if you can compile an OBS module yourself), but it may require a separate download :-)
 
Last edited:

dodgepong

Administrator
Community Helper
Outputs are indeed possible -- Another contributor has made a plugin that does both NDI input and output, but it requires the SDK be downloaded (basically the basic version of the plugin that would not be distributable via binaries) which can be found here: https://github.com/stephanel/obs-ndi

I believe that Newtek has stated that they could potentially make NDI redistributables available for download off their site, so I believe a wrapper should be possible that just requires the redists be installed on the user's system, and is otherwise inactive if they are not present. If this were integrated into core OBS code, one could argue pretty effectively that OBS is perfectly usable without loading NDI DLLs (much like Audacity is usable without loading LAME DLLs), so they would be considered separate programs and the GPL wouldn't transfer to the DLLs. But as you said, it's up to interpretation of the GPL, since this is a very gray area.

Apologies if it sounds like I'm talking out of my ass -- I think I might be to at least some degree.
 
Top