carlosonunez / obs-installer-for-apple-silicon

Conveniently build and install OBS from source on your ultra-fast Apple M1 MacBook or Mac
206 stars 22 forks source link

Trying to compile NDI alongside this, but missing obs-studio build files #44

Closed mikeev261 closed 2 years ago

mikeev261 commented 2 years ago

I'm trying to compile the official NDI plugin source, but it depends on a file from the obs-studio build directory:

/obs-studio/build/rundir/RelWithDebInfo/bin/libobs.0.dylib

I assumed that building this with REMOVE_INSTALLATION_DIRS=false would preserve the build output, but I can't find anything in /tmp/obs that looks like this.

Am I simply looking in the wrong place, or is there a different ./install.sh flag I need to be setting? Or better yet, any way we can extend this script to include NDI?

carlosonunez commented 2 years ago

Okay, so a LOT of people have asked for support with making NDI work with this. I normally don't support external plugins, but given the number of issues I've seen regarding it, I'm willing to support it.

I've never used it though.

Can you give me a few example use cases so I can create some crude smoke tests?

Thanks! On Jan 10, 2022, 11:18 -0600, mikeev261 @.***>, wrote:

I'm trying to compile the official NDI plugin source, but it depends on a file from the obs-studio build directory: /obs-studio/build/rundir/RelWithDebInfo/bin/libobs.0.dylib I assumed that building this with REMOVE_INSTALLATION_DIRS=false would preserve the build output, but I can't find anything in /tmp/obs that looks like this. Am I simply looking in the wrong place, or is there a different ./install.sh flag I need to be setting? Or better yet, any way we can extend this script to include NDI? — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you are subscribed to this thread.Message ID: @.***>

mikeev261 commented 2 years ago

Sure thing. NDI is a very simple concept: it's a video transfer protocol that trades a very high bandwidth cost for very low encode/decode compute, and therefore is ideal on a wired LAN and gaming applications where the CPU is already being taxed. In the context of OBS, most folks use it for a dual-PC setup without a capture card (as do I). It's almost as good as video cable (4k60), given a wired gigabit connection.

The obs-ndi plugin can act both as source and destination. https://github.com/Palakis/obs-ndi

Officially-supported setup is super easy:

  1. For most platforms it's as simple as installing OBS and then just the OBS-NDI plugin on both machines.
  2. Set up the scene at the source end, and enable NDI output under Tools -> NDI Settings. And enable Main output: image
  3. On the destination PC, you should be able to add an NDI source like any other source, and your source should immediately appear. Select it.

Assuming everything works and your network is allowing UDP and Multicast/IGMP, that's pretty much it.

Alternatively, for the source end you can use NDI's official software, but I've always found this to be more clunky as you don't have any source scene control.

One last thing I should note is that some other folks have M1 compiled versions floating around, but the latest version has a documented audio bug (right channel static audio), and I was going to try to compile an older one.

carlosonunez commented 2 years ago

I only have one computer at home, so I don’t think I’ll be able to reliably test this plugin. Sorry :( On Jan 10, 2022, 17:37 -0600, mikeev261 @.***>, wrote:

Sure thing. NDI is a very simple concept: it's a video transfer protocol that trades a very high bandwidth cost for very low encode/decode compute, and therefore is ideal on a wired LAN. In the context of OBS, most folks use it for a dual-PC setup without a capture card (as do I). It's almost as good as video cable (4k60), given a wired gigabit connection. The obs-ndi plugin can act both as source and destination. https://github.com/Palakis/obs-ndi Officially-supported setup is super easy:

  1. For most platforms it's as simple as installing OBS and then just the OBS-NDI plugin on both machines.
  2. Set up the scene at the source end, and enable NDI output under Tools -> NDI Settings. And enable Main output:
  3. On the destination PC, you should be able to add an NDI source like any other source, and your source should immediately appear. Select it.

Assuming everything works and your network is allowing UDP and Multicast/IGMP, that's pretty much it. Alternatively, for the source end you can use NDI's official software, but I've always found this to be more clunky as you don't have any source scene control. One last thing I should note is that some other folks have M1 compiled versions floating around, but the latest version has a documented audio bug (right channel static audio), and I was going to try to compile an older one. — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you commented.Message ID: @.***>

mikeev261 commented 2 years ago

No worries! If I find the time to figure this out I'll try to issue a PR.

carlosonunez commented 2 years ago

MUCH appreciated. I could use all the help I can get until this is sorted upstream! On Jan 12, 2022, 07:33 -0600, mikeev261 @.***>, wrote:

No worries! If I find the time to figure this out I'll try to issue a PR. — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you commented.Message ID: @.***>