OBS‑NDI

OBS-NDI Wiki

What is DistroAV

DistroAV is an open-source plugin that adds NDI® video and audio connectivity to OBS Studio. It allows OBS to receive video and audio from NDI-enabled devices, transmit the complete OBS program or preview over the network, and publish individual OBS sources or scenes as dedicated NDI feeds.

OBS-NDI is now DistroAV. Formerly known as OBS-NDI, the plugin was renamed to DistroAV in 2024. It is the same open-source project, so guidance written for OBS-NDI generally still applies. This page uses the current name, DistroAV, throughout.

DistroAV is designed for live streaming, broadcast production, dual-PC streaming, corporate AV, education, houses of worship, esports, podcasts, remote production, virtual production and other workflows that need flexible video and audio transport over an IP network. It is available for Windows, macOS and Linux.

What DistroAV does

DistroAV connects OBS Studio to the NDI ecosystem. OBS Studio normally works with local sources such as capture cards, webcams, media files, browser sources, microphones and display captures. DistroAV adds network-based sources and outputs that can be discovered by compatible devices and applications on the local network. With DistroAV, an OBS system can act as:

  • An NDI receiver
  • An NDI program output
  • An NDI preview output
  • A source-level NDI sender
  • A scene-level NDI sender
  • An audio routing endpoint
  • A bridge between OBS and a larger IP video environment

The plugin integrates directly into the normal OBS interface. NDI inputs are added through the Sources panel, global outputs are configured through the OBS Tools menu, and dedicated outputs are attached as filters.

DistroAV is not a cloud streaming service and does not upload production feeds to a public platform. NDI communication normally takes place across a local or otherwise configured IP network.

Quick reference

ItemValue
PluginDistroAV
Former nameOBS-NDI
PurposeNDI video and audio integration for OBS Studio
LicenseOpen source under GPL-2.0
Supported platformsWindows, macOS and Linux
Supported architecturesx64, ARM64 and Apple Silicon where supported by OBS and the selected package
Minimum OBS Studio versionOBS Studio 31.1.1
Required NDI RuntimeNDI Runtime 6.3 or later
Primary integrationsNDI Source, NDI Output, NDI Video Output Filter and NDI Audio Output
Recommended networkWired Gigabit Ethernet or faster
Source codePublicly available through the DistroAV GitHub repository

What is NDI

NDI is an IP-based video and audio technology used to move media between compatible applications, computers, cameras, production systems and other devices. Instead of assigning every signal to a physical HDMI or SDI cable, NDI makes compatible sources available over a network. A receiving system can discover an available sender and use its video, audio or metadata.

NDI is commonly used for:

  • Live production
  • Broadcast contribution
  • Video monitoring
  • Remote production
  • Multi-computer streaming
  • Presentation systems
  • Camera transport
  • Graphics and playback systems
  • Recording workflows
  • Corporate AV, education, esports and houses of worship

NDI performance depends on the network, sender, receiver, source format, system resources and selected transport settings. Although NDI can operate over Wi-Fi in some environments, wired Ethernet is strongly preferred for production use.

Internet speed and local network speed are not the same thing. DistroAV traffic between devices on the same network depends primarily on local network capacity, not the speed of the internet connection.

NDI Source

NDI Source receives video and audio from an NDI sender and adds the feed to an OBS scene. It behaves like a traditional OBS source. Once added, it can be positioned, cropped, scaled, transformed, filtered, hidden, grouped or combined with other OBS sources.

NDI Source can receive feeds from:

  • Another computer running OBS and DistroAV
  • NDI-enabled cameras
  • NDI Screen Capture
  • NDI Test Pattern
  • Presentation applications
  • Graphics systems and media servers
  • Production switchers
  • Mobile NDI applications
  • Hardware NDI encoders
  • Other compatible NDI software

A typical NDI Source configuration includes source selection, source behavior, bandwidth mode, latency mode, audio and video synchronization mode, YUV color range and YUV color space. The available options may vary by DistroAV version and source format.

Source selection

The Source setting determines which discovered NDI sender will be received. A sender name usually includes the name of the transmitting device and the name assigned by the application or output. Clear source names are important in environments with multiple cameras, computers, scenes or production stations.

If the expected source does not appear, the cause is usually related to:

  • Firewall restrictions
  • Local network permissions
  • VPN software
  • NDI groups or privacy settings
  • mDNS discovery
  • Avahi configuration on Linux
  • Different network segments
  • Missing NDI Runtime
  • An inactive sender
  • An OBS-NDI and DistroAV conflict

Source behavior

Source behavior controls how the NDI receiver responds when the OBS source is active, hidden, inactive or temporarily unavailable. The correct behavior depends on the production workflow. A source that remains connected may recover more quickly when shown again, while a source that disconnects when inactive may reduce unnecessary network and processing activity.

Current DistroAV releases use behavior controls intended to make source lifecycle management more predictable. New sources in the DistroAV 6.x generation use the newer pause-oriented behavior by default.

Bandwidth

Bandwidth settings determine how the NDI receiver requests or processes the source. Higher-bandwidth modes preserve more visual information but require more network capacity and processing resources. Lower-bandwidth modes may be useful for monitoring, constrained networks or troubleshooting.

Do not select the lowest-bandwidth option automatically. The best mode depends on the source, resolution, frame rate, network, receiver workload and required image quality.

Latency mode

Latency mode affects buffering and playback stability. A lower-latency setting can reduce delay but may be less tolerant of packet timing variation, overloaded systems, wireless links or unstable network paths. A safer or normal mode adds more tolerance and is generally more appropriate when stability matters more than minimum delay. Every production workflow should be tested under realistic conditions before going live.

Audio and video synchronization

DistroAV provides synchronization behavior for matching received audio and video. Source Timing is often suitable when the sender provides stable timestamps. Network-based synchronization may work better in some multi-device or network-sensitive environments. There is no universally correct synchronization mode; the correct selection depends on the sender, receiver, network, frame rate, audio clock and length of the production.

Long-duration tests are important. A workflow that appears synchronized during a five-minute test may behave differently after several hours.

YUV range

YUV Range controls how the receiver interprets the source signal. Common choices include Limited and Full range. An incorrect setting can produce:

  • Washed-out blacks
  • Crushed shadow detail
  • Incorrect highlights
  • Reduced contrast
  • Unnatural colors

Limited range is common in SDR video workflows. Full range may be used in specific full-range or HDR workflows. The setting should match the actual output of the sender.

YUV color space

Color space determines how color values are interpreted. The correct setting depends on the source standard and production configuration. Rec. 709 is common for HD SDR production. Other formats may be appropriate for SD, UHD, HDR, computer graphics or specialized workflows. The sender, DistroAV source, OBS canvas, OBS output, recorder and final delivery system should use a consistent color workflow.

NDI Output

NDI Output transmits OBS video and audio to other NDI-enabled systems. The global output controls are available through the DistroAV settings in the OBS Tools menu. Depending on the current release and OBS mode, DistroAV can provide a Program Output and a Preview Output.

Program Output

Program Output sends the final OBS program feed. This is the complete output produced by OBS after scene composition, source transforms, overlays, filters, transitions and other production elements have been applied. Program Output is useful for:

  • Sending OBS to a second recording computer
  • Feeding a confidence monitor
  • Delivering a program feed to another production application
  • Connecting OBS to a switcher
  • Sending the final composition to a remote production station
  • Providing a feed for projection or distribution
  • Integrating OBS into an NDI-based facility
  • Creating a secondary encoding or monitoring workflow

The Program Output normally contains both video and the associated OBS program audio.

Preview Output

Preview Output can expose the OBS preview feed in Studio Mode. This allows another device or application to monitor the scene prepared for the next transition rather than the current program feed. Preview Output is useful for:

  • Control-room monitoring
  • Director or producer preview
  • External multiview systems
  • Confidence monitoring
  • Integration with a larger production switcher
  • Pre-air scene inspection

The preview output should not be confused with the program output. Program represents the live composition, while Preview represents the scene prepared on the preview bus.

NDI Video Output Filter

The NDI Video Output Filter publishes an individual OBS source or scene as a separate NDI feed. This is also known as a dedicated NDI output. Unlike Program Output, the filter does not have to send the complete OBS composition. It can expose a specific source or scene independently. Common uses include:

  • Sending a clean camera feed
  • Sending a graphics-only feed
  • Publishing a scene without the main program overlays
  • Routing a media source to another computer
  • Creating an isolated contributor feed
  • Sending a virtual set element
  • Publishing a clean gameplay feed
  • Providing an alternate scene to another production system
  • Separating ISO feeds from the final program

The filter is added through the Filters window of the relevant source or scene.

A dedicated output should be assigned a clear and unique name. Ambiguous names become difficult to manage when several computers publish multiple sources.

Current DistroAV releases support dynamic filter naming tokens. Where supported, ${source} and ${filter} can be used to build names from the source and filter names. Older token formats should be replaced with the current syntax when upgrading from versions that used a previous naming system. The discoverability and active transmission behavior of a filtered output may depend on whether the parent source or scene is active and visible.

NDI Audio Output

DistroAV includes source-level audio output functionality for sending audio independently over NDI. This is useful when program audio should not be delivered as one mixed signal. Possible applications include:

  • Separate microphone routing
  • Isolated game audio
  • Music output
  • Sound effects and alerts
  • Commentary
  • Translation channels
  • Production communications
  • Post-production recording
  • Independent audio processing

Audio behavior depends on the OBS source type and selected workflow. Audio associated with the NDI video filter is supported for compatible sources such as video capture sources, media sources and VLC sources.

Audio-only and source-specific workflows should be tested before production, particularly when using OBS application audio capture, surround audio, unusual sample rates or sources that activate only when visible.

Fix Alpha Blending Filter

DistroAV includes a filter intended to correct alpha blending behavior in supported transparency workflows. Alpha support is useful for lower thirds, animated graphics, virtual avatars, VTubing, overlays, titles, logos, compositing elements and remote graphics systems.

Transparency requires compatible settings across the sender, receiver, OBS color configuration and downstream application. An NDI feed can be visible while its alpha channel is interpreted incorrectly, producing black backgrounds, halos, incorrect edges or partially transparent colors.

Common DistroAV workflows

Dual-PC streaming

A dual-PC workflow separates gameplay or presentation capture from streaming and encoding. The first computer captures the content and sends it over NDI. The second computer receives the feed, adds overlays and audio, and performs the final stream or recording. This can reduce the production workload on the primary system, but it does not eliminate all OBS processing from the sending computer. OBS still needs CPU and GPU resources to capture and compose the source before transmitting it.

Gaming or presentation computer: runs the game or presentation, runs OBS Studio, captures the required content, enables DistroAV Program Output and sends the feed over the local network.

Streaming or production computer: runs OBS Studio, adds an NDI Source, selects the sender, adds microphones, overlays, alerts, graphics and chat, then streams or records the finished program.

Both computers should use wired Gigabit Ethernet or faster.

Multi-camera production

NDI-enabled cameras or computers can be received as individual NDI Sources. Each source can be placed in its own OBS scene, combined into a multiview or switched during a production. The network must have enough capacity for the combined traffic of all simultaneous feeds. A network that performs well with one source may not perform reliably with four or eight sources.

Clean feed and program feed

Program Output can send the complete broadcast while an NDI Video Output Filter sends a separate clean source. For example:

  • Program Output sends camera, lower thirds, branding and captions
  • A dedicated filter sends the camera without graphics
  • Another dedicated filter sends graphics with transparency
  • An audio output sends an isolated microphone

This is useful for remote production, post-production, recording, localization and distribution.

Remote graphics

A graphics computer can publish an NDI feed containing titles, scoreboards, presentation slides or transparent overlays. OBS can receive that feed through NDI Source and composite it with cameras or other content. Alternatively, OBS can publish a graphics scene through a dedicated NDI filter for use in another production system.

Corporate events

DistroAV can connect presentation computers, conference room systems, remote speakers, confidence monitors, recording stations, streaming encoders, graphics workstations, overflow rooms and production control systems. A properly designed NDI network allows feeds to be reassigned without rebuilding every physical signal path.

Education and training

DistroAV can transport instructor cameras, lecture slides, demonstration computers, laboratory feeds, classroom outputs, remote student contributions, recording feeds and livestream program outputs.

Houses of worship

Common workflows include camera feeds, lyrics and presentation computers, program output, clean output, lobby or overflow monitoring, recording, streaming, translation audio and remote production stations.

Esports

DistroAV can route observer feeds, player cameras, gameplay feeds, graphics, scoreboards, commentator cameras, clean feeds, program feeds and replay or recording outputs.

Podcast and studio production

NDI can connect cameras, guest computers, graphics stations, teleprompters, recorders and monitoring systems. Source-level outputs can create isolated feeds for post-production while Program Output delivers the live composition.

System requirements

OBS Studio

DistroAV requires OBS Studio 31.1.1 or later. The plugin is built for current Qt 6 versions of OBS Studio. Older OBS versions may fail to load the module or may not display DistroAV controls. When the plugin does not appear after installation, checking the OBS version should be one of the first troubleshooting steps.

NDI Runtime

DistroAV 6.x requires NDI Runtime 6. The current minimum requirement is NDI Runtime 6.3 or later. The plugin and runtime are separate components:

  • DistroAV adds the OBS integration
  • NDI Runtime provides the underlying NDI libraries

Installing only the plugin is not sufficient unless the selected package automatically installs or includes the required runtime.

Supported platforms

DistroAV supports 64-bit Windows, macOS and Linux. Available architectures depend on the operating system, OBS build and package. Supported environments include x64, ARM64 and Apple Silicon where compatible packages are provided.

Network

A wired Gigabit Ethernet network is the practical baseline for most production workflows. Higher-speed networks may be appropriate for:

  • Multiple simultaneous feeds
  • High frame rates
  • UHD sources
  • Production redundancy
  • Shared storage traffic
  • Large facilities
  • Systems carrying other high-bandwidth data

Wi-Fi can work in some cases, particularly with carefully configured modern wireless infrastructure, but it is less predictable than wired Ethernet.

Linux NDI HX requirement

NDI HX decoding on Linux requires FFmpeg 7 or later. Some distributions ship older FFmpeg versions by default. A standard system update may therefore be insufficient for NDI HX support. Full-bandwidth NDI and NDI HX are not the same transport profile. A system may receive one type successfully while failing with the other.

Installing DistroAV on Windows

Recommended method - WinGet

Open Windows Terminal, PowerShell or Command Prompt and run:

PowerShell
winget install --exact --id DistroAV.DistroAV

This method can install DistroAV and retrieve required dependencies through the Windows package workflow. After installation:

  1. Close OBS if it was open.
  2. Complete the package installation.
  3. Restart OBS.
  4. Open the Tools menu and look for DistroAV settings.
  5. Open the Sources panel and confirm that NDI Source is available.

Chocolatey

DistroAV can also be installed through Chocolatey:

PowerShell
choco install distroav

Install the NDI Runtime separately if it is not included in the selected package workflow.

Windows installer

Download the current Windows installer from the DistroAV release page and run the .exe package. The installer is the most straightforward method for users who do not use a command-line package manager. Close OBS before installation.

Manual Windows installation

Download the Windows ZIP package and extract it to:

Path
C:\ProgramData\obs-studio\plugins

The environment variable version of the same path is:

Path
%programdata%\obs-studio\plugins

This is the current recommended shared plugin location for relevant OBS plugin packages. Manual installation requires the NDI Runtime to be installed separately.

Portable OBS installation

For an OBS portable installation, use the Windows Portable ZIP package. Extract the contents into the portable obs-studio folder while preserving the package directory structure. A normal system-wide installer may place files outside the portable OBS directory and should not be assumed to configure portable mode correctly.

Installing NDI Runtime on Windows

Install NDI Runtime through WinGet:

PowerShell
winget install --exact --id NDI.NDIRuntime

Or through Chocolatey:

PowerShell
choco install ndi-runtime

NDI Tools can be installed optionally:

PowerShell
winget install --exact --id NDI.NDITools

NDI Tools are highly useful for diagnostics because they provide known senders, receivers, monitoring tools and configuration utilities.

Installing DistroAV on macOS

Recommended package installation

Download the current .pkg installer from the DistroAV release page. Close OBS before running the package. The package can also be installed from Terminal:

Terminal
installer -pkg THE_PACKAGE_NAME.pkg -target CurrentUserHomeDirectory

The plugin is normally installed in the current user OBS plugin directory.

Homebrew

The project repository documents the DistroAV cask:

Terminal
brew install --cask distroav/distroav/distroav

Older Homebrew installation instructions may refer to deprecated packages. Use the current project-provided cask rather than assuming an older formula remains correct.

Installing libNDI on macOS

Install or reinstall the NDI library with Homebrew:

Terminal
brew reinstall --cask libndi

A reinstall may be necessary because the installed NDI library does not always upgrade automatically.

macOS security prompts

macOS may block or quarantine software downloaded outside the App Store. Possible solutions include:

  • Control-click the package and select Open
  • Allow the package through System Settings › Privacy & Security
  • Remove the quarantine attribute from the downloaded package
Terminal
sudo xattr -r -d com.apple.quarantine [distroav-package-file].pkg

Use this command only for a package obtained from the trusted DistroAV release source.

macOS installer diagnostics

For detailed installer output:

Terminal
installer -pkg [distroav-package-name].pkg -target CurrentUserHomeDirectory -verbose

For a log suitable for an issue report:

Terminal
installer -pkg [path-to-package].pkg -target CurrentUserHomeDirectory -dumplog

macOS local network permission

Recent macOS versions can block local network access until permission is explicitly granted. Open:

System Settings › Privacy & Security › Local Network

Confirm that OBS is allowed. Also check:

System Settings › Network › Firewall › Options

OBS should be allowed to accept incoming connections.

Installing DistroAV on Linux

Flatpak

For distributions using Flatpak:

Terminal
flatpak install com.obsproject.Studio com.obsproject.Studio.Plugin.DistroAV

Allow the OBS Flatpak to communicate with system Avahi:

Terminal
sudo flatpak override com.obsproject.Studio --system-talk-name=org.freedesktop.Avahi

Without this permission, NDI discovery may fail even when the plugin itself is installed correctly. The Flatpak package includes the required NDI component for its packaged environment.

Ubuntu package

On supported Ubuntu systems:

Terminal
sudo apt install distroav

The Ubuntu package is community-maintained.

Debian or Ubuntu release package

Download the current .deb package and install it with:

Terminal
sudo dpkg -i [distroav-package-file].deb

If dependencies are missing:

Terminal
sudo apt-get -f install

Install the required NDI libraries separately unless the selected package explicitly handles them.

Linux NDI Runtime installation

The DistroAV repository provides an installation script that downloads the NDI libraries from the official NDI distribution source.

Terminal
wget https://raw.githubusercontent.com/DistroAV/DistroAV/refs/heads/master/CI/libndi-get.sh
chmod +x libndi-get.sh
sudo ./libndi-get.sh install

The script requires elevated permissions because it installs libraries into system locations.

Avahi and FFmpeg

Install the required discovery and media components:

Terminal
sudo apt install avahi-daemon ffmpeg

Enable and start Avahi:

Terminal
sudo systemctl enable avahi-daemon
sudo systemctl start avahi-daemon

Avahi provides mDNS-based service discovery used by NDI in common Linux configurations.

Linux firewall example

The official project Wiki documents the following UFW rules as a troubleshooting baseline:

Terminal
sudo ufw allow 5353/udp
sudo ufw allow 5959:5969/tcp
sudo ufw allow 5959:5969/udp
sudo ufw allow 6960:6970/tcp
sudo ufw allow 6960:6970/udp
sudo ufw allow 7960:7970/tcp
sudo ufw allow 7960:7970/udp
sudo ufw allow 5960/tcp

Firewall policies should be reviewed for the actual network and current NDI configuration rather than copied into a security-sensitive environment without evaluation.

Linux plugin path workaround

If a Debian or Ubuntu installation places the plugin where OBS does not find it, symbolic links may be required:

Terminal
sudo ln -s /usr/lib/x86_64-linux-gnu/obs-plugins/distroav.so /usr/local/lib/obs-plugins/distroav.so
sudo ln -s /usr/share/obs/obs-plugins/distroav/ /usr/local/share/obs/obs-plugins/distroav

This is a workaround, not the preferred installation path for every distribution.

Verifying the installation

After installing DistroAV:

  1. Restart OBS Studio.
  2. Open Tools.
  3. Confirm that DistroAV or NDI Output settings are available.
  4. Add a source to a scene.
  5. Confirm that NDI Source appears in the source list.
  6. Open a source or scene filter window.
  7. Confirm that the DistroAV output filters are available.
  8. Open Help › Log Files › View Current Log.
  9. Search the log for DistroAV, NDI, warning or error entries.

If none of the DistroAV controls appear, the plugin did not load. Common causes include:

  • Unsupported OBS version
  • Missing NDI Runtime
  • Unsupported NDI Runtime version
  • Incorrect plugin path
  • Wrong architecture
  • OBS-NDI conflict
  • Damaged installation
  • Duplicate plugin versions
  • Unsupported CPU
  • Missing Linux dependencies

Receiving an NDI feed in OBS

Step 1 - Confirm the sender

Start the application or device that will publish the NDI feed. The sender must be active before it can normally be discovered.

Step 2 - Add NDI Source

  1. Select a scene.
  2. Click the plus button in the Sources panel.
  3. Select NDI Source.
  4. Enter a descriptive OBS source name.
  5. Open the NDI source dropdown.
  6. Select the required sender.
  7. Configure bandwidth, latency, synchronization and color settings.
  8. Click OK.

Step 3 - Confirm video and audio

Verify that the video is visible, audio meters respond, the source has the expected frame rate, colors and contrast are correct, audio and video remain synchronized, and no excessive network or rendering delay develops.

Step 4 - Run a long test

Test the complete workflow for at least the expected duration of the production. Monitor OBS rendering lag, network drops, audio drift, frame pacing, receiver reconnection, source recovery after scene changes, CPU and GPU usage, memory usage and network throughput.

Sending the OBS program over NDI

  1. Open OBS Studio.
  2. Open Tools › DistroAV Settings.
  3. Enable Program Output.
  4. Assign a clear output name if the current version provides a naming field.
  5. Configure the required NDI group where applicable.
  6. Apply the settings.
  7. Open an NDI receiver on another computer.
  8. Select the OBS output.

The receiving application should display the final OBS program.

If the output is discoverable but frozen, black, or showing only the last frame, disable the output, verify the OBS color format, and enable it again.

Sending a single source or scene

  1. Right-click the source or scene.
  2. Select Filters.
  3. Add the NDI Video Output Filter.
  4. Enter a unique output name.
  5. Configure the filter behavior.
  6. Apply the settings.
  7. Confirm the feed from another NDI receiver.

A source-level filter is appropriate when the downstream system should receive one element instead of the complete program.

NDI naming strategy

Clear naming reduces production errors. A useful format is:

Path
Location - Device - Feed

Examples:

  • Studio A - Camera 1 - Clean
  • Stage - Presentation - Program
  • Control Room - OBS - Preview
  • Gaming PC - Gameplay - Clean
  • Graphics - Lower Thirds - Alpha
  • Podcast Room - Guest Camera - ISO

Avoid generic names such as Output, Camera, OBS, Main, Test or New Source. In large environments, include the room, system, role and signal type.

Network design for DistroAV

Use wired Ethernet

Wired Ethernet offers more predictable latency, throughput and packet delivery than Wi-Fi. A production network should avoid:

  • Weak wireless links
  • Power-saving network adapters
  • Unmanaged congestion
  • Oversubscribed uplinks
  • Faulty USB Ethernet adapters
  • VPN routing
  • Guest-network isolation and client isolation
  • Incorrect VLAN configuration
  • Multicast or mDNS blocking

Gigabit is the baseline

Gigabit Ethernet is recommended for typical DistroAV workflows. A single feed may work on a slower connection, but capacity must be considered across all simultaneous traffic. The network may also be carrying internet traffic, file transfers, cloud backups, shared storage, VoIP, control traffic, other NDI sources, security cameras and remote desktop sessions.

Use faster networks for multiple feeds

2.5 GbE, 5 GbE or 10 GbE can provide more headroom for multi-source environments. Faster link speed does not automatically solve bad drivers, faulty cables, congested switches, misconfigured VLANs, firewall restrictions, CPU overload, GPU rendering lag or incorrect source settings.

Network adapter quality

Network adapter hardware and drivers matter. Some adapters and vendor utilities have historically caused latency, packet loss, power-management or stability problems. Production systems should use well-supported adapters with current drivers. Disable unnecessary traffic-management utilities, gaming network prioritization tools and aggressive power-saving features during troubleshooting.

VPN software

VPN software can change routing, interface priority, firewall behavior and mDNS discovery. Disable VPN software when diagnosing missing sources. A VPN that allows normal web browsing does not necessarily support NDI discovery or transport.

Different subnets

Automatic NDI discovery may fail across routers, VLANs or separate subnets. When mDNS is unavailable, configure an external source address through NDI Access Manager or the platform NDI configuration file. Example:

JSON
{
  "ndi": {
    "networks": {
      "ips": "192.168.1.111"
    }
  }
}

Restart OBS after changing the configuration. If the sender is configured by IP, assign it a static address or DHCP reservation. Otherwise, the connection can fail after the sender receives a different address.

NDI groups and privacy

NDI groups and privacy controls can intentionally hide sources. When a source is missing:

  • Check the sender group
  • Check the receiver group
  • Disable privacy controls temporarily
  • Verify that both systems use compatible NDI configuration
  • Test without custom access restrictions

Performance optimization

Monitor OBS statistics

Open View › Stats in OBS and watch frames missed due to rendering lag, skipped frames due to encoding lag, dropped network frames, CPU usage, frame rate and average frame render time. Rendering lag indicates that OBS is not composing frames quickly enough. Encoding lag applies to local recording or streaming encoders. NDI problems may coexist with either issue but are not necessarily their cause.

Leave GPU headroom

OBS requires GPU resources to render scenes even when the final stream is encoded on another computer. A game running at maximum GPU utilization can leave insufficient resources for OBS. Limit the game frame rate when necessary. Running a game at the highest possible frame rate while expecting stable high-resolution OBS and NDI output is often unrealistic.

Optimize OBS scenes

Reduce unnecessary processing:

  • Remove unused sources
  • Avoid excessive browser sources
  • Reduce unnecessary scaling
  • Limit expensive filters
  • Avoid redundant captures
  • Keep media source formats practical
  • Use Game Capture where appropriate
  • Avoid unnecessary Window Capture
  • Disable hidden sources that continue processing when not required

Use low latency audio buffering

OBS provides a Low Latency Audio Buffering Mode intended for outputs such as NDI and DeckLink. The option is located in OBS Settings › Audio. Enabling it can help prevent buffering behavior that develops into audio and video synchronization problems in some workflows. Test the setting with the complete production configuration.

Match frame rates

Use consistent frame rates where practical. For example, camera at 59.94 fps, sender OBS at 59.94 fps, receiver OBS at 59.94 fps and recording or streaming output at 59.94 fps. Mixed 30, 50, 59.94 and 60 fps workflows can work, but they require conversion and may introduce uneven motion or synchronization complexity.

Match resolution and canvas settings

Avoid repeated scaling across several systems. A practical workflow might use a sender base canvas of 1920 × 1080, a sender output of 1920 × 1080, a receiver base canvas of 1920 × 1080 and a final output of 1920 × 1080. Repeated scaling increases processing and can reduce image quality.

Audio and video synchronization

Synchronization problems can come from network jitter, sender clock behavior, receiver buffering, OBS rendering stalls, audio device clock differences, sample-rate conversion, source activation delays, long-running sessions, wireless networking, media source buffering or excessive system load.

Recommended process:

  1. Use wired Ethernet.
  2. Match audio sample rates.
  3. Enable Low Latency Audio Buffering Mode where appropriate.
  4. Test Source Timing.
  5. Test Network synchronization if Source Timing is unstable.
  6. Compare low and normal latency modes.
  7. Monitor OBS logs.
  8. Run a multi-hour test.
  9. Remove unnecessary filters and sources.
  10. Test with NDI Test Pattern to separate NDI transport issues from OBS scene issues.

Do not compensate for progressive drift by adding a fixed delay. A fixed delay may align the signal temporarily but does not correct a clock or buffering problem that continues to change.

Color configuration

Incorrect color settings can make the image appear washed out, too dark, oversaturated, desaturated, clipped, gray instead of black, incorrect in HDR or different between sender and receiver. Review:

  • OBS Color Format
  • OBS Color Space
  • OBS Color Range
  • DistroAV source YUV range
  • DistroAV source color space
  • Sender output format
  • Receiver interpretation
  • Monitor configuration
  • Recorder format

Rec. 709 with Limited range is common for SDR broadcast-style workflows. Full range may be appropriate for computer graphics or specific production pipelines, but every stage must agree.

Alpha transparency

Transparent NDI workflows require careful configuration. One transmission workflow documented by the project has been tested with:

  • Colour Format: NV12
  • Colour Space: Rec. 709
  • Colour Range: Full
  • Receiver latency mode: Normal or Safe

A separate OBS recording workflow for alpha content may use:

  • Colour Format: BGRA
  • Colour Space: sRGB
  • Colour Range: Full
  • An output container and codec that preserve alpha, such as a compatible MOV workflow

These are different contexts. Settings used to transport an NDI signal are not automatically the same as settings used to record an alpha-enabled file. Always test transparency in the actual receiving application. Look for black backgrounds, white or dark edge halos, premultiplied alpha errors, incorrect opacity, color shifts, loss of transparency during recording and filters that flatten alpha.

Troubleshooting DistroAV

Recommended diagnostic order

  1. Identify the exact symptom.
  2. Confirm OBS and NDI Runtime requirements.
  3. Confirm the plugin is loaded.
  4. Check the OBS log.
  5. Test with official NDI Tools.
  6. Test locally on the sending computer.
  7. Test remotely on another computer.
  8. Check firewall and local network permissions.
  9. Disable VPN software.
  10. Check NDI groups and privacy settings.
  11. Test a manual sender IP.
  12. Test a simpler resolution and frame rate.
  13. Remove and recreate the DistroAV source or filter.
  14. Enable DistroAV debug logging.
  15. Submit a complete issue report if the problem remains.

Check the OBS log

Open Help › Log Files and use View Current Log or Upload Current Log File. The uploaded log URL should be included in support requests and bug reports. Search for DistroAV, NDI, error, warning, module not loaded, library not found, unsupported format and OBS-NDI conflict.

Test with NDI Tools

Use a known sender such as NDI Test Pattern, NDI Screen Capture or NDI Scan Converter. Use a known receiver such as NDI Studio Monitor or NDI Video Monitor. Test both locally and remotely.

If NDI Test Pattern cannot be received by NDI Studio Monitor, the problem is below the OBS and DistroAV layer. Focus on NDI installation, network discovery, firewall, permissions or transport. If NDI Tools work but OBS and DistroAV do not, focus on the plugin installation, OBS configuration, source settings and plugin logs.

Plugin does not appear in OBS

Symptoms: no DistroAV settings in Tools, no NDI Source in Sources, no NDI filter in Filters. Possible causes:

  • OBS is too old
  • NDI Runtime is missing or unsupported
  • Plugin files are in the wrong directory
  • Plugin architecture does not match OBS
  • OBS-NDI remains installed
  • Multiple DistroAV versions are installed
  • CPU is unsupported
  • The module failed to load

Solutions: update OBS Studio, install NDI Runtime 6.3 or later, remove OBS-NDI, remove duplicate DistroAV files, reinstall the correct package, check the OBS log for error codes and verify the plugin file path.

Windows plugin files

Depending on the DistroAV version and installation method, Windows plugin files may be located in:

Path
C:\Program Files\obs-studio\obs-plugins\64bit

or:

Path
C:\ProgramData\obs-studio\plugins

Current packages generally use the newer shared plugin location.

macOS plugin files

The plugin should normally exist at:

Path
~/Library/Application Support/obs-studio/plugins/distroav.plugin

If the plugin is missing, reinstall the package and inspect the installer log.

NDI Runtime installed but not found on macOS

Older libNDI 6.0.0 installations could create incorrect permissions on /usr/local/lib. Possible errors include libNDI not found and libndi_load_v5: not found. Use a current NDI Runtime release and correct the directory permission if required:

Terminal
sudo chmod 755 /usr/local/lib

NDI Source does not appear

Possible causes: sender is not active, firewall blocks discovery or transport, VPN is active, different networks or subnets, mDNS is unavailable, Avahi is not running, NDI groups do not match, privacy is enabled, local network access is blocked on macOS, or sender output is disabled. Diagnostic steps:

  1. Confirm the sender in NDI Studio Monitor on the sender.
  2. Confirm the sender in OBS on the sender.
  3. Confirm the sender in NDI Studio Monitor on the receiver.
  4. Start NDI Test Pattern.
  5. Check both firewalls.
  6. Disable VPN software.
  7. Remove custom groups temporarily.
  8. Add the sender IP manually.
  9. Restart OBS.

NDI Source is black

Possible causes: unsupported pixel format, receiver initialization failure, frame synchronization failure, sender stopped transmitting, incorrect color format, firewall allows discovery but blocks media transport, GPU or rendering issue, source is inactive, or NDI HX decoding requirement is not met. Solutions: test in NDI Studio Monitor, delete and recreate the NDI Source, use a standard SDR format, check the sender output format, check firewall settings, update FFmpeg on Linux for NDI HX and review the OBS log.

Audio only or video only

Possible causes: unsupported source format, disabled audio, incorrect OBS monitoring or track routing, source initialization failure, unsupported filter source type, sender does not provide both streams, receiver color or video format is unsupported, or audio sample-rate mismatch. Test the source in NDI Studio Monitor before changing OBS settings.

Program or preview output is frozen

Symptoms: output is unavailable, receiver shows only the last frame, or output stops after changing settings. Solutions:

  1. Disable Program or Preview Output.
  2. Open OBS Settings › Advanced.
  3. Select a supported Color Format.
  4. Apply the setting.
  5. Re-enable the DistroAV output.

Output filter does not start

Possible causes: unsupported pixel format, no compatible audio or video data, sender initialization failed, parent source is inactive, or filter configuration is invalid. Solutions:

  1. Select a supported OBS Color Format.
  2. Remove the NDI Output Filter.
  3. Save the filter configuration.
  4. Add the filter again.
  5. Confirm the parent source is active.
  6. Review the OBS log.

Windows firewall

Set the production network to Private when appropriate. Open Windows Defender Firewall and allow OBS Studio on the required network profiles. Third-party antivirus or firewall software may override Windows Firewall behavior. The DistroAV installer can add relevant firewall configuration in supported Windows installation workflows, but the rules should still be verified when sources are missing.

macOS firewall

Open System Settings › Network › Firewall › Options and set OBS to Allow incoming connections. Also open System Settings › Privacy & Security › Local Network and allow OBS to access the local network.

Linux discovery

Confirm that Avahi is installed and running, UDP 5353 is permitted, the OBS Flatpak has permission to communicate with Avahi, and the sender and receiver are on reachable network segments.

NDI HX crashes or fails on Linux

Confirm that FFmpeg 7 or later is installed. Some stable Linux distributions still provide older FFmpeg versions. Installing the current DistroAV package does not necessarily upgrade the system FFmpeg version.

DistroAV error code reference

DistroAV writes unique numerical error codes to the OBS log. Use this table to map a code to its meaning and the recommended action.

CodeMessageWhat to do
400Failed to start NDI Main OutputThe global program output could not start. Check the OBS color format, NDI Runtime, output configuration and log context.
401NDI library failed to loadThe required NDI library was found or requested but could not be loaded correctly. Reinstall the current NDI Runtime and remove old library files.
402Error loading QLibraryOBS or Qt could not load a required library. Check architecture, plugin location, runtime installation and dependent libraries.
403OBS-NDI is detected and needs to be uninstalled before DistroAV can workRemove the old OBS-NDI plugin completely. DistroAV and OBS-NDI must not be loaded at the same time.
404NDI library not found, DistroAV cannot continueInstall NDI Runtime 6.3 or later.
405Error loading the NDI Library from pathThe configured or discovered library path is invalid or unusable. Remove old NDI installations and reinstall the supported runtime.
406NDI library could not initialize due to unsupported CPUThe system hardware does not meet the runtime CPU requirements. A software reinstall cannot correct an unsupported processor.
407Error creating the NDI ReceiverThe source receiver could not be created. Delete and recreate the source, verify the NDI Runtime and test another sender.
408Error creating the NDI Frame SyncThe frame synchronization component could not be initialized. Test the sender in NDI Studio Monitor and recreate the source.
409Update check failed because the main OBS window could not be obtainedRestart OBS and retry the update check.
410NDI Output cannot start - Unsupported pixel formatSelect a supported OBS Color Format.
411Failed to initialize NDI Main OutputCheck NDI Runtime, OBS color settings and output configuration.
412Failed to create NDI Main OutputDisable the output, correct the configuration and enable it again.
413NDI Output could not start - No audio or video data availableThe filtered source does not currently provide compatible media data. Confirm that the source is active and supported.
414Invalid or unknown behavior detected in configuration fileThe saved plugin configuration is missing, invalid or from an incompatible version. Restart OBS. This error may appear once while the configuration is corrected.
415NDI Sender data capture failedThe filter or output could not capture compatible source data. Review source activation, pixel format and filter configuration.
416NDI Sender initialization failedThe sender could not be created. Remove and recreate the output filter and check the NDI Runtime.
417Update check received an unexpected responseThe update service returned data the plugin could not process. Retry later and confirm that the installed build is an official release.
418Update check timed outCheck internet access, DNS, firewall rules and proxy configuration.
419Update check request failedConfirm that OBS is allowed to access the update service.
421Update check could not open the update fileThe downloaded or local update metadata could not be opened. Check file permissions and security software.
422Update check could not verify the update fileThe update metadata or downloaded file failed verification. Do not bypass verification. Download the current release from the trusted project source.
423Failed to create NDI Preview OutputCheck Studio Mode, color format, NDI Runtime and output settings.
424OBS version does not meet the minimum required versionUpdate OBS Studio to version 31.1.1 or later.
425NDI Library does not meet the minimum required versionInstall NDI Runtime 6.3 or later.
426NDI Main Output disabled because the format is not supportedSelect a supported OBS output and color format.
430NDI Source uses an unsupported video pixel formatChange the sender to a supported video or color format.

Enabling DistroAV debug logging

Launch OBS with DistroAV debug options:

PowerShell
obs64.exe --distroav-debug --verbose

Supported development and diagnostic arguments include:

  • --distroav-debug
  • --distroav-verbose
  • --distroav-log=error
  • --distroav-log=warning
  • --distroav-log=info
  • --distroav-log=debug
  • --distroav-log=verbose
  • --distroav-update-force=0
  • --distroav-update-force=1
  • --distroav-update-last-check-ignore
  • --distroav-detect-obsndi-force=off
  • --distroav-detect-obsndi-force=on

Diagnostic logging may produce a large amount of data. Enable it only while reproducing the problem.

Migrating from OBS-NDI to DistroAV

OBS-NDI was renamed to DistroAV around June 2024 after a request from the OBS Project to remove OBS from the plugin name. DistroAV is the continuation of the same open-source project, not an unrelated replacement. The normal migration process is:

  1. Install DistroAV.
  2. Confirm that OBS-NDI has been removed.
  3. Restart OBS.
  4. Verify the existing NDI sources and settings.
  5. Test all outputs before production.

DistroAV uses the same general settings as OBS-NDI, so a separate project conversion is normally unnecessary. DistroAV 6.1.1 and later installers on Windows and macOS can remove many older OBS-NDI installations automatically. Manual cleanup may still be necessary if OBS-NDI was installed from a ZIP file, installed into a nonstandard directory, or duplicated across user and system plugin directories.

Removing OBS-NDI on Windows

Delete:

Path
%ProgramFiles%\obs-studio\obs-plugins\64bit\obs-ndi.*
Path
%ProgramFiles%\obs-studio\data\obs-plugins\obs-ndi\

Also use Add or Remove Programs if OBS-NDI was installed with an installer.

Removing OBS-NDI on macOS

Delete:

Path
~/Library/Application Support/obs-studio/plugins/obs-ndi.plugin

Also check:

Path
/Library/Application Support/obs-studio/plugins/obs-ndi.plugin

Removing OBS-NDI on Debian or Ubuntu

Terminal
sudo rm /usr/lib/x86_64-linux-gnu/obs-plugins/obs-ndi.so
sudo rm -rf /usr/share/obs/obs-plugins/obs-ndi/

Remove any manually created links from /usr/local as well.

Uninstalling DistroAV

Windows

If installed with the Windows installer, remove DistroAV through Add or Remove Programs. For current plugin packages, check:

Path
%programdata%\obs-studio\plugins\distroav

Older DistroAV versions may have files in:

Path
%ProgramFiles%\obs-studio\obs-plugins\64bit

and:

Path
%ProgramFiles%\obs-studio\data\obs-plugins\distroav

NDI Runtime, NDI Tools and NDI SDK are separate components. Remove them only when they are no longer needed by other applications.

macOS

Open Finder and display hidden files with Command-Shift-. then delete:

Path
~/Library/Application Support/obs-studio/plugins/distroav.plugin

Optional NDI components may exist in:

Path
/Library/Application Support/NewTek/NDI

and:

Path
/usr/local/lib/libndi*

Do not remove shared NDI components when another application depends on them.

Debian or Ubuntu

Remove the plugin:

Terminal
sudo rm /usr/lib/x86_64-linux-gnu/obs-plugins/distroav.so
sudo rm -rf /usr/share/obs/obs-plugins/distroav/

Remove manually created links if present:

Terminal
sudo rm /usr/local/lib/obs-plugins/distroav.so
sudo rm /usr/local/share/obs/obs-plugins/distroav

Optional NDI Runtime removal:

Terminal
sudo rm /usr/local/lib/libndi*
sudo ldconfig

Flatpak

Remove the DistroAV Flatpak extension:

Terminal
flatpak remove com.obsproject.Studio.Plugin.DistroAV

Remove the legacy plugin extension if it remains installed:

Terminal
flatpak remove com.obsproject.Studio.Plugin.NDI

Development

DistroAV is developed publicly. The project source includes C, C++, CMake, shell scripts, build configuration, translations, packaging workflows and platform-specific installation resources.

Development requirements

Development starts with the requirements for building OBS plugins on the selected platform. Typical tools include:

  • Git
  • CMake
  • A supported C and C++ compiler
  • OBS development dependencies
  • Qt dependencies
  • NDI SDK files
  • Platform packaging tools
  • Clang-format
  • GerSemi
  • PowerShell on Windows
  • Xcode command-line tools on macOS
  • Debian or Ubuntu build dependencies on Linux

Windows build

Install common tools:

PowerShell
winget install git.git
winget install kitware.cmake
winget install Microsoft.VisualStudio.Community --override "--wait --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended"

Clone the repository:

PowerShell
git clone https://github.com/DistroAV/DistroAV.git
cd DistroAV

Build:

PowerShell
.github/scripts/Build-Windows.ps1

Create the installer:

PowerShell
.github/scripts/Package-Windows.ps1 -BuildInstaller

macOS build

Install development tools:

Terminal
xcode-select --install
sudo xcode-select --reset
brew install cmake
brew install llvm

Clone and build:

Terminal
git clone https://github.com/DistroAV/DistroAV.git
cd DistroAV
.github/scripts/build-macos
.github/scripts/package-macos

Copy the development plugin:

Terminal
cp -r release/RelWithDebInfo/distroav.plugin ~/Library/Application\ Support/obs-studio/plugins/

Linux build

Debian and Ubuntu are the officially supported Linux development environments documented by the project. Clone and build:

Terminal
git clone https://github.com/DistroAV/DistroAV.git
cd DistroAV
.github/scripts/build-ubuntu

Package:

Terminal
.github/scripts/package-ubuntu --package

Install the generated package:

Terminal
sudo dpkg -i release/distroav-[version]-[architecture]-linux-gnu.deb

Code style

The project generally uses camelCase for methods, snake_case for variables, and third-party naming conventions when interacting with OBS, Qt, NDI, the standard library or other external APIs. The exact style depends on the surrounding library and existing code.

Testing

A standard acceptance test should cover every supported platform and verify plugin installation, OBS startup, successful module loading, Program Output, Preview Output, NDI Source, NDI Video Output Filter, NDI Audio Output, local loopback, remote sender and receiver, OBS shutdown, log output, upgrade behavior, uninstallation, missing-runtime behavior and unsupported-version behavior. Production releases should be tested on Windows, macOS and Linux.

Project history

The project was originally distributed as OBS-NDI. It became one of the established methods of connecting OBS Studio to NDI-based production workflows. In 2024, the project adopted the DistroAV name after the OBS Project requested that the plugin remove OBS from its name. The name changed, but the core objective remained the same: provide open-source NDI video and audio integration for OBS Studio.

The DistroAV 6.x generation introduced the new branding, NDI 6 support, revised source behavior, updated packaging, improved dependency detection, better error reporting, installation cleanup, output reliability improvements and continuing compatibility work.

Project maintenance

DistroAV is an open-source project rather than a conventional proprietary software company. It is maintained through the work of project maintainers, code contributors, reviewers, testers, translators, package maintainers, documentation contributors, financial supporters and project partners.

The upstream project is maintained by tytan652 and the wider DistroAV contributor community. EPEAK Studio supports the official upstream project through project management, partner relations, Apple and Microsoft code signing, code contributions and release lab testing. Community maintainers also support distribution-specific packages such as Flatpak and Ubuntu packages.

Supporting DistroAV

DistroAV is available free of charge, but maintaining a cross-platform media plugin creates recurring expenses. Project costs can include code signing, build infrastructure, release hosting, compatibility testing, hardware testing, NDI SDK integration, OBS compatibility work, package maintenance, documentation, development tools and project administration.

Commercial users and organizations that depend on DistroAV can support continued maintenance through the project Open Collective. Support can also be provided by:

  • Contributing code
  • Testing prereleases
  • Reporting reproducible bugs
  • Improving documentation
  • Translating the interface
  • Reviewing pull requests
  • Maintaining packages
  • Helping other users
  • Funding development

Reporting a bug

A useful bug report should include:

  • Operating system and version
  • CPU architecture
  • OBS Studio version
  • DistroAV version
  • NDI Runtime version
  • Installation method
  • Sender application or device
  • Receiver application or device
  • Source resolution, frame rate and format
  • Network connection type
  • Exact reproduction steps
  • Expected result and actual result
  • OBS log URL
  • DistroAV error code
  • Screenshots where relevant
  • Results from NDI Test Pattern and NDI Studio Monitor
  • Whether VPN, VLANs, groups, privacy or custom firewall rules are used

Reports such as "NDI does not work" are not sufficient for diagnosis.

Production checklist

Before a live production:

  • Update OBS only after testing compatibility
  • Install the supported DistroAV release
  • Install the required NDI Runtime
  • Remove OBS-NDI
  • Use wired Ethernet
  • Verify switch capacity
  • Disable unnecessary VPN software
  • Confirm firewall rules
  • Confirm macOS local network permissions
  • Confirm Avahi on Linux
  • Check FFmpeg version for NDI HX on Linux
  • Use clear source names
  • Match frame rates where practical
  • Match color configuration
  • Verify audio sample rates
  • Test every source and every output
  • Test scene changes
  • Test source disconnection and recovery
  • Test for the full expected production duration
  • Save an OBS profile and scene collection backup
  • Keep a fallback signal path
  • Record a local backup where possible
  • Monitor OBS statistics and logs

Glossary

DistroAV — An open-source OBS Studio plugin that provides NDI input and output functionality.

OBS-NDI — The former name of DistroAV.

NDI Source — A DistroAV source that receives NDI video and audio in OBS.

Program Output — The complete live OBS composition transmitted over NDI.

Preview Output — The OBS Studio Mode preview composition transmitted over NDI.

Dedicated Output — An NDI output created from an individual source or scene using a filter.

NDI Runtime — The NDI software libraries required for NDI-enabled applications to send and receive media.

NDI Tools — A set of NDI utilities that can include monitoring, test, capture and configuration applications.

NDI Studio Monitor — An NDI receiver used to view and test available NDI feeds.

NDI Test Pattern — A known NDI test sender useful for diagnostics.

NDI Access Manager — A configuration utility used for groups, external sources, network addresses and other NDI settings.

mDNS — A local network discovery technology used by NDI in common configurations.

Avahi — A Linux implementation of local network service discovery used for mDNS.

NDI HX — An NDI transport profile that uses compressed video and may require additional decoding support.

Alpha Channel — Transparency information carried with an image or video signal.

Color Range — The numeric range used to represent black, white and intermediate image values.

Color Space — The standard used to interpret and reproduce image color.

Frame Sync — A process used to align incoming frames with the timing required by the receiver.

Latency — The time between media capture and its appearance at the receiving endpoint.

Jitter — Variation in packet or frame arrival timing.

Final notes

DistroAV makes OBS Studio a flexible NDI endpoint for receiving, composing, routing and transmitting video and audio over IP. A reliable DistroAV installation depends on more than the plugin itself. OBS compatibility, NDI Runtime, network design, firewall configuration, color management, source timing, system performance and testing all affect the result.

For simple workflows, setup may require only an NDI Source or Program Output. Larger productions should treat DistroAV as part of a complete media system and document every sender, receiver, network path, format and fallback procedure.

NDI® is a registered trademark of Vizrt NDI AB.