OWL Spout Sender/ Receiver
An integration of Spout into Unreal Engine with up to 32bit color support, alpha channel support and zero-latency/ compression output from all major Unreal tools like nDisplay, Media Capture, Composure, Media Plate, Render Target etc.
Last updated 3 days ago
Overview
Spout is a protocol which allows you to share a video texture being rendered on your GPU between two (or more) software programs running on the same machine.
This means that it doesn’t require encoding, and so has zero-latency (max 1 frame), compression and CPU overhead.
Spout is supported by a wide range of creative software like OBS Studio, TouchDesigner, Resolume, MadMapper, LightAct, Assimilate FX etc.
We have integrated Spout into a wide range of Unreal inputs and outputs to suit a wide variety of different media workflows and can be used in Editor, Runtime or Packaged modes:
You can live output from any of the
OWL Captureformats (Viewport,Cinecam,360 Camera) direct to Spout using ourMedia Output Wizard.You can live input Spout into an Unreal
Media Plate,PlaneorMaterialusing ourMedia Input Wizard.If you want to use Spout with Unreal native tools like nDisplay, Media Capture, Composure, Media Plate etc. you can use our Unreal
Media Frameworkintegration.If you want to send or receive an Unreal
Render Target, you can do so using theOWL Spout Sender/ Receiver Manager.
Spout Sender
You can live-stream from Unreal Engine via Spout either from a Render Target or from Unreal's Media Framework which can be used with nDisplay, Composure, Media Capture and other useful tools.
Performance
Using Spout won’t affect the performance of your project/ game.
That’s because it just shares the pixels that are already being rendered on your GPU, rather than having to use the CPU/ GPU to encode/ decode them.
The main downside of Spout is that it’s limited to a single machine, because the different software programs are literally sharing the video texture that is being rendered on the GPU.
Spout has no resolution cap so this will only be determined by what your GPU can render at your target resolution.
Spout has no FPS cap so you can share very high FPS outputs (
>120FPS).Spout can send up to
32bitcolor from Unreal.Your output will be set by default to
RGBA16f(16bitcolor with alpha channel).You can change this by opening the
Render Targetand selecting a differentRender Target Format:
N.B. Not all Spout Receivers can handle
32bitcolor (for example OBS Studio is8bitonly).
Sender Set-Up
Features
You can use three different methods (listed below) to send Spout from Unreal using Off World Live, all of them include these features:

Active:A tickbox you can use to turn your Sender on/ off.You can leave these open if you want as they don’t create any CPU/ GPU overhead.
Name/ Standalone Name:This is the name you will see in your Spout receiver software.If you are using Unreal in Standalone mode then you can set this value.
Fix Gamma:Unreal works inLinearcolorspace and then applies ansRGBconversion to the Editor UI.If you want an output that looks identical to your Editor
Viewportthen keep this ticked.If you want the raw color values from the
Render Targetthen untick.
Source Render Target:This is only present in theOWL Spout Sender Manager.It is a
Render Targetfrom a Camera or Unreal output that will be sent via Spout.If you are using the Unreal
Media Frameworkintegration, theRender Targetwill be selected automatically.
Media Output Wizard
You can use this method to output from any of the OWL Capture formats to Spout:
In the Off World Live Unreal Editor drop down select the
Media Output Wizard:
Select the settings you need (if you want alpha channel you need to set this on the Camera) and then click
Create:
If you go to your
Spout Receiveryou will now see the output you have created.You will also have added a
Spout Sender Manager Actorand OWL Capture Actor of which you can use theDetailspanel to modify your content:
Unreal Media Framework
You can use this method to output from any of the Unreal creative tools (nDisplay, Composure, Media Capture etc.) to Spout:
Right click in the
Content Browserand selectOWL Spout Output:
A new
Spout Media Output Actorwill be created in theContent Browser:
Double click the
Actorto change its properties:
Number of Texture Buffers:will set the number of textures used to transfer the texture from the GPU to system memory.A smaller number is most likely to block the GPU (wait for the transfer to complete).
A larger number is most likely to increase latency.
Has Priority:enables the sender to take precedence if multiple senders try to use the same name.This is useful when you want this sender to be the main or fallback sender.
Now in Unreal creative tools like nDisplay you can go to the
Media Outputdropdown and select theOWL Spout Outputas aMedia Outputoption:
You need to create a new
Spout Media Output Actorfor each separate Spout output you want to send.
Spout Sender Manager
You can use this method if you want to output a Render Target via Spout.
Find the
OWLSpoutSenderManagerActor in thePlace Actorspanel and drag it into your scene.
In
World OutlinerselectOWLSpoutSenderManagerso it opens in yourDetailspanel and add a newArray elementusing the+sign.You will need to select/ create a
Render Targetby clicking the drop down next to the thumbnail:
You will now see your Unreal Engine feed in your other Spout program (ie OBS Studio).
If you want to output more
Render Targets, just add anotherArray element.You can use blueprints to switch the
Render Targetwhich can be useful for live-editing between different camera angles while sending to a single Spout receiver.
Sending to Other Software
Numerous creative media software solutions support Spout. Some of the main Unreal workflows are shown below.
OBS Studio
To receive Spout in OBS Studio you need our Spout OBS plugin installed.
You can only receive
8bitcolor currently.
Ensure your
Spout Senderis active in Unreal.In OBS, click the
+button in Sources and selectSpout2 Capture:
In the window that opens you should automatically see your
Spout Sender.If you have more than one, you can use the drop down to select between them:
If you are sending
alpha channel, ensure thatpremultipled alphais selected in yourComposite mode:
TouchDesigner
You can see how to receive Spout in TouchDesigner here.
You can receive up to
32bitcolor withalpha channel.See this tutorial for how to live-stream textures from TouchDesigner to Unreal Engine for:
Instancing geometrydata from TouchDesigner to Unreal EngineNiagarasystemsStreaming
tracking dataastexturesvia SpoutPoint cloudsin Unreal Engine via Spouttexture sampling
You can also see this masterclass from Function Store on how to recreate
instanced geometryin Unreal Engine with data generated real-time in TouchDesigner.
Resolume
You can see how to receive Spout in Resolume here.
You can receive up to
16bitcolor withalpha channel.
Spout Receiver
You can live-stream to Unreal Engine via Spout either into a Render Target or in to Unreal's Media Framework which can be used with nDisplay, Composure, Media Plate and other useful tools:
Performance
Using Spout won’t affect the performance of your project/ game.
That’s because it just shares the pixels that are already being rendered on your GPU, rather than having to use the CPU/ GPU to encode/ decode them.
The main downside of Spout is that it’s limited to a single machine, because the different software programs are literally sharing the video texture that is being rendered on the GPU.
Spout can receive up to
32bitcolor in Unreal, this is done automatically depending what you select in your Sender.If you have multiple inputs then you will start to see a performance decline because, although they don’t need to be decoded, they still need to be rendered in Unreal.
Spout has no resolution cap so this will only be determined by what your GPU can render at your target resolution.
However, receiving large textures
>8Kis likely to be very intensive for your VRAM capacity so you need to ensure your GPU has the specs to do so.
Receiver Set-Up
Features
You can use three different methods (listed below) to receive Spout into Unreal using Off World Live, all of them include these features:

Active:A tickbox you can use to turn your Receiver on/ off.You can leave these open if you want as they don’t create any CPU/ GPU overhead.
Name:This dropdown list will show all Spout Senders that are currently active on your machine.Fix Gamma:Unreal works inLinearcolorspace and then applies ansRGBconversion to the Editor UI.If you want color consistency with your Unreal
Viewporttick this option and we will convert the Spout input toLinearso Unreal can convert it back.Keep this unticked if you want to use the Spout input as data such as from TouchDesigner, otherwise it will be distorted by the conversion.
Upgrade 8bit to 16:If you are receiving an8bitcolor texture then the gamma conversion above can result in loss of colors.This tickbox converts the input to
16bitbefore the gamme conversion so the colors remain the same.
Render Target:This is only in theOWL NDI Receiver Manager.If you are using the Unreal
Media FrameworkorMedia Planethen theRender Targetis handled in the background.
Media Input Wizard
This is the fastest way to set up an Spout input to Unreal with compatibility to an Unreal Media Plate (clean media and no anti-aliasing), Plane or Material.
In the Off World Live Unreal Editor drop down select the
Media Input Wizard:
A pop-up will appear in which you can select the Media source you want as well as where you want to display the media:

Click
Createand theSpout Receiverwill automatically be generated in your scene.If you select
Unreal Media Plate, you will generate anSpout Media Source Actorwhich you can manage in theAssetssection of theMedia Plateor yourContent Browser.If you select
PlaneorMaterial, you will generate anOWL Spout Receiver Manager Actorwhich you can manage using itsDetailspanel (see below).
Unreal Media Framework
You can use this method to input Spout to any of the Unreal creative workflows like nDisplay, Composure, Media Plate etc.
Right click the
Content Browserand selectSpout Media Source:
This will create a
Spout Media Source Actor. Double click to access it’s properties.
In the pop-up you can select the Spout input feed as well as any other features you need:
Dragging the
OWL Spout Media Sourcedirectly in to the viewport will create a new UnrealMedia Plate Actorwith theSourcealready assigned.Click the Open button in the
Detailspanel of the Media plate to make it play:
If you want to add a Spout
Sourceto an existingUnreal Media Plate:Navigate to the
Media PlateDetailspanel, find thePlaylistsection and then select theSpout Media Sourcefrom theAssetdropdown:
Spout Receiver Manager
You should use the OWL Spout Receiver Manager if you want to output a Render Target from Unreal via NDI.
In World Outliner select
OWLSpoutReceiverManagerso it opens in yourDetailspanel.
In the
Detailspanel, go toOff World Live Spout Receiver Settingsand add aSpout ReceiverArray elementand click the arrow in the right hand corner to open it:
Once set up, your Spout source will be sending to a
Render Targetin Unreal which you can use as you need:
To receive multiple input feeds, just add additional Array Elements.
You can control the
Activetick-box via Blueprints to manage which cameras are rendering simultaneously and so reduce computational load.
Receiving from Other Software
Numerous creative media software solutions support Spout. Some of the main Unreal workflows are shown below.
OBS Studio
To send Spout from OBS Studio you need our Spout OBS plugin installed.
You can only send in
8bitcolor at present.There are two ways to send, via a
Filterand usingTools.A
filteris recommended because it allows you to send any OBSsourceas an individual layer and it supportsalpha channeloutput, which allows you to add achromakeyin OBS.If you want to send your whole OBS
CanvasthenToolsis best.
Filter
Click on the OBS
Sourceyou want to send from so it is highlighted blue and then click theFiltersbutton:
In the window that opens click the
+button inEffect Filtersand selectSpout Filter:
Add a
nameif you need and your Spout output will now be active:
For example, in your
Unreal Media Plateyou should now see the Spout input (if not, select it from the drop down in your Spout settings):
Tools
In your OBS toolbar go to
Tools> Spout Output Settings:
Click
AutoStartif you want Spout to always output when you open OBS. Otherwise just tickStartto begin sending yourCanvasvia Spout (your output will continue to send until you pressStop):
For example, in your
Unreal Media Plateyou should now see the Spout input (if not, select it from the drop down in your Spout settings):
TouchDesigner
You can see how to send Spout from TouchDesigner here.
You can send up to
32bitcolor withalpha channelwhich will be received correctly in Unreal.
Resolume
You can see how to send Spout from Resolume here.
You can send up to 16bit color with
alpha channelfrom Resolume.
Distributing with your Project/ App
Spout will work automatically when shared to third party users in projects/ apps (provided you have the correct license).
Blueprints
Switch between Senders
Troubleshooting
Spout has a Demo Sender/ Receiver which can be very helpful when debugging your issues which can be downloaded here.
Black Texture
The most common problem is when your Sender/ Receiver can be selected but the texture shows as black. To resolve this:
Download the demo Spout sender/ receiver here to see whether it is the Sender program or the Receiver program that is not working with Spout.
Ensure that Unreal Engine and your other program are running on the same GPU (this is an issue with some laptops). To deal with this:
Check Windows Task Manager to see which GPU your programs are running on - guide here
Use the guide here to force your program to use a specific GPU.
Ensure that the programs you are sharing between are also in
High Performancemode if your computer has any performance throttling (this can be common on laptops).For outputs to OBS on certain laptops you may also need to change your OBS settings here.
Frame Rate Drop when in Background
By default, Unreal throttles the CPU when Unreal is in the background vs other software.
To change this, go to
Editor Preferencesand untickUse Less CPU when in Background:
Audio not Playing when Editor in Background
By default, Unreal will stop audio playing when the Editor is in the background vs other software.
To change this, pick the Engine version you need in your
File Explorerand go to the file path:
In
Configgo toBaseEngine.iniand open the notepad:
Search for
UnfocusedVolumeMultiplierand change the value from0.0to1.0:
Save the file and close and re-open Unreal. Your audio will now play continuously no matter if Unreal is in the background or minimised.