DistroAV - Network Audio/Video in OBS-Studio using NDI® technology

DistroAV - Network Audio/Video in OBS-Studio using NDI® technology 6.1.1

Curious, how recent are you on your Windows updates, and which release of Windows are you running? There's a chance you may be looking at entirely the wrong problem. There have been serious problems with NDI thanks to some bum updates last month's Patch Tuesday (August 2025). One workaround is to use the NDI bundle's Access Manager and setting inputs to "single TCP". I did, arguably, the right thing by keeping those bum updates off my computers entirely because it has even more serious problems, like either seeing SSDs fall offline which a reboot can bring back, SSDs fall offline which a reboot can bring back but with corrupted data, and worse, it outright turns SSDs into very expensive and very useless bricks. This affects primarily drives with PHISION controller chips.

I am going to run the Windows Update rigamarole to see if it hoses my NDI setup.

More soon on both the NDI-vs-Microsoft and NVidia (which I have not gone past 575.whatever yet) fronts, separately and together.

--Katt. =^.^=
Okay, on my gaming pc I am running windows 11 (I had deleted KB5063709, KB5063878, and KB5063875), within OBS in the advance settings there is a single TCP toggle and it is active. Also, the studdering only started happening after I update to Nvidia 581.29 (also when into Cmd to check if windows did a drivers reinstall with the ones I deleted).

On my streaming pc, nothing is going to change with that, because that is on windows 10. also, with testing with my phone with NDI app no studdering (to my knowledge).
 
Okay, on my gaming pc I am running windows 11 (I had deleted KB5063709, KB5063878, and KB5063875), within OBS in the advance settings there is a single TCP toggle and it is active. Also, the studdering only started happening after I update to Nvidia 581.29 (also when into Cmd to check if windows did a drivers reinstall with the ones I deleted).

On my streaming pc, nothing is going to change with that, because that is on windows 10. also, with testing with my phone with NDI app no studdering (to my knowledge).

Curious, how much is it "studdering"[sic] (stuttering)? As in is it REALLY choppy as all (naughty word of choice here)? Or what's happening? Which driver were you using prior to that, like an earlier 581.x or something in the 57x series? It might be something visible in my install of 581.x series, but I'm not 100% sure. I haven't tried on my super-high-speed Beam setup which requires 10GbE ethernet (I use uncompressed video there) to see if it affects things there.

--Katt. =^.^=
 
Apologies, If I use the word incorrect I did not mean any rude.
Curious, how much is it "studdering"[sic] (stuttering)? As in is it REALLY choppy as all (naughty word of choice here)? Or what's happening? Which driver were you using prior to that, like an earlier 581.x or something in the 57x series? It might be something visible in my install of 581.x series, but I'm not 100% sure. I haven't tried on my super-high-speed Beam setup which requires 10GbE ethernet (I use uncompressed video there) to see if it affects things there.

--Katt. =^.^=

What is happening, is that before update the graphics drivers from 581.15 to 581.29 OBS and distro AV were have the same problem similar to the pervious problem with the windows update. To clarify, the frame drop from one pc to the other would only happen when the pc that is sending video encounters high GPU demand, like in-game camera shake, fast mouse movement, or loading in maps. And, had fix the problem with windows updates and when rolling back to 581.15 the problem went away.
 
Hello DistroAV/NDI Experts: Can anyone see the cause of this error, or any version incompatibility in the NDI components?

Thanks. . .

 
I've answered within the other thread but I'll paste it here too.

Hello DistroAV/NDI Experts: Can anyone see the cause of this error, or any version incompatibility in the NDI components?

Thanks. . .


There has been some users with 13th and 14th gen Intel cpus having crashes with NDI, nothing has been found as the case and the most likely cause is the silicon degradation that intel has had this far.
 
Pardon my possibly sounding clueless, but for some context, what is Moonlight? I might give it a check to help with any troubleshooting here.

--Katt. =^.^=
Moonlight is a self hosted remote streaming used primarely for gaming.

I'm reporting back with 581.29 and Windows 11 with no issues so far, I'd suggest doing a clear driver install in between drivers to make sure it's a bug and not just windows messing with the priorities and all of that
 
Moonlight is a self hosted remote streaming used primarely for gaming.

I'm reporting back with 581.29 and Windows 11 with no issues so far, I'd suggest doing a clear driver install in between drivers to make sure it's a bug and not just windows messing with the priorities and all of that

Thanks for the rap against my head to shake those memories loose. I remember installing it but I could never figure out how to make it work. Will have to give it another go to see if I can actually figure it out, then help with any troubleshooting.

--Katt. =^.^=
 
First, thank you for providing such a useful OBS plugin. I am a newbie using this with an AVKANS PTZ camera in OBS for a church livestream application. I see the NDI Source properties has a section to specify PanTiltZoom. I thought these settings might be relative to the camera's Home position but so far Zoom is the only setting that actually moves the lens. Pan and Tilt settings have no effect.

I want to define Scenes that include the PTZ source with a unique PTZ setting so the operator simply selects a scene and the camera framing along with other sources in the scene appear correct.

Would appreciate further understanding how this works along with other methods to accomplish the stated objective.
 
I see the NDI Source properties has a section to specify PanTiltZoom. I thought these settings might be relative to the camera's Home position but so far Zoom is the only setting that actually moves the lens. Pan and Tilt settings have no effect.

I want to define Scenes that include the PTZ source with a unique PTZ setting so the operator simply selects a scene and the camera framing along with other sources in the scene appear correct.

Would appreciate further understanding how this works along with other methods to accomplish the stated objective.
I'm not familiar with that part of NDI. My understanding until now was that it's only a picture and sound, nothing more. Pan/Tilt/Zoom then, is a digital crop after OBS receives the picture. I could be wrong though.

My PTZ's are controlled from a custom app that I wrote because I didn't see anything that did what I wanted. More preset buttons than anyone else has, and a few other controls. Sends VISCA commands over a TCP network connection, and gets feedback from that same connection to show on the control screen. My cameras also take VISCA over UDP, which is easier, but I didn't see that until after TCP worked. Oh well. My later utilities do UDP, and that works too.

Anyway, it's really not very hard to do all of that, with today's programming tools. The hard part is figuring out how to connect it to OBS. I don't. At least not directly. That's what my small utility programs are for. The Advanced Scene Switcher plugin handles a LOT of automation, and part of that is to call those utility programs, which then do their own thing outside of OBS.

If you really don't want to build a set of custom tools like I did, you might try the PTZOptics plugin, and then use the Advanced Scene Switcher to send hotkeys to it. You don't have to register those hotkeys to anything physical - they can be blank in OBS's assignment - Adv. SS can just send the hotkey straight over without that.
I don't use the PTZOptics plugin - my custom tools do far more - so I can't comment on it beyond its existence.
 
First, thank you for providing such a useful OBS plugin. I am a newbie using this with an AVKANS PTZ camera in OBS for a church livestream application. I see the NDI Source properties has a section to specify PanTiltZoom. I thought these settings might be relative to the camera's Home position but so far Zoom is the only setting that actually moves the lens. Pan and Tilt settings have no effect.

I want to define Scenes that include the PTZ source with a unique PTZ setting so the operator simply selects a scene and the camera framing along with other sources in the scene appear correct.

Would appreciate further understanding how this works along with other methods to accomplish the stated objective.
What @AaronD said and

My PTZ vendor (not AVKANS) provides its own VirtualUSB driver that takes NDI feed and makes it appear like locally attached USB camera. NDI Tools may do similar? or plugins like this one. First I'd check your PTZ vendor offerings.

My understanding is the same as Arron's - NDI is a protocol for transmitting video (including audio)... it is NOT a control protocol. (Sony's) VISCA over Ethernet being the most common, but not only method. And some vendors have their own 'dialect', so what works for one PTZ vendor cameras may or may not work for others.

There are numerous options for controlling a PTZ camera. But... you have to deal with compatibility as not all control systems compatible with all NDI PTZ cameras (see dialect comment above). That's on you to check/confirm. PTZ Optics seems to have both a software (base capability is free) and physical PTZ controller (the SuperJoy) that has fairly broad compatibility, at a price.
The more sophisticated tend to be those NOT integrated with OBS Studio. However, there are multiple options for having an interface (often OBS Studio plugin) that enables a single 'click'/command to handle both scene selection and camera position commands. OBS Studio has websockets, so if PTZ controller software is outside OBS Studio, but allows command arguments to be associated with PTZ Preset, that command line could be configured to send commands to OBS Studio (including Scene selection). Or you could possibly do it the other way around, with a Scene having a Source that is a command line argument that gets sent to other software (like advancing a PowerPoint slide show, or to PTZ control s/w, etc.

OBS Studio, is powerful/complex, and being typical Open-Source, is flexible, but with that comes flexibility and no single way to accomplish things, especially of the type you are asking about. Numerous different approaches, each with their own Pro's & Con's.
For our House of Worship, I set up the Scenes such that we have 3 we basically use, as we broadcast the printed Service Bulletin along with the video (vs sticking to typical full width video, and just using lower thirds or similar for printed content). ymmv. Personally, due to different scenarios, we have NOT linked PTZ presents with Scenes (Full PPT slide, partial, and no slide (ie full screen width video)] . We select OBS Studio Scene based on Service Bulletin content and situation, and then use PTZ Presets (PTZ controller s/w running on 2nd monitor) and manual PTZ controls as appropriate.
 
Last edited:
Couple of extra thoughts
1. When it comes to PTZ controls, a common premium capability to a multi-step (Trace) Preset... ie, instead of the simple go to position X, it is instead a more sophisticated sequence (Trace) of Pan, Tilt and Zoom changes. [The name Trace comes from the old process of recording a sequence of camera movement steps, and Recording (Tracing) that movement ]. Some software control systems have made Trace available at MUCH lower prices than was the case a few years ago (if not free in some cases)

2. There is work on an NDI video transport protocol alternative called Open Media Transport (somewhat akin to AV1 is to H.265 for video encoding)... something to keep an eye on
 
First, thank you for providing such a useful OBS plugin. I am a newbie using this with an AVKANS PTZ camera in OBS for a church livestream application. I see the NDI Source properties has a section to specify PanTiltZoom. I thought these settings might be relative to the camera's Home position but so far Zoom is the only setting that actually moves the lens. Pan and Tilt settings have no effect.

I want to define Scenes that include the PTZ source with a unique PTZ setting so the operator simply selects a scene and the camera framing along with other sources in the scene appear correct.

Would appreciate further understanding how this works along with other methods to accomplish the stated objective.
I use two AKVANS PTZ cameras, they are basically clones of PTZ Optics products, so PTZ Optics' utilities work. I previously had URLs called by A-S-S that trigger the cameras' HTTP-based remote control for PTZ presets, but those stopped working when I moved to a new computer, and I haven't sorted out why.
 
NDI uses A LOT of GPU. Like each source you send take about 10-15% of GTX 1080. When rendering 3 simultanious streams uses it about 30-40%.

Is there a way to decrese the load NDI uses? Maybe lower bitrate? Cant see any settings of NDI
 
Is there a way to decrese the load NDI uses? Maybe lower bitrate? Cant see any settings of NDI
I believe that NDI is completely uncompressed. Not even lossless. (*) So it takes a TON of bandwidth on the network, but the dedicated professional installations that it was designed for are assumed to have that in mind and so it's okay. Thus, no settings. That comes from the standard itself, not a particular implementation of it.

That then brings the question of why it uses so much GPU, if it's not actually compressing? Well, there's still some translation to do, between the frame buffer and a series of network packets and then back again, which lends itself much better to a parallel process than a serial one. So that might be what the GPU is doing. It's not h.264, so as to use the dedicated chunk of silicon that's made specifically for that and is invisible to the usage meter, but it's not a 1:1 correlation either. So the general-purpose parallel processor gets to do it, and that does appear on the meter.

(*) Even if the *visible* data is uncompressed, I've noticed that a mostly transparent picture does use less bandwidth than a fully-opaque one, according to the network traffic meter that I have on my taskbar. So it appears that fully-transparent pixels are not transmitted, or maybe there *is* some lossless compression going on in general, which the GPU would also be responsible for.

But the end result still remains: no loss of quality *at all*, and the protocol "just works" so that those who use it can think about other things. Fewer settings makes it more likely to "just work", all the way to no settings at all, which makes only one configuration to verify before release.

---

Professional tools, like NDI, are different from consumer. In the pro world, you don't care about the amount of data you're throwing around locally, or how much processing power it takes to handle that. You use what is guaranteed to work, and you buy what is needed to support it.

(You're also not concerned with constant high loads. If the usage meter is 95% +/-3%, it's good! You can run a critical show on that. You only care that it's *always* less than 100%, which that is: max 98% < 100%. It's the *spikes* in load that make people nervous and want a lower average. If you don't have those, you can run a higher average and be perfectly okay.)

Unlike consumer tools, that are designed to be nice to the cheap hardware that someone already has.
 
@AaronD - just an FYI - there are various iterations of NDI, that use differing compression and bandwidth.
Check out https://videoguys.com/blogs/news-and-sales/understanding-ndi-versions-full-ndi-vs-ndi-hx-hx2-and-hx3 and https://birddog.tv/fullndi-vs-ndihx3/ for more details on MPEG-2 H.264 and move to H.265 in HX2 and HX3 which supports both H.264 and H.265

Now, what a given NDI camera supports can vary... And with Panasonic, the NDI output is controlled strictly by the camera settings

As to GPU usage and bitrate... beware your assumptions. You can lower network data bandwidth (bitrate) through higher compression, but that then takes computation to decompress (isn't necessarily lower video bitrate) ... For adequately speced hardware and network, why bother with compression... just causes extra work on either end. A WAN link being a good reason to use network bandwidth compression. WiFi is rarely, to never, appropriate for real-time video

One thing to check is your camera output... my older Panasonic NDI PTZ cameras default to 1080p60... and for my use case 60fps is a complete waste, dropping to 30fps means less processing. I had left 1080p60 just 'cuz' when we only had 1 camera, as soon as I added extra cameras, it seemed prudent to not overload system and not wastefully process extra frames for no purpose
 
I have been using the plugin with the NDIHX app on my iPhone. I am getting garbled audio when I bring it straight into OBS with the plugin, but the audio is fine when I use the NDI tools studio monitor, then bring into OBS via application capture with audio capture. I have the latest version of the plugin and fully updated Win 11. I also updated the NDI drivers. Is this a known issue with a fix?

I have successfully used this setup before with an older pc that I don't have access to anymore.

My workaround works, but is most likely a heavier solution.
 
Back
Top