OBS NDI™ Plugin on openSUSE

The NDI plugin offers a fairly easy way to send OBS video signal (presumably other applications can take advantage of this too) to another OBS instance on another machine. This can come in handy for numerous reasons such as splitting up workloads between machines by capturing output from one machine, such as gaming computer, to stream with a dedicated unit that interfaces with YouTube. This has advantages in that you can move the machine doing the heavy lifting into another room or across the room as to not hear the fans and so forth. In my case, my primary machine is getting long in the tooth. I prefer the setup I have as far as the screen layout and height of the computer as well as the location. I use my AMD Desktop / server / workstation machine to talk to YouTube or Twitch directly with that OBS instance and record locally in effect freeing up my laptop from quite a bit of the workload.

The Challenge

At the time of writing, there isn’t an RPM available and the instructions out there along with what to expect seems lacking at best, so, I thought I would take what I know and compile it into one easy, step-by-step guide here for openSUSE. Your mileage may vary depending on your distribution.

Installation

For starters, you need to get the software packages from GitHub.

https://github.com/Palakis/obs-ndi/releases

Download the following:

The version numbers may have changed but you should get the “libndi*” and “obs-ndi*” packages

This is a Debian package meant for Debian/Ubuntu so you may be thinking, “how am I supposed to use this?” …and that is a reasonable question. The solution is a tool that is not often talked about. It is also likely not recommended by most people but I am not most people. That tool is called “Alien“.

To install Alien, navigate here and just click on the appropriate experimental package for your version of openSUSE:

https://software.opensuse.org/package/alien

Alternatively, you can use the terminal method, which will very a bit between distributions

Tumbleweed

sudo zypper ar https://download.opensuse.org/repositories/utilities/openSUSE_Factory/ utilties
sudo zypper ref
sudo zypper install alien

Leap 15.2

sudo zypper ar https://download.opensuse.org/repositories/utilities/openSUSE_Leap_15.2/ utilties
sudo zypper ref
sudo zypper install alien

To explain each of the lines that I am expecting you to put in the terminal because you should NEVER just trust some random commands on the internet. First of all, I stand behind this as CubicleNate, and I do my best to not be wrong and I’d like to keep doing these things. You can also reacho ut to me directly using any of these methods.

Once the installation of Alien is complete. You will have to take the two deb packages previously downloaded and convert them.

Using a terminal, navigate to the location of the downloaded packages and run the following

sudo alien -r libndi*.deb  
sudo alien -r obs-ndi*.deb  
sudo zypper in ./libndi*.rpm obs-ndi*.rpm

Now your are ready to set up OBS!

OBS Setup

Using this reference, I made the adjustments to my firewall but it didn’t work. Perhaps I am missing something and I would love to edit this article accordingly but opening up both tcp and udp ports 5960 through 5968 as well as having the mDNS port active did not allow me to utilize the NDI plugin with firewalld active. Either the documentation is out of date, in correct or there is a user error on my part and I couldn’t find the appropriate logs to tell me otherwise. Therefore, I just deactivated the firewall on both the source and destination machines.

sudo systemctl stop firewall

This is the point where you should be sorely disappointed with these instructions but again, I would like to improve this and will gladly listen to any input.

The next step is to open up OBS-Studio (v25 and latter is required) on both machines. On the source machine, go to Tools > NDI™ Output settings

Then set the output preferences. In my case, I had not interest in sending the “Preview Output” only the “Main Output” and label it with the hostname; just in case I might do this with another machine.

On the Destination OBS machine, you have to add the NDI Source. This is just one of the many options you have available as a source.

For the source name, select the drop-down and the appropriate available source. I didn’t mess with any of the other settings so your mileage may vary on this portion of the instructions as well.

And that is it. Your NDI Source is just another input like a webcam or video signal and you are off to the streaming or production races.

Final Thoughts

The whole firewall thing has me a bummed out a bit. I have wrestled around with it far too long but at least I know that lowering my “shields” will allow for transporters to work. Not ideal but I am within my firewalled off house, I just happen to like security in layers.

I want to note that the latency on this is VERY low. I mean incredibly low. I have tested this by playing a game on one machine and using the output on another machine with almost no latency perceived. It is quite the incredible technical miracle and I am quite grateful.

I also want to make the vintage computer tie-in. The NDI plugin is developed by Newtek, the makers of the Video Toaster that was very popular on the “big box” line of Amiga computers from the 1990s. So, in a way, I feel like I have a little bit of that incredible Video Toaster tech on my openSUSE machine.

References

OBS-NDI on GitHub
https://obsproject.com/forum/resources/obs-ndi-newtek-ndi™-integration-into-obs-studio.528/updates
NDI Problem Solving PDF

One thought on “OBS NDI™ Plugin on openSUSE

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.