OWL NDI Sender/ Receiver

An integration of NDI into Unreal Engine with 10bit receiver color support, audio and alpha channel support and output from all major Unreal tools like nDisplay, Media Capture, Composure, Media Plate, Render Target etc.

Last updated 3 days ago

Overview

NDI is a protocol which allows you to share a video (including alpha channel) and audio over-the-network at extremely low latency (<20miliseconds) (including over the internet using NDI Bridge).

It is supported by a wide range of broadcast and creative media software like OBS Studio, VMIX, Wirecast, Resolume, TouchDesigner etc.

We have integrated NDI 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 Capture formats (Viewport, Cinecam, 360 Camera) direct to NDI using our Media Output Wizard.

  • You can live input NDI into an Unreal Media Plate, Plane or Material using our Media Input Wizard.

  • If you want to use NDI with Unreal native tools like nDisplay, Media Capture, Composure, Media Plate etc. you can use our Unreal Media Framework integration.

  • If you want to send or receive an Unreal Render Target, you can do so using the OWL NDI Sender/ Receiver Manager.

NDI Sender

You can live-stream from Unreal Engine via NDI 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

For stability in your NDI output and to make receiving easier we recommend you set a fixed Frame Rate in your Unreal Project Settings.

>30FPSmay start to reduce your performance, especially at higher resolutions, due to the CPU load.


You need to have headroom in your actual Unreal FPS above what you select here:

  • For sending NDI, we currently only support the NDI SpeedHQ codec which offers extremely low-latency (20miliseconds) but a number of drawbacks:

    • It is 8bit color only.

    • It is CPU encoded, so can throttle Unreal quite quickly, especially if you are outputting a high resolution and frame rate or multiple simultaneous streams.

    • Alpha channel is supported via BGRA but it sends double the color information so doubles the CPU computation and so will further limit your performance.

    • It requires extremely high bitrate and bandwidth because it performs very little compression on the frames (that’s how it achieves such low latency) so you need a very stable connection (normally ethernet) to run it with stability.

    • It has visual artefacts because it sacrifices complex compression techniques for speed:

      • It has no temporal dimension, so fast differences between frames can create artefacts.

      • Due to the lack of compression it still can lack the bitrate budget to encode complex foliage, water etc.

      • UYVY uses 4.2.2. chroma subsampling so the color information is at half the resolution of the brightness which can create jaggedness around fine lines.

  • The real benefits of SpeedHQ are therefore:

    • Speed: It’s latency is virtually unmatched in over-the-network protocols.

    • Compatibility: It is well supported across media software.

    • Multimedia: It offers video, audio and alpha channel support.

    • Always-On: As soon as the output is set to Active it will keep streaming, you don’t have to Start/ Stop like with the OWL Media Output Encoder.

Sender Set-Up

Features

  • You can use three different methods (listed below) to send NDI from Unreal using Off World Live, all of them include these features:

  • Active: A tickbox you can use to turn your Sender on/ off.

    • If you are not using the Sender you should switch it off to save CPU resources, since encoding is done via the CPU.

    • If you leave this Active then the Sender will keep sending in the background.

  • Capture Audio: Select this if you want to send audio as well as video.

    • By default this will be your Viewport audio but you can set an audio Submix instead below.

  • Name/ Standalone Name: This is the name you will see in your NDI receiver software.

    • If you are using Unreal in Standalone mode then you can set this value.

  • Video Conversion Format: The NDI Sender currently only sends 8bit color using the SpeedHQ codec.

    • BGRA: This is a 4.4.4. color format so will have better colors than UYVY and is required for using alpha channel. It requires more CPU usage and bandwidth than UYVY.

    • UYVY: This is a 4.2.2. color format so has half the color resolution of BGRA but requires less CPU power and bandwidth.

  • Source Render Target: This is only present in the OWL NDI Sender Manager.

    • It is a Render Target from a Camera or Unreal output that will be encoded to NDI.

    • If you are using the Unreal Media Framework integration, the Render Target will be selected automatically.

  • Submix: This is to select an audio Submix if you would prefer to send this instead of your Viewport audio.

Media Output Wizard

You can use this method to output from any of the OWL Capture formats to NDI:

  1. In the Off World Live Unreal Editor drop down select the Media Output Wizard:

  2. Select the settings you need (if you want alpha channel you need to set this on the Camera) and then click Create:

  3. If you go to your NDI Receiver you will now see the output you have created.

  4. You will also have added an NDI Sender Manager Actor and OWL Capture Actor of which you can use the Details panel 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 NDI:

  1. Right click in the Unreal Engine Content Browser and select OWL NDI Output:

  2. A new NDI Media Output Actor will be created in the Content Browser:

  3. Double click the Actor to set the features you need:

    • Number of Texture Buffers sets 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.

  4. Now in Unreal utilities like nDisplay you can go to the Media Output dropdown and select the OWL NDI Output as a Media Output option:

  5. You need to create a new NDI Media Output Actor for each separate NDI output you want to send.

NDI Sender Manager

You can use this method if you want to output a Render Target and Audio Submix via NDI.

  1. Find the OWLNDISenderManager Actor in the Place Actors panel and drag it into your scene.

  2. In World Outliner select OWLNDISenderManager so it opens in your Details panel, add a new Array element using the + sign and set the features you need.

  3. You will need to select/ create a Render Target by clicking the drop down next to the thumbnail:

  4. When you tick Active your NDI feed will start sending out over the network.

  5. In your NDI receiver program, just select the name you have given your feed and your video & audio will appear.

  6. If you want to output more Render Targets, just add another Array element.

  7. You can use blueprints to switch the Render Target which can be useful for live-editing between different camera angles while sending to a single NDI receiver.

Sending to Other Software

OBS Studio

  • To receive NDI in OBS Studio you need the DistroAV plugin installed.

  • You can only receive 8bit color currently with alpha channel and audio.

  1. Ensure your NDI Sender is active in Unreal and Capture Audio is ticked if you need.

  2. In OBS, click the + button in Sources and select NDI Source:

  3. In the window that opens you should automatically see your NDISender. If you have more than one, you can use the drop down to select between them:

  4. If you are sending alpha channel, it will automatically be picked up in OBS but you need to ensure that NDI is set to Video Conversion Format BGRA in Unreal.

  5. If you are sending audio, it will automatically be picked up in your OBS audio mixer.

Resolume

NDI Receiver

You can live-stream to Unreal Engine via NDI 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

For receiving NDI, we support the NDI SpeedHQ, HX and HX-3codecs, all of which are set in your NDI Sender software.

They offer a wide range of different capabilities and benefits:

HX-3

  • HX-3 can deliver a very high quality image because:

    • It uses H.265 with 10bit color

    • It encodes mostly full frames with a very short GOP (it doesn’t guess content across frames which can cause artefacts).

    • It can handle higher resolutions like 4K.

  • For this reason HX-3 is also very low latency/ (because it is only decoding 2 or 3 frames at a time)

  • However it has very high bandwidth/ bitrate because it is encoding mostly full frames.

  • If you have an ethernet connected studio and your NDI Sender can process HX-3 then it’s highly recommended to select this option, especially if you are using chromakey/ alpha channel.

  • If you want to receive 10bit color you need to select the Best option in the Color Management section of the relevant NDI Receiver Actor:

HX

  • HX delivers a less high quality image than HX-3 but with much lower bandwidth:

    • It normally uses H.264 with 8bit color.

    • It encodes a much larger GOP (30 or 60 frames) so has a much lower bitrate.

    • It is generally used for 1080p and lower resolutions.

  • For this reason HX is much higher latency than HX-3 but consumes a lot less bandwidth.

  • If you want reasonable image quality but you are sending NDI over the internet (NDI Bridge) or over WIFI in a studio this is the recommended option.

SpeedHQ

  • SpeedHQ is the default format in NDI Senders so if you don’t have the option to select HX-3 or HX then it is what will be sent.

  • It is a very low latency format but has significant visual artefacts and relatively low visual quality.

  • We recommend using this if it’s your only option or if you have a technical requirement for ultra-low-latency.

Latency

  • In the Color Management section of the relevant NDI Receiver Actor there are two options which affect the latency of the stream:

  • Best: This will add a small frame buffer (1-3 frames) so that if there is a network connection issue you still have a smooth video playback.

  • Fastest: This adds no frame buffer, which makes video delivery faster but means that is there is any network drop your video feed will stutter.

Receiver Set-Up

Features

  • You can use three different methods to receive NDI in Unreal Engine using Off World Live, all of them include these features:

  • Active: A tickbox you can use to turn your Receiver on/ off.

    • If you are not using the Receiver you should switch it off to save CPU resources, since decoding is done via the CPU.

    • If you leave this Active then the Receiver will keep decoding in the background.

  • Render Target: This is only in the OWL NDI Receiver Manager.

    • If you are using the Unreal Media Framework or Media Plane then the Render Target is handled in the background.

  • Name: This is your list of NDI Senders which are coming from external software.

  • Convert Gamma: Use the Fix Gamma Checkbox for media sources that are in a different colorspace to UE’s default sRGB colorspace.

    • This helps ensure proper color reproduction when receiving from external applications.

    • Keep this unticked if you want to receive the raw color input.

  • Color Format: You have two options:

    • Best: This will decode 10bit color space if it has come from your Sender resulting in a much higher quality image but a slightly longer decode time.

    • Fastest: This will just find the color space option that it can decode in the fastest possible time so will result in a lower quality image.

  • Bandwidth: This is used to select between:

    • Highest: Decodes the native stream resolution plus audio and metadata.

    • Lowest: Decodes a 640x380 resolution stream plus audio and metadata.

    • Audio only: Only decodes any audio that is being sent.

    • Metadata only: Only decodes any metadata being sent.

  • Audio: These options are only in the OWL NDI Receiver Manager. If you are using the Unreal Media Framework or Media Plane then the audio is handled in the background.

    • NDI Soundwave: To add audio you need to create a Sound Wave using the drop down (this is done automatically in the Media Input Wizard).

    • Reference Level: Lets you select between EBU, SMPTE and Manual.

    • Audio Sync Mode: You can select automatic audio-video sync or create a delay if you need.

Media Input Wizard

This is the fastest way to set up an NDI input to Unreal with compatibility to an Unreal Media Plate (clean media and no anti-aliasing), Plane or Material.

  1. In the Off World Live Unreal Editor drop down select the Media Input Wizard:

  2. 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:

  3. Click Create and the NDI receiver will automatically be generated in your scene.

    1. If you select Unreal Media Plate, you will generate an NDI Media Source Actor which you can manage in the Assets section of the Media Plate or your Content Browser.

    2. If you select Plane or Material, you will generate an OWL NDI Receiver Manager Actor which you can manage using its Details panel (see below).

Unreal Media Framework

You can use this method to input NDI to any of the Unreal creative workflows like nDisplay, Composure, Media Plate etc.

  1. Right click the Content Browser and select NDI Media Source:

  2. This will create a NDI Media Source Actor. Double click to access it’s properties.

  3. In the pop-up you can select the NDI input feed as well as any other features you need:

  4. Dragging the OWL NDI Media Source into the viewport will create a new Unreal Media Plate Actor with the Source already assigned.

    1. Click the Open button in the Details panel of the Media Plate to make it play:

  5. If you want to add NDI to an existing Unreal Media Plate: t

    1. Navigate to the Media Plate Details panel, find the Playlist section and then select the NDI Media Source from the Asset dropdown:

NDI Receiver Manager

You should use the OWL NDI Receiver Manager if you want to output a Render Target from Unreal via NDI.

  1. Go to the Place Actors' panel and drag-and-drop the OWL NDI Receiver Manager

  2. In the Details panel, go to Off World Live NDI Receiver Settings and add an NDI Receiver Array element and click the arrow in the right hand corner to open it and modify the settings you need:

    full-image
  3. Once set up, your NDI source will be sending to a Render Target in Unreal which you can use as you need:

  4. To receive multiple input feeds, just add additional Array elements.

Receiving from Other Software

OBS Studio

  • To send NDI from OBS Studio you need the DistroAV plugin installed.

  • You can only send in 8bit color at present.

  • There are two ways to send, via a Filter and using Tools.

  • A filter is recommended because it allows you to send any OBS source as an individual layer and it supports alpha channel output, which allows you to add a chromakey in OBS.

  • If you want to send your whole OBS Canvas then Tools is best.

Filter

  1. Click on the OBSSource you want to send from so it is highlighted blue and then click the Filters button:

  2. In the window that opens click the + button in Effect Filters and select Dedicated NDI output:

  3. Add a name if you need and your NDI output will now be active:

  4. For example, in your Unreal Media Plate you should now see the NDI input (if not, select it from the drop down in your NDI settings):

Tools

  1. In your OBS toolbar go to Tools> DistroAV NDI Settings:

  2. Tick Main Output to send your OBS canvas and then click OK to begin sending:

  3. For example, in your Unreal Media Plate you should now see the NDI input (if not, select it from the drop down in your NDI settings):

Blueprints

Toggle NDI Outputs from two OWL Cinecams

  • You will need to add your Render Targets into the Set members nodes:

Switch between NDI Inputs

  • This lets you loop between different live NDI inputs on a single keypress.

Installing NDI SDK to Games/ Apps

If you want to install NDI to your game/ app then you need to include the installer so that your end user has the NDI SDK installed on their machine:

  1. Go to Project Settings> Plugins and tick Launch NDI Installer Automatically:

  2. Now when you package your application the NDI installer will be packaged with it and will automatically load when your users open your application for the first time.

Troubleshooting

NDI has a very helpful set of tools for debugging which can be downloaded here.

Wifi vs Ethernet

  • The NDI protocol doesn't currently have a way to select which network interface it uses to send data.

  • As a consequence, it will often use your Wifi when you have both wireless and wired connections active.

  • It’s recommended therefore to switch off Wifi when you have Ethernet sending set up.

Firewall Blocking

  • The main issue that arises with NDI feeds is them getting blocked by a firewall, because they are being sent over IP.

    • If you can’t see the feed coming through (either to Unreal or to your receiver software) then please check your firewall settings.

    • You can also use NDI Access Manager in the tools linked to above to designate white-listed IP addresses for your NDI feeds.

Black Output from Sender

  • If you are sending in BGRA format and your video doesn’t include an alpha channel then your screen may show as black.

    • To resolve this you should switch your Video Conversion Format to UYVY:

Audio Drift

  • Although it’s better in NDI 6, over longer streams if your CPU is over-loaded NDI can desync audio and video.

    • To resolve this, set a fixed FPS in Unreal Engine such as 30 FPS to reduce load.

    • You can also check the NDI Analysis Tool in the tools linked above for ‘clock deviation’.

Receiver Stutter

  • Some NDI Receivers (like VMIX) need a fixed FPS to process your NDI feed properly, otherwise they will show major ‘stutter’ and a very low frame-rate.

    • To resolve this, set a fixed FPS in Unreal Engine such as 30 FPS so that the Receiver has a stable input.

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 Preferences and untick Use 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 Explorer and go to the file path:

    • In Config go to BaseEngine.ini and open the notepad:

    • Search for UnfocusedVolumeMultiplier and change the value from 0.0 to 1.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.

Windows UDP Bug

As of early 2026, a specific Windows Security Update (related to KB5063878) has been known to cause traffic drops for NDI.

  • To resolve this, in NDI Access Manager, go to the Advanced tab, and change the Receive Mode from Auto (RUDP) to Single-TCP.

  • This forces a more stable connection method that bypasses the Windows UDP bug.