CLI tool
Off-World-Live/obs-spout2-plugin avatar
Off-World-Live/obs-spout2-plugin

obs-spout2-plugin: shared textures in and out of OBS Studio

A Plugin for OBS Studio to enable Spout2 (https://github.com/leadedge/Spout2) input / output

1,092 stars71 forksC++GPL-2.0

At a glance

What is it?
The Spout2 plugin for OBS Studio gives a broadcast application two things it did not have: a source that reads a shared texture from any Spout2 sender at full resolution, and a Spout output that publishes the content of the OBS canvas to other applications. It is a 64-bit Windows plugin, built with CMake, and it is GPL licensed.
Who is it for?
Adopt obs-spout2-plugin if your production pipeline already uses Spout2 and you need zero-copy shared textures between OBS and another application, in either direction, at resolutions the old SpoutCam path could not reach.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 12 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Two directions of shared texture

The plugin enables the import and export of shared textures at high resolution to and from Spout2 compatible programs. The README describes exactly what that means in the implementation: it implements the Spout2 SDK, creates an OBS source from the Spout shared texture, and provides a Spout output which sends the content of the OBS canvas to Spout.

So there are two independent directions. The source side is a Spout sender, running in another application, appearing inside OBS as a source you can add to a scene like any other. The output side is the OBS canvas, published as a Spout texture that another application can read.

That second half matters more than it first appears. The README notes that previously there was no way of outputting Spout video textures from OBS, which meant an installation where Spout was the input could not also be the output. A workflow that generates visuals in one tool, processes them in OBS and sends the result onward had to break the chain somewhere, usually by rendering to a window and capturing that window.

The plugin is 64-bit only, and the README is straightforward about the reason, stating that there are no current plans for 32-bit builds, although theoretically it should be possible. That is an honest constraint for a plugin that links against a native SDK, and it is the kind of thing to check before you plan a mixed 32-bit and 64-bit studio.

Why the previous workarounds fell short

The Why section explains the problem the plugin was written to solve, and it is a good illustration of how a small technical constraint propagates.

Before the plugin, the only way to import shared textures from Spout was through the DirectShow SpoutCam interface, or by screen-capturing the full-screen output of the SpoutReceiver program. Two problems follow from that.

The SpoutCam is limited to standard webcam resolutions and capped at 1920x1080. So the path into OBS could never carry more than 1080p, whatever the sender was producing. If your Spout application was rendering at 4K, the pixels were there and the transport threw them away.

Screen-capturing SpoutReceiver is worse in a different way. It is inefficient, because you are re-encoding a screen region, and it is limited by your current screen resolution, so the captured size depends on the display rather than on the content.

Both of those are the kind of limitation that shapes a whole workflow. A resolution cap of 1080p on the input side means an operator has to design the graphics pipeline around the cap instead of the design intent, and a capture-based route adds latency and a resample step to every frame. The plugin removes the bottleneck by sharing the texture itself, which is what Spout was built to do.

Installing it, and the untrusted source prompt

Installation is a download and a run. Go to the releases page, download the Windows installer named OBS_Spout2_Plugin_Installer.exe, run it and accept the installation from an untrusted source, and then select the OBS directory if it is not in the default install location.

The instruction to accept an untrusted source is the one to notice. That is Windows SmartScreen or a similar check reacting to an unsigned installer, and a user who is not expecting it will see a warning that looks alarming. It is normal for this plugin and for most OBS community plugins, but it is worth knowing what you are clicking through before you click through it.

The other practical detail is the OBS directory. The plugin has to be installed into the plugins folder of the OBS installation you actually use, and a machine with several OBS installs, or one that keeps its configuration and portable install in separate places, can end up with the plugin in a folder OBS never reads. The README's instruction to select the directory explicitly exists because of exactly that.

The project also publishes an installation and usage guide of its own, hosted on the knowledge base of the company behind it, and the README points to it for the details rather than trying to fit a full manual into a README.

Building it, with CMake 3.28 and a recursive clone

The contributing section is short, which is what you want from a native plugin whose build is mostly the OBS SDK and the Spout SDK.

Clone the repository recursively, because the OBS and Spout dependencies come in as submodules:

bash
git clone --recursive [email protected]:off-world-live/obs-spout2-plugin

Then install CMake, minimum version 3.28, and either configure and generate through the CMake GUI or through the command line for the windows-x64 architecture. In the GUI the sequence is Configure, then Generate, then Open Project.

The recursive clone is the step that catches people out, and the minimum CMake version is high enough to be worth checking before you start, since an older system CMake produces an error that says nothing about the version. The windows-x64 architecture naming is the CMake preset naming, and the repository ships a CMakePresets.json along with a buildspec.json, so the supported configuration is described in the tree rather than only in the README.

The source layout follows the usual pattern for an OBS plugin, with source/ holding the plugin code, cmake/ the build logic, deps/ the dependencies, build-aux/ the auxiliary build files, and data/ the resources that get installed. There is a .clang-format at the root, so the project has a defined C++ style, and a .gitmodules file for the recursive submodules.

The release script and the NSIS installer

Two paths to a distributable are documented, and they are worth separating because one is for you and one is for the maintainer.

For a local release build, open git bash or a similar bash terminal interpreter and run the release script with a version number:

bash
./scripts/Release.sh <version number>

The executable, which is the installer, and a zip file then appear in the main win-spout directory. The script takes the version as an argument, which is the convention that lets the same script produce a build whose version matches its tag.

For the Windows installer itself, the README describes a separate, more manual path. You download the latest version of NSIS, set the APPVERSION variable in the win-spout-installer.nsi script, and compile that script. NSIS is the installer tool, and the version variable in the script is what ends up in the installer's metadata, which is why it has to be set by hand rather than derived.

The roadmap section shows the recent work. Improving CMakeLists.txt to copy Spout.dll automatically is marked done, with credit to a contributor, alongside the Spout output and the Spout filter output. The DLL copy is the kind of small automation that matters more than it looks, because a plugin that fails to find Spout.dll at run time produces a silent black source rather than an error.

Where the Spout2 plugin is the wrong choice

The first wrong-tool case is a studio that does not use Spout2. If your capture and routing already work through NDI, OBS's own capture sources or a hardware loopback, this plugin adds a plugin, a DLL, a shared memory path and an installer prompt, and buys nothing. Spout2 is a specific ecosystem of applications that publish GPU textures, and outside that ecosystem there is no shared texture to import.

The second is a 32-bit or non-Windows environment. The plugin is 64-bit, and the README is explicit that 32-bit builds are not planned. On Linux, the plugin does not exist, and the equivalent need is served by the platform's own mechanisms.

The third is a pipeline that can live with a lower resolution. If your Spout sender is producing 1080p and the SpoutCam path was delivering that faithfully, the plugin's advantage is smaller than it looks, and the cost of a native plugin, the version coupling between OBS and the plugin, and the shared memory configuration, may not be worth it.

There is also a coupling question worth thinking about before you standardise on it. The plugin ties your studio to the OBS plugin API and to the Spout2 SDK at once, and both move. The release list shows the version history, with 1.12.0 in July 2026, 1.10.0 in April 2025 and v1.8 in February 2023, so the plugin does track OBS releases, but a studio that upgrades OBS and the plugin together has to plan for it.

GPL-2.0, version 1.12.0, and a plugin with a small core

The plugin is licensed under GPL version 2, and the README states the authorship clearly: authored by Campbell Morgan, copyright Off World Live Ltd, 2019-2021, with a link to the LICENCE file. GPLv2 is a conventional choice for OBS community plugins.

The release history shows a project that has kept up with OBS. The versions are 1.12.0 on 2026-07-30, 1.10.0 on 2025-04-01 and v1.8 on 2023-02-08, with the last push on 2026-10-11, so there is recent work even between tagged releases.

The acknowledgements are worth reading for a second reason beyond courtesy. The author credits the developer of the OBS-OpenVR-Input-Plugin, whose source helped in getting his head around the OBS API, along with the OBS team and their Discord channel, and the authors of Spout for the library and its documentation. A plugin that is essentially a bridge between two projects is going to be a study in how much of its design is dictated by the API it plugs into.

The contributors are named individually, and one of them is credited with the automatic Spout.dll copy.

Editorial conclusion

Adopt obs-spout2-plugin if your production pipeline already uses Spout2 and you need zero-copy shared textures between OBS and another application, in either direction, at resolutions the old SpoutCam path could not reach. Do not adopt it for a normal OBS setup with NDI or the built-in capture, since it adds a plugin, a DLL and a shared memory path for no benefit, and do not expect it on 32-bit or non-Windows systems, because the README states there are no current plans for 32-bit builds. Before you install, check that your Spout2 sender and OBS are both 64-bit, and read the installation and usage guide linked from the project rather than assuming the OBS source behaves like any other source.

Frequently asked questions

What does the Spout2 plugin for OBS Studio do?

It enables the import and export of shared textures at high resolution to and from Spout2 compatible programs. It implements the Spout2 SDK, creates an OBS source from the Spout shared texture, and provides a Spout output that sends the content of the OBS canvas to Spout.

Why not use the SpoutCam interface instead?

The README says the SpoutCam is limited to standard webcam resolutions and capped at 1920x1080, and that capturing the SpoutReceiver output is both inefficient and limited by your current screen resolution. Previously there was also no way of outputting Spout video textures from OBS at all.

How do I install the obs-spout2-plugin?

Download the Windows installer OBS_Spout2_Plugin_Installer.exe from the releases page, run it and accept the installation from an untrusted source, and select the OBS directory if it is not the default install location. The project also publishes a separate installation and usage guide of its own.

How do I build the Spout2 plugin from source?

Clone the repository recursively, because the dependencies come in as submodules, install CMake 3.28 or newer, and configure and generate for the windows-x64 architecture, through the CMake GUI or the command line. For a release build, run ./scripts/Release.sh with a version number in a bash terminal and find the installer and zip in the win-spout directory.

Is the Spout2 plugin for OBS 32-bit?

No, it is 64-bit. The README states there are no current plans for 32-bit builds, although theoretically it should be possible. The most recent release is 1.12.0, dated 2026-07-30, and the plugin is GPL version 2.

Official sources

  1. License: GPL-2.0
  2. Off-World-Live/obs-spout2-plugin on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/off-world-live-obs-spout2-plugin.svg)](https://hysenlabs.com/projects/off-world-live-obs-spout2-plugin)

Was this useful?