> This is part 1 of 4 of the full documentation (pages 1–100 of 319).
> The content is paginated: fetch every part to see all of it.
> Next part: https://docs.ndi.video/all/llms-full.txt/1
> Page index: https://docs.ndi.video/all/llms.txt

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
This site has an agentic ask interface you may use to query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.ndi.video/all/index.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

---

# Docs & Guides

Unlock the full potential of our technology with the most comprehensive NDI documentation online.

{% hint style="info" %}

Get help with your NDI workflow or learn from real user experiences on our [**Connected Community Platform forums**](https://community.ndi.video/mod/forum/view.php?id=39).
{% endhint %}

## 🏁Getting Started

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th></tr></thead><tbody><tr><td>🟣 <strong>What is NDI?</strong></td><td><a href="/all/getting-started/what-is-ndi">What is NDI?</a></td><td></td><td></td></tr><tr><td>📄 <strong>White Paper</strong></td><td><a href="/all/getting-started/white-paper">White Paper</a></td><td></td><td></td></tr><tr><td>🔻<strong>Download NDI Tools</strong></td><td><a href="https://ndi.video/tools/">https://ndi.video/tools/</a></td><td></td><td></td></tr></tbody></table>

## 📰New Articles

{% content-ref url="/pages/1523b6dbb31c24f38b797fede26254256cb73a1a" %}
[Configuration for SpeedHQ Encoder (Portrait Video Mode)](/all/using-ndi/ndi-with-hardware/configuration-for-speedhq-encoder-portrait-video-mode)
{% endcontent-ref %}

{% content-ref url="/pages/m6EJpiE08sgJk3vbt5fY" %}
[How to use NDI HX Camera App (iOS)](/all/using-ndi/obs-and-3rd-party-software/how-to-use-ndi-hx-camera-app-ios)
{% endcontent-ref %}

{% content-ref url="/pages/e3816cdb5e1daf10283419b85810514e2f704651" %}
[OBS Troubleshooting Survey](/all/faq/troubleshooting-guides/obs-troubleshooting-survey)
{% endcontent-ref %}

{% content-ref url="/pages/daf647ba34b9d3eeafe060dfa65fe1239e52651c" %}
[HDCP for NDI](/all/faq/ndi-6/hdcp-for-ndi)
{% endcontent-ref %}

***

## 🌟Popular

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden></th></tr></thead><tbody><tr><td>❓<strong>FAQ</strong></td><td><a href="/all/faq/troubleshooting-guides">FAQ</a></td><td></td></tr><tr><td>✔️ <strong>NDI Certified</strong></td><td><a href="/all/faq/ndi-certified">NDI Certified</a></td><td></td></tr></tbody></table>

## 🚩News

#### July 21, 2026

Due to an influx of spam bots our tech forum is temporarily disabled.

#### Apr 13, 2026

NDI 6.3.2 [Patch Release](/all/getting-started/release-notes)

#### Feb 17, 2026

NDI 6.3.1 [Patch Release](/all/getting-started/release-notes)

#### Jan 21, 2026

[NDI 6.3](https://ndi.video/tech/ndi6/) is now available! NDI 6.3 expands our discovery, monitoring, and control architecture bringing real-time insight and management to mid-to-large NDI networks. Review the [release notes](#release-notes) for specific details

#### Dec 31, 2025

We are sunsetting our HX License Upgrade program. Please see this [FAQ ](/all/faq/ndi-hx-license-upgrades)page for more details

#### Oct 1, 2025

[NDI HX Camera Release Notes 3.1](/all/using-ndi/apps)

#### Sep 11, 2025

Windows has a released a patch for the unexpected drop in traffic on [RUDP connections](/all/faq/common-issues/traffic-drops-after-windows-update). The patch is currently available for both Windows 10 and 11. Please see our article for more information about the original issue. You can also find more information on the [Windows Support Page](https://support.microsoft.com/en-us/topic/september-9-2025-kb5065429-os-builds-19044-6332-and-19045-6332-b343e907-4f50-41d9-80f8-519490551b91)

#### Sep 14, 2025

We’ve made the tough call to discontinue NDI Remote and take the service offline. This decision comes after identifying performance issues that can’t be quickly addressed. That said, we’re already exploring a more reliable way to bring Remote back in the future. We’ll share updates as soon as we have them.\
\
If you have questions or need a hand planning a workaround, please reach out through the proper channel. Our team’s here to help!  [Support – NDI](https://ndi.video/resources/support/)

## 🆕Release Notes

## NDI 6.3.2

### Fixed

* Fixed an issue where the [NDI Audio Direct](/all/using-ndi/ndi-tools/plugins/audio-direct) VST3 plug-in settings could not be configured via  &#x20;dropdowns when used inside a DAW application.
* Fixed a possible memory leak in [NDI Screen Capture HX](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) where changing video codec settings would  &#x20;cause the existing send advertiser instance to be leaked.
* Fixed an issue in [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) where the list of audio devices would not dynamically update  &#x20;when connecting or disconnecting audio devices on Windows.
* Fixed an issue where the receiver’s name would appear blank in the Discovery UI when the receiver had an input name configured.
* Fixed an issue in [NDI Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-mac/access-manager) on macOS where the preferred NIC setting would revert to  &#x20;"AUTO" after closing and reopening the application.
* Fixed an issue in [NDI Scan Converter](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter) on macOS where the cursor position would appear offset in the  &#x20;captured output.
* Fixed an intermittent crash when destroying send or recv advertiser objects.
* Added missing NDI receiver advertiser API symbols to the visionOS library.
* **SpeedHQ Codec Improvements**: Improved SpeedHQ rate control quality and consistency by refining  &#x20;quality level boundaries and adjusting bitrate tolerance thresholds

## NDI 6.3.1

### Fixed

* Potential deadlock issue in the new discovery server with sources for older versions
* Rare rash in [Premiere Pro](/all/using-ndi/ndi-tools/plugins/ndi-for-premiere-pro) on Mac when enabling NDI output and allowing network access
* Issue where [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) fails to auto launch at starup if the selected source is unavailable
* [NDI Bridge Service](/all/developing-with-ndi/utilities/bridge-service-for-windows) auto-start issue where the service appeared running but failed to start
* Added new command-line options in the NDI Recording tool. Please refer to the SDK documentation for details.

## NDI 6.3.0

### &#xD;NDI Tools

**Sender Monitoring Enhancements**: The [NDI Discovery app](/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery) now includes sender discovery and\
monitoring on both Windows and macOS.

**Default Sender Monitoring Support**: Enabled by default in existing sender-based NDI Tools apps.

* [Windows](/all/using-ndi/ndi-tools/ndi-tools-for-windows): NDI Test Patterns, NDI Screen Capture, NDI Screen Capture HX, NDI VLC Plugin.
* [macOS](/all/using-ndi/ndi-tools/ndi-tools-for-mac): NDI Test Patterns, NDI Scan Converter.

**NDI Discovery Server Improvements**: Enhanced [sender discovery and monitoring](/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor) capabilities. The NDI&#x20;server utility is now available as a standalone installer for Windows and Linux and can run as a service.&#x20;See [documentation ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery/discovery-server-additional-information)for setup details.

#### &#xD;Fixed

* Fixed an issue in the NDI plugin for Adobe Premiere where the field sequence was incorrectly  \
  displayed when playing SpeedHQ progressive clips in interlaced sequences.
* Resolved poor NDI HX encoding performance on AMD GPU/CPU systems in [Screen Capture HX](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) and  &#x20;[NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge).
* Fixed NDI Virtual Input on macOS failing to receive video when connected via [Discovery Server](/all/getting-started/white-paper/discovery-and-registration/discovery-server) and  &#x20;[Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager).
* Resolved an issue where [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) would stop receiving video from the NDI HX Camera app  \
  when the camera resolution was changed.
* Corrected video preview rendering in NDI Webcam to properly respect the source aspect ratio.
* Fixed [NDI Router](/all/developing-with-ndi/sdk/ndi-routing) terminating active streams upon application closure.

### NDI SDK&#xD;

**New APIs**: Introduced APIs for [sender discovery and monitoring](/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor), designed for integration with the\
NDI Discovery Server. See documentation for details.

**Performance Improvements**: Enhanced [SpeedHQ](/all/getting-started/white-paper/bandwidth/ndi-high-bandwidth-based-on-speedhq2-8bit-4-2-2) codec quality across multiple generations.

**Enabled passthrough** of the NDI capabilities message from NDI receiver to the NDI sender.

**Enhanced Receiver Passthrough Control**: Introduced per-codec passthrough override control via\
receiver creation JSON in the NDI Advanced SDK, enabling selective decompression of compressed\
formats. Please refer to the SDK documentation for details.

Improvements to [**FPGA reference design**](/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design). Please refer to the [ChangeLog](/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/changelog) files for more details.

{% hint style="success" %}
Are you looking for the rest of the release notes? You can find them [**on this page**](/all/getting-started/release-notes)
{% endhint %}

{% hint style="success" %}
We've made an update to the NDI SDK terms, bringing these in line with our commitment to the health and growth of the NDI ecosystem. **The NDI SDK remains royalty-free, subject to the SDK terms and conditions.** For more details including a full explanation and updated list of exclusions please consult the terms and conditions by downloading the NDI 6.3 SDK. These changes apply to the NDI SDK only and are not applicable to the NDI Advanced SDK. For more information see the [Community Announcement](https://community.ndi.video/mod/forum/discuss.php?d=114) in our Forums
{% endhint %}


# What is NDI?

## Introduction to NDI

<div align="center" data-full-width="false"><figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FLCCN46QSE0sy4XcWlLjp%2FNDI%20Black%20Logo%20Alpha%20720p.gif?alt=media&amp;token=36b47890-0778-48b3-9e65-824750b94646" alt="NDI logo animation"><figcaption></figcaption></figure></div>

**NDI** stands for **Network Device Interface**. It is a widely adopted video connectivity standard based on proprietary IP networking specifications.\
\
NDI enables multimedia systems to identify and communicate with one another over IP and to encode, transmit, and receive many streams of high-quality, low latency, frame-accurate video and audio, and exchange metadata in real-time.

NDI operates bi-directionally, with many streams on a shared connection. Its encoding algorithm is resolution and frame-rate-independent, supporting 4K resolutions and beyond, along with unlimited floating-point audio channels and custom metadata.\
\
NDI can be integrated and/or supported by any network-connected product, including video cameras, graphics systems, video mixers, capture cards, multimedia players, video editing applications, and many other devices and software.\
\
NDI *is not* a codec. NDI supports many different video codecs, like our proprietary SpeedHQ, found on the NDI High Bandwidth format, [AVC (H.264)](https://en.wikipedia.org/wiki/Advanced_Video_Coding) and [HEVC (H.265)](https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding), found on the NDI HX formats. Different NDI formats correspond to specifications related to codecs supported, bandwidth spending, glass-to-glass latency, and image quality.

## The vision of NDI

### ***Manifesto***

***Video** has transported images, information, ideas, and stories for over a century.* &#x20;

*And over the last decade, we've been working behind cameras to push the envelope every time someone presses record. With each innovation, we've helped bring partners, creators, and users closer to the future of video.*

*Now, **the future of video is here**. The little red dot is everywhere. Video is not just moving images anymore. It's transferring data. More than something we consume, video generates new ideas and businesses every day. It's not how we transport experiences. Video is the experience:*&#x20;

*From a **state-of-the-art overseas production** to the **room of a gaming streamer**;*&#x20;

*from a **smart network of traffic flow analysis** to the most **challenging remote surgeries**;*&#x20;

*from an **auction with thousands of bidders on social media** to a **parent calming their baby through a monitor.***&#x20;

*As video evolves, it unveils a common thread connecting all these new use cases and exciting possibilities. **One breakthrough that redefines video**:*&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FWbE7OzuBHiOIyu2R2Qf2%2Fvision.jpg?alt=media&amp;token=5cad6e74-f6b9-4564-850f-ec0ac673873d" alt="Branded visual showcasing the essence of NDI, our biggest belief: There is no video without connection."><figcaption></figcaption></figure>

**We believe there is no video without connection.**&#x20;

Looking into the next steps of video-based industries, you find innovation and the rise of new use cases everywhere: video production going remote, collaborative, virtual, cloud-based, and AI, all at the same time; video streaming is growing with no limits, and live e-commerce is establishing itself as one of the main formats of e-commerce; a very big percentage of IoT is built using video, which is becoming the ultimate sensor for humans and machines.​; many specialized use cases are becoming more common in surveillance, monitoring, smart cities, or hybrid learning and work.

The future of video is one in which content is transferred easily and efficiently via the Internet Protocol (IP). This global network will largely supplant and become far too decentralized and open-ended for current industry-specific connection formats like HDMI, SDI, etc., in any type of video workflow or production pipeline.&#x20;

This is the next iteration of the world of video, audio, and media: *a connected global environment that contains all devices, technologies, services, and businesses based on creating, sharing, coordinating, and consuming media, either by humans or machines.​*

**NDI is the technology connecting it.**

## The value of NDI

### The current limitations to connectivity <a href="#the-current-limitations" id="the-current-limitations"></a>

When we think about video connectivity, it’s natural to consider the ever-expanding possibilities, more options, and unlimited potential.

But the fact is that, as with all technology-driven revolutions, the existing way of doing things still presents more limitations than we would like:

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Limitations in ​equipment and budget​</strong></td><td>Currently, the number and quality of connections are very dependent on cost, available cables, infrastructure, and bandwidth.</td></tr><tr><td><strong>Complexity and need for specialized expertise</strong></td><td>Most connectivity solutions require networking expertise to set up and troubleshoot. They struggle to provide a simple, user-friendly experienc</td></tr><tr><td><strong>Too many working connectivity protocols</strong></td><td>There can be many protocols in the same workflow, requiring a lot of conversion and understanding of different technologies. <br><br>Alternatively, some products only operate in closed ecosystems.</td></tr></tbody></table>

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2Fg2oMIbYa0xia4Dln9Hym%2Fimage.png?alt=media&amp;token=f5c33901-c387-4b03-8764-ebe48a332404" alt=""><figcaption></figcaption></figure>

### NDI is removing the limits of video connectivity.

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>High efficiency</strong></td><td>We develop the most advanced video connectivity formats; and allow productions to scale without scaling costs.​</td></tr><tr><td><strong>Plug &#x26; play</strong></td><td>We guarantee that any NDI-enabled product is easy to operate, even without networking knowledge, and always works seamlessly.​</td></tr><tr><td><strong>Interoperability</strong></td><td>We unlock complete connectivity with a growing ecosystem of NDI-enabled and compatible devices; and NDI is the only protocol you’ll need.​</td></tr></tbody></table>

**For these reasons and many more, NDI enables effectively transitioning any setup, workflow, or production into an incredibly versatile IP video pipeline, offering backward compatibility with the existing infrastructure and devices.**

***

### **Learn more at** [**ndi.video**](https://ndi.video/tech)

{% embed url="<https://ndi.video/tech>" %}


# Release Notes

{% hint style="info" %}
**These release notes refer to changes in our complete technology, including the SDKs, NDI Tools, and any other items. Take your time to comb through the documentation and decide what is more relevant for your specific context.**

**\*Any reference to a ChangeLog refers to the release notes shown below**
{% endhint %}

{% updates format="full" %}
{% update date="2026-04-13" %}

## NDI 6.3.2

### Fixed

* Fixed an issue where the [NDI Audio Direct](/all/using-ndi/ndi-tools/plugins/audio-direct) VST3 plug-in settings could not be configured via  &#x20;dropdowns when used inside a DAW application.
* Fixed a possible memory leak in [NDI Screen Capture HX](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) where changing video codec settings would  &#x20;cause the existing send advertiser instance to be leaked.
* Fixed an issue in [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) where the list of audio devices would not dynamically update  &#x20;when connecting or disconnecting audio devices on Windows.
* Fixed an issue where the receiver’s name would appear blank in the Discovery UI when the receiver had an input name configured.
* Fixed an issue in [NDI Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-mac/access-manager) on macOS where the preferred NIC setting would revert to  &#x20;"AUTO" after closing and reopening the application.
* Fixed an issue in [NDI Scan Converter](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter) on macOS where the cursor position would appear offset in the  &#x20;captured output.
* Fixed an intermittent crash when destroying send or recv advertiser objects.
* Added missing NDI receiver advertiser API symbols to the visionOS library.
* **SpeedHQ Codec Improvements**: Improved SpeedHQ rate control quality and consistency by refining  &#x20;quality level boundaries and adjusting bitrate tolerance thresholds
  {% endupdate %}

{% update date="2026-02-09" %}

## NDI 6.3.1

### Fixed

* Potential deadlock issue in the new discovery server with sources for older versions
* Rare rash in [Premiere Pro](/all/using-ndi/ndi-tools/plugins/ndi-for-premiere-pro) on Mac when enabling NDI output and allowing network access
* Issue where [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) fails to auto launch at starup if the selected source is unavailable
* [NDI Bridge Service](/all/developing-with-ndi/utilities/bridge-service-for-windows) auto-start issue where the service appeared running but failed to start
* Added new command-line options in the NDI Recording tool. Please refer to the SDK documentation for details.
  {% endupdate %}

{% update date="2026-01-21" %}

## NDI 6.3.0

### NDI Tools

**Sender Monitoring Enhancements**: The [NDI Discovery app](/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery) now includes sender discovery and&#x20;monitoring on both Windows and macOS.

**Default Sender Monitoring Support**: Enabled by default in existing sender-based NDI Tools apps.

Windows: NDI Test Patterns, NDI Screen Capture, NDI Screen Capture HX, NDI VLC Plugin.

macOS: NDI Test Patterns, NDI Scan Converter.

**NDI Discovery Server Improvements**: Enhanced [sender discovery and monitoring](/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor) capabilities. The NDI&#x20;server utility is now available as a standalone installer for Windows and Linux and can run as a service.&#x20;See [documentation ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery/discovery-server-additional-information)for setup details.

#### Fixed

* Fixed an issue in the NDI plugin for Adobe Premiere where the field sequence was incorrectly  \
  displayed when playing SpeedHQ progressive clips in interlaced sequences.
* Resolved poor NDI HX encoding performance on AMD GPU/CPU systems in [Screen Capture HX](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) and  &#x20;[NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge).
* Fixed NDI Virtual Input on macOS failing to receive video when connected via [Discovery Server](/all/getting-started/white-paper/discovery-and-registration/discovery-server) and  &#x20;[Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager).
* Resolved an issue where [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) would stop receiving video from the NDI HX Camera app  \
  when the camera resolution was changed.
* Corrected video preview rendering in NDI Webcam to properly respect the source aspect ratio.
* Fixed [NDI Router](/all/developing-with-ndi/sdk/ndi-routing) terminating active streams upon application closure.

### NDI SDK

**New APIs**: Introduced APIs for [sender discovery and monitoring](/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor), designed for integration with the\
NDI Discovery Server. See documentation for details.

**Performance Improvements**: Enhanced [SpeedHQ](/all/getting-started/white-paper/bandwidth/ndi-high-bandwidth-based-on-speedhq2-8bit-4-2-2) codec quality across multiple generations.

**Enabled passthrough** of the NDI capabilities message from NDI receiver to the NDI sender.

**Enhanced Receiver Passthrough Control**: Introduced per-codec passthrough override control via\
receiver creation JSON in the NDI Advanced SDK, enabling selective decompression of compressed\
formats. Please refer to the SDK documentation for details.

Improvements to [**FPGA reference design**](/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design). Please refer to the [ChangeLog](/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/changelog) files for more details.
{% endupdate %}

{% update date="2025-08-21" %}

## **NDI 6.2.1**

**Fixed**

{% hint style="warning" %}
Our latest release brings an update to the NDI SDK terms, bringing these in line with our commitment to the health and growth of the NDI ecosystem. **The NDI SDK remains royalty-free, subject to the SDK terms and conditions.** For more details including a full explanation and updated list of exclusions please consult the terms and conditions by downloading the NDI 6.2.1 SDK. These changes apply to the NDI SDK only and are not applicable to the NDI Advanced SDK. For more information see the [Community Announcement](https://community.ndi.video/mod/forum/discuss.php?d=114) in our Forums.
{% endhint %}

* Updated the NDI Tools installer to display the [Privacy Policy](/all/using-ndi/ndi-tools/installing-ndi-tools/privacy-policy) on the data collection agreement page.
* Fixed an issue with silent installation of [NDI Tools](/all/using-ndi/ndi-tools).
* Fixed an issue where the [NDI Discovery Server](/all/getting-started/white-paper/discovery-and-registration/discovery-server) running as a service would not start automatically after windows restart.
* Added **URL connection** reporting in the [Discovery UI](broken://pages/4E0yRhy4TMEitjwX1GpG) when monitoring NDI receivers connected to HX1 sources.
* Fixed a **localization issue** in the [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) statistics window.
* Fixed a crash that could occur when destroying an NDI receiver during an active connection attempt to a source. Improved handling of deinterlacing in [NDI Studio Monito](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor)r.
* A new '**deinterlacing**' option has been added to the Video Settings menu.
* Fixed incorrect byte order handling when using `NDIlib_recv_color_format_RGBX_RGBA`.
* Fixed an issue where NDI output from[ Adobe Premiere](/all/using-ndi/ndi-tools/plugins/ndi-for-premiere-pro) could change resolution when clips on the timeline ended.
* Resolved an issue where [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) could incorrectly select a temporary GPU adapter, which might become unavailable when remote desktop sessions end.
* Fixed a potential issue where an **NDI Finder** could block indefinitely in certain environments.
* Removed the [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued) application from the **NDI Tools Suite.** See [here ](https://community.ndi.video/mod/forum/discuss.php?d=127#p332)for more details
  {% endupdate %}

{% update date="2025-06-03" %}

## **NDI 6.2**

### **NDI Tools**

* Introduced the [**NDI Discovery**](broken://pages/4E0yRhy4TMEitjwX1GpG) **app** in the Tools suite for macOS and Windows for **NDI receiver discovery, monitoring and control**.
* NDI Tools now includes support for **anonymous usage data collection** to help improve future releases. Users can choose to opt in or out during setup and update their preference anytime from the NDI Tools Launcher.
* Updated NDI Studio Monitor (Windows) and NDI Video Monitor (Mac) to enable settings for **receiver monitoring** and **remote source control** when used with the new NDI Discovery Server.
* Improved [**Access Manager**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager) for easier multicast configuration on Windows and Mac.
* Added a new setting in [**Screen Capture**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture) applications on Windows to enable or disable notifications for new connections.
* Improved error handling and user notifications in [**Screen Capture** ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture)applications on Windows.

#### **Standalone Tools**

* Enhanced existing [**NDI Discovery Server**](/all/getting-started/white-paper/discovery-and-registration) with new capabilities for **receiver discovery, monitoring, and control**. It is now available as a standalone installer for Windows and Linux, allowing it to run as a service. Refer to the documentation for details.
* Updated the [**NDI Bridge Service**](/all/developing-with-ndi/utilities/bridge-service-for-windows) to include local mode support.

#### **Fixed**

* A problem in [**NDI Webcam**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) and [**NDI Router**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/router) where the preview window could freeze or fail to render video.
* Issue where the **NDI record binary** would stop recording when the record chop command was used with the `-noautochop` flag.
* Crash in [**Scan Converter**](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter) on macOS that occurred when its signal was received in [**Video Monitor**](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) or Studio Monitor.
* Addressed a localization issue that skewed statistics in [**NDI Bridge**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge).
* Usage of **incorrect units for packet lost metric** in [**NDI Bridge**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) statistics window.
* Issue where the [**NDI Bridge** ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge)host could crash during stream cleanup or closure.&#x20;
* Fixed a potential crash in the **NDI VST output plugin** when used with certain DAW applications.
* Issue where audio frameworks could fail to load at runtime on macOS, causing [**Free Audio**](/all/developing-with-ndi/utilities/free-audio) to detect no audio devices.

### NDI SDK

* Introduced a new set of APIs for **receiver discovery, monitoring, and control,** designed for integration with the NDI Discovery Server. Refer to the documentation for details.
* Added **visionOS** support to **Apple SDKs**.
* Optimized audio resampler performance in [**NDI Frame Sync**](broken://pages/2pllbPWFLnfXP7Ls26Vy) on ARM-based platforms.
* Improved **single-TCP sending performanc**e by using scatter-gather to reduce per-message ACKs.&#x20;

#### Fixed

* Resolved a potential crash in the NDI library when handling UDP streams on certain ARM-based processors.
  {% endupdate %}

{% update date="2024-12-23" %}

## NDI 6.1.1

**Fixes**

* Resolved a low-level exception that occurred when importing recorded SpeedHQ files into Adobe Premiere Pro.
* Fixed an issue where NDI Virtual Input might stop functioning after a few seconds on certain macOS platforms.
* Improved handling of connection metadata when used with the NDI Routing API.
* Addressed a possible issue with the Discovery Server where sources might not appear intermittently.
* Resolved a potential memory leak issue in NDI Test Patterns on Windows.
  {% endupdate %}

{% update date="2024-12-05" %}

## NDI 6.1.0&#x20;

**SDK**&#x20;

* **FPGA** improvements.
* Added support for **16-bit** color formats on FPGA platforms.&#x20;
* Introduced encoder support for **planar alpha**.&#x20;
* Added support for new **packed and semi-planar** video formats.&#x20;
* Implemented **64-bit addressing in raw audio/video input and output logic**. For more details, refer to the **ChangeLog** files.&#x20;
* The **Advanced SDK** now features a new **API** that enables dynamic adjustment of the received bandwidth for NDI video streams. For more information, please consult the [Advanced SDK documentation](/all/developing-with-ndi/advanced-sdk).&#x20;
* Added **new audio conversion utility API**s for `NDIlib_audio_frame_v3_t` structure.&#x20;
* Made **improvements to the** [**SpeedHQ**](/all/getting-started/white-paper/encoding-and-decoding) **codec** to verify the correctness of the bitstream before decompression.&#x20;

**SDK - Fixes**

* Fixed incorrect **HDR color information in MOV files** recorded using the NDI Recorder utility.&#x20;
* Addressed an issue where the NDI library took longer than expected to unload in specific scenarios.&#x20;
* Addressed a potential frame drop issue with [NDI HX](/all/getting-started/white-paper/encoding-and-decoding) streams under specific conditions.&#x20;
* General improvements to the [Reliable UDP protocol](/all/getting-started/white-paper/ndi-protocols#reliable-udp-ndi-5).  &#x20;

**NDI Tools**

* [**NDI Tools launcher**](https://ndi.video/tools/) **layout and style improvements**. (macOS and Windows).&#x20;
* The [NDI Virtual Input](/all/using-ndi/ndi-tools/ndi-tools-for-mac/virtual-input) app on macOS has been updated to utilize **modern system extensions introduced in macOS Sonoma 14.1**.&#x20;
* [All NDI Tools](/all/using-ndi/ndi-tools/ndi-tools-for-windows) apps on **Windows** have been updated to use **.NET 8.**&#x20;

**NDI Tools - NDI Bridge**

* A **connection test feature** was added to determine optimal buffer delay settings for your network.
* Introduced a **dedicated statistics window** with timeline graphs to monitor system and bridge usage.
* Added a **logging window with support for log-level filters** to view bridge logs more effectively.
* **Local mode** now includes an option to configure the **local send group for bridge sources**.&#x20;

**NDI Tools - New Utilities**

* The [NDI Bridge Service](/all/developing-with-ndi/utilities/bridge-service-for-windows) is now [available for free download](https://ndi.video/tools/bridge-service/) on the NDI website. It allows you to run [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) **in a headless mode as a Windows service**. Please refer to the documentation for more details.&#x20;
* The [NDI Free Audio](/all/developing-with-ndi/utilities/free-audio) utility is now [available for free download](https://ndi.video/tools/free-audio/) on Windows and Linux via the NDI website. It also includes **enhanced ASIO support for Windows** devices.&#x20;
* The **NDI Analysis** tool has been improved to include additional information about NDI stream timings when exporting to a CSV file. Please refer to the [NDI Analysis documentation](broken://pages/eEOrR87Gy7wxy6kPitSP) for more details.&#x20;

**NDI Tools - Fixes**

* [NDI Access Manager ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/access-manager)(macOS) now supports inputting **multiple discovery server IP addresses**.
* Corrected an issue in [NDI Router ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/router)(macOS) where **HDR** images were not rendered properly in the preview.
* Resolved a potential exception in the source menu of [NDI Router ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/router)(macOS) when parsing NDI sources.
* Resolved an issue where [NDI Bridge ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge)failed to auto-start in **Local** **mode**.
* Fixed a potential deadlock when closing an [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) stream in **Join** **mode**.
* Corrected **NDI Test Patterns** to ensure the full **Rec.709** color range is output for imported images (Windows).
* Fixed an issue with [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued) when enumerating system audio devices.&#x20;
* Resolved a potential issue in [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) when rendering test patterns with alpha transparency.
* Enabled high bit-depth decoding in [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) for streams with **BT.2020 color primaries**.
* Added support for higher color depth when playing **SDR files using the VLC player** with the NDI output plugin enabled.
* Fixed audio driver stability issues with [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input).&#x20;

**NDI Tools - Known Issues**

* NDI Virtual Input may stop working after a few seconds with certain macOS platforms.
  {% endupdate %}

{% update date="2024-05-08" %}

## NDI 6.0.1

#### **NDI Tools - HDR**

* The [NDI output plugin for VLC](/all/using-ndi/ndi-tools/plugins/ndi-for-vlc) now includes HDR support\<html>

#### NDI Tools - Fixes

* Corrected rendering issue when importing custom images from older versions of [NDI Test Patterns](/all/using-ndi/ndi-tools/ndi-tools-for-windows/test-patterns) on Windows.
* Resolved a potential crash in [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued).
* Resolved a minor talkback audio issue in [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued).
* Added a firewall exception rule for the [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued) app.
* Resolved an issue with loading the [NDI output plugin for Final Cut Pro](/all/using-ndi/ndi-tools/plugins/ndi-output-for-final-cut-pro) on newer macOS versions.
* [NDI Video Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) on Mac was not playing audio.
* Ensured correct permissions were set on the NDI Runtime installer on MacOS.
* Resolved an issue where the NDI Tools registration state was not being saved correctly.

#### **NDI SDK - Fixes**

* Resolved a source limitation issue with the [NDI Discovery server](/all/getting-started/white-paper/discovery-and-registration) running on Linux.
* Addressed an issue with NDI Frame Sync, restoring correct behavior in audio capture.
* Fixed a potential threading issue when loading and unloading the NDI library on Windows.

{% endupdate %}

{% update date="2024-03-25" %}

## NDI 6.0.0

#### SDK

* Support for 16-bit color formats improved (P216/PA16).&#x20;
* There is a new specification for NDI HDR metadata (read the new dedicated [**HDR section**](/all/developing-with-ndi/sdk/hdr) in the NDI SDK for more details).&#x20;
* New receiver formats permit SpeedHQ pass-through with UYVY/P216 video.&#x20;
* HDR example code samples are provided with NDI SDK.&#x20;
* The NDI Advanced SDK includes a new [**NDI Bridge Utility**](/all/developing-with-ndi/advanced-sdk/embedded-bridge) for hardware (currently available for Linux), with comprehensive guidance on its use.&#x20;
* [**NDI Recorder utility**](/all/developing-with-ndi/sdk/command-line-tools) enhanced to capture NDI HDR streams.&#x20;

{% hint style="info" %}
Please note: The **NDI Advanced SDK** licensing scheme has been enhanced. To use NDI 6.0 features, advanced SDK users will need a new License ID (which replaces the former Vendor ID). Please contact <support@ndi.video>
{% endhint %}

#### SDK - Fixes

Improved audio synchronization with [NDI Frame Sync API](broken://pages/2pllbPWFLnfXP7Ls26Vy).

#### NDI Tools

* **A new** [**NDI Router tool for macOS**](/all/using-ndi/ndi-tools/ndi-tools-for-mac/router) has been released.&#x20;

#### NDI Tools - HDR&#x20;

* [NDI Test Patterns](/all/using-ndi/ndi-tools/ndi-tools-for-windows/test-patterns) now supports HDR patterns (macOS and Windows).&#x20;
* [NDI Studio Monitor ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor)now supports displaying HDR content in PQ and HLG (Windows).&#x20;
* [NDI Studio Monitor (Windows)](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) has been enhanced to capture NDI HDR streams.&#x20;
* [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) has received 10-bit HEVC transcoding and HDR pass-through.&#x20;
* [NDI Screen Capture HX (Windows)](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) has received support for HDR screens and 10-bit HEVC.&#x20;
* [NDI Analysis](broken://pages/eEOrR87Gy7wxy6kPitSP) in Frame Checker mode will now output HDR color information if present.&#x20;

#### NDI Tools - More

* [NDI Video Monitor (macOS)](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) now includes new KVM support.&#x20;
* The NDI Launcher app adds a one-click link to extensive online Docs & Guides.&#x20;

#### NDI Tools - Fixes&#x20;

* Reduced latency from [NDI Screen Capture HX (Windows)](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx).&#x20;
* Resolved [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) Local mode issue when handling a source that has multiple machine names.
* [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) has been enhanced to leverage the increased number of encoders supported by NVIDIA GeForce cards (may require NVIDIA driver update).&#x20;
* Resolved an [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) audio driver stability issue.
  {% endupdate %}
  {% endupdates %}


# White Paper

This **White Paper** offers a compressed overview of NDI: its fundamental principles, technological features, protocols, and settings.\
\
It is updated in real-time by the NDI team to reflect the most recent developments to our Core Tech Platform. **The current version of NDI is 6.3**


# Discovery & Registration

### Zero configuration in AV signal distribution <a href="#toc144291436" id="toc144291436"></a>

One of the biggest issues in AV distribution in the IP[^1] world is that equipment is not identifiable by its physical connection. In networking, every connected device needs to have a unique address so another device, hardware, and applications can reach it.&#x20;

However, the network physical connection is dynamic and not related at all to the equipment address. For that reason, in a large network with hundreds (or thousands) of devices with addresses, it becomes difficult to find and interconnect equipment. NDI offers two different options for a zero-configuration discovery and registration: **mDNS** and **Discovery Service**.

[^1]: IP (Internet Protocol) is the communications protocol for the Internet, many wide area networks (WANs) and most local area networks (LANs) that define the rules, formats, and address scheme for exchanging datagrams or packets between a source computer or device and a destination computer or device.


# mDNS

MAC (Media Access Control) address refers to a unique physical address identifying a network node. Sending and receiving video streams across an IP[^1] network requires applications that support video and can discover receiving applications that are looking for video.

NDI resolves host names to IP addresses over the LAN[^2] and does so automatically. When you start an application that sends NDI, the devices that can receive NDI become aware instantaneously. While this is a typical function on almost all networks, there are some cases where it is important to know how this works to properly configure networks utilizing managed data flow protocols.

By default, NDI utilizes [mDNS (multicast Domain Name System)](#user-content-fn-3)[^3] to create the zero-configuration environment for discovery. This service sends an IP multicast message that asks the host to identify itself. The target machine then multicasts a message that includes its own IP address. This multicast is seen by all NDI-receiving machines on the subnet[^4], which then use the information in that message to update their own caches[^5].

These multicast queries are sent to a multicast address, and thus, no single device is required to have global knowledge.

When a service or device sees a query for any service it recognizes, it provides a DNS[^6] response with the information from its cache[^5]. The primary benefit of using mDNS is that it requires little or no administration to set up. Unless the network is specifically configured not to allow mDNS, NDI sources will be discovered. This format works when no infrastructure is present and can span infrastructure failures.

**The mDNS** [**Ethernet**](#user-content-fn-7)[^7] **frame is a** [**multicast UDP packet that broadcasts to**](#user-content-fn-8)[^8]**:**

| [MAC Adress](#user-content-fn-9)[^9] | 01:00:5E:00:00:FB (for IPv4) |
| ------------------------------------ | ---------------------------- |
| IPv4[^10] Address                    | 224.0.0.251                  |
| UDP Port                             | 5353                         |

Choosing the network location type on Windows devices is critical for the successful discovery and registration of NDI. Typically, the first time a Windows machine is connected to a network, a dialog window appears that allows the user to choose the network location type: Private or Public. By default, Windows sets a new network location to Public.

This location is designed to keep machines from being visible and responding to broadcast pings. This location type also affects mDNS responses and keeps NDI video streams from being discovered and registered on the network.

**Network locations should be set to Private for successful discovery and registration of NDI.** The Domain[^11] network location is used for domain networks, such as those at enterprise workplaces. The network administrator controls this type of network location, and it cannot be selected or changed. In this type of configuration, mDNS discovery must be allowed at the domain level. Because mDNS uses a link-local multicast address, its capacity is limited to a single physical or logical LAN[^2].

[^1]: IP (Internet Protocol) is the communications protocol for the Internet, many wide area networks (WANs) and most local area networks (LANs) that define the rules, formats, and address scheme for exchanging datagrams or packets between a source computer or device and a destination computer or device.

[^2]: LAN (Local Area Network) is a network that connects computers and devices in a room, building or group of buildings. LANs are typically deployed in homes, offices, and schools, where users share access to the same server, resources, and data storage. A system of LANs can also be connected to form a WAN (Wide Area Network).

[^3]: Apple’s mDNS is published as a standards track proposal (RFC 6762) <https://tools.ietf.org/html/rfc6762>

[^4]: Subnet (short for subnetwork) refers to a distinct subdivision of an IP network, usually created for performance or security purposes. Subnets typically include the computers, systems, and devices in one location, office, or building, with all nodes sharing the same IP address prefix.

[^5]: Cache refers to a reserved section of computer memory or an independent high-speed storage device used to accelerate access and retrieval of commonly used data.

[^6]: DNS (Doman Name System) is a system used by the Internet and private networks to translate domain names into IP addresses.

[^7]: Ethernet, standardized as IEEE 802.3, refers to a series of LAN (Local Area Network) technologies used to connect computers and other devices to a home or business network.\
    Ethernet is a physical and data link layer networking protocol that supports data transfer rates starting at 10 Mbps, typically over twisted pair cabling, but also fiber optic and coaxial cabling.

[^8]: <https://en.wikipedia.org/wiki/Multicast_DNS>

[^9]:

[^10]: IPv4 (Internet Protocol Version 4) is the fourth and most used version of the Internet Protocol. IPv4 uses a 32-bit IP address scheme for network identification and communication, with each unique IP address expressed as four numbers (between 0 and 255) separated by decimal points.

[^11]: A domain refers to a LAN subnetwork of users, systems, devices, and servers. Domain can also refer to the IP address of a website on the Internet.


# Discovery Server

The NDI Discovery Server is a command-line application available for Windows, macOS, and Linux. It allows you to replace mDNS-based automatic discovery with a centralized registry of NDI sources.

This can be very helpful for installations where you wish to avoid having significant mDNS traffic for a large number of sources. It can also be useful when multicast is not possible or desirable; it is very common for cloud computing services not to allow multicast traffic. When using the Discovery Service, NDI can operate entirely in unicast mode and thus in almost any installation. The Discovery server supports all NDI functionality, including NDI groups. Clients should be configured to connect with the Discovery Service instead of using mDNS to locate sources.

When there is a Discovery server, NDI applications will use both mDNS and the Discovery server to find and receive sources on the local network that are not on machines configured to use discovery.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F2GWseiqRc2wObT1uEuMe%2Fimage.png?alt=media&amp;token=e8a220f3-bd88-41a7-9091-8cbd2ffa52b9" alt=""><figcaption></figcaption></figure>

For senders, if a Discovery Service is specified, then mDNS will not be used; these sources will only be visible to other finders and receivers configured to use the Discovery server.

#### To configure the Discovery Service for NDI clients, **you may use Access Manager (included in the NDI Tools Core Suite)** to enter the IP[^1] address of the Discovery server machine.

**Within NDI version 5, there is full support for redundant NDI Discovery servers.** When configuring a Discovery server, it is possible to specify a comma-delimited list of servers (e.g., “`192.168.10.10, 192.168.10.12`”), and then they will all be used simultaneously. If one of these servers then goes down, as long as one remains active, then all sources will always remain visible, no matter what the others do, then all sources can be seen.

This multiple-server capability can also be used to ensure entirely separate servers to allow sources to be broken into separate groups, which can serve many workflows or security needs.

Once two NDI devices have discovered each other on the network, video can be passed from the sending device to the receiving device. After the compression of the video, the NDI sending device opens a session to the receiving NDI device. At this point, we have two endpoints that consist of an IP address and a port number.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FnAWfdfY9IU8LlsokyJnX%2Fimage.png?alt=media&amp;token=668792d7-1092-4184-9e06-5d75f405853e" alt=""><figcaption></figcaption></figure>

In Windows and MacOS, the Discovery Server addresses are configured in the **Advanced Feature Tab.** On Linux, however, the addresses of the NDI Discovery Servers can be manually added in the NDI configuration file, which is stored in a hidden folder named ".ndi" within the home directory of the effective user. The configuration file is named "ndi-config.v1.json".

Here is the way to manually set up the **Discovery Service** in the configuration file:

```
"networks": { 
      "ips": "", 
      "discovery": "127.0.0.1,127.0.0.1" 
    }, 
```

**NDI Discovery Service to control devices' discoverability.**

As mentioned above, with NDI 5, we enabled support for multiple NDI Discovery Servers. NDI Receivers can now specify a comma-delimited list of Discovery Servers (e.g., "`192.168.25.10, 192.168.25.12`"), and they will all operate simultaneously. Only devices explicitly registered with a Discovery Server will be visible to other clients configured to use that same server.

Moreover, an NDI Discovery Server can be connected to multiple network interfaces and supports multiple subnets.\
\
Using multiple servers and subnets allows sources to be organized into distinct areas. These areas can cater to various workflows and security requirements.

**Here is an example** that explains how multiple Discovery Servers can be used for control device discoverability:

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F2qG5ryhWu2TZ6j9moWrT%2Fimage.png?alt=media&amp;token=66aa4687-8af5-419b-be47-d5c9a7a4a7ae" alt=""><figcaption></figcaption></figure>

Spinning up or shutting down the Discovery Servers with IP Address 192.168.25.243 - 192.168.25.244 - 192.168.25.245 will turn on or off discoverability between the 3 NDI areas.

The example above is related to multiple Discovery Servers in a single subnet.

However, the Discovery Server can be connected and shared between different subnets.

Discovery Servers can be easily deployed on Linux-based virtual machines, and the process of spinning up or shutting down Discovery Servers can be efficiently automated and managed by solutions like Terraform.

{% hint style="success" %}
As of NDI 6.2, the [**Discovery Tool** ](broken://pages/4E0yRhy4TMEitjwX1GpG)provides a GUI to monitor NDI senders and receivers registered to a Discovery Service.
{% endhint %}

[^1]: IP (Internet Protocol) is the communications protocol for the Internet, many wide area networks (WANs) and most local area networks (LANs) that define the rules, formats, and address scheme for exchanging datagrams or packets between a source computer or device and a destination computer or device.


# Manual Connection

One approach to manually interconnect NDI devices is to specify the IP[^1] address of the transmitter in the receiver.

![Screenshot of NDI Access Manager tool](https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F3toT5uYUD7q4dx9ZQs3A%2F2.png?alt=media\&token=08a8f9c0-d6d8-409d-9a96-43fb92197937)

In Windows and MacOS, this can be achieved using the NDI Access Manager in the External Sources feature. Several NDI hardware decoders also support this functionality.

For Linux, the IP addresses of NDI senders can be added manually in the NDI configuration file called "ndi-config.v1.json." This file is in the home directory of the user currently logged in.

Specifying the IP address of an NDI source allows the receiver to receive NDI sources that are in a different subnet[^2] and may not be discoverable by mDNS (Multicast DNS[^3]). This method enables the reception of NDI sources that might be otherwise inaccessible due to network configurations or limitations.

In Linux manual connections can be added in the NDI configuration file located in the home directory of the effective user: "ndi-config.v1.json"

Here is the way to manually set up NDI sources in the configuration file:

`"networks": {`\
`"ips": "192.168.123.200,10.10.123.22,",`\
`"discovery": "",`

[^1]: IP (Internet Protocol) is the communications protocol for the Internet, many wide area networks (WANs) and most local area networks (LANs) that define the rules, formats, and address scheme for exchanging datagrams or packets between a source computer or device and a destination computer or device.

[^2]: Subnet (short for subnetwork) refers to a distinct subdivision of an IP network, usually created for performance or security purposes. Subnets typically include the computers, systems, and devices in one location, office, or building, with all nodes sharing the same IP address prefix.

[^3]: DNS (Doman Name System) is a system used by the Internet and private networks to translate domain names into IP addresses.


# NDI Groups

NDI groups enhance the efficiency and management of NDI-based workflows by providing a structured way to organize and control the visibility and access of NDI sources and destinations within a network.

#### *NDI devices support two different kinds of Groups: **Send** and **Receive**.*

A device can be part of different Groups, some Groups only in the Send or Receive mode:

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FJW9a3AT2gpawLIvJfzmQ%2Fimage.png?alt=media&amp;token=87cad439-a883-4da6-9bb4-775399add1da" alt=""><figcaption></figcaption></figure>

#### Scenarios

In this scenario, **NDI Device 01** is sending discovery information to Groups 02 and 04. Devices part of the **Receive Groups 02** and **04** can discover and receive NDI streams from **Device 01.**

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FdfmP6Mw5AcqsM55zNjQ0%2Fimage.png?alt=media&amp;token=9f332fe8-4eb4-4c58-b654-811a82feea6e" alt=""><figcaption></figcaption></figure>

**NDI Device 02** is sending discovery information in Groups: Public, 01, 02, and 04.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FQfoYiMT4o7KAHRUpm8Le%2Fimmagine.png?alt=media&amp;token=7c96fe9e-5a5a-419a-940e-542dcc0984f6" alt=""><figcaption></figcaption></figure>

**NDI Device 03** is sending discovery information in Groups: Public and 03.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FzE0D3ethrnB1JEUUyyQE%2Fimage.png?alt=media&amp;token=e5a3d77a-b419-449b-a608-81fee54f1ce0" alt=""><figcaption></figcaption></figure>

**There are different ways to define Groups in NDI Devices:**

![Screenshot of NDI Access Manager tool](https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FiiAZm8Ss96uIjSygo7BT%2F6.png?alt=media\&token=f5e0d240-707c-44da-9262-07786ea19f37)

In MS Windows and MacOS, Groups are defined in the NDI Access Manager, which is part of the free NDI Tools:

The Groups string for each Send and Receive operation must not exceed 248 bytes in length, which means that the total length of the combined Group names should not exceed 248 characters.

In Linux, NDI Groups can be defined in the NDI configuration file located in the home directory of the effective user: "ndi-config.v1.json"

Here is the way to configure Groups in the configuration file:

`},`\
`"groups": {`\
`"send": "Public",`\
`"recv": "Public,Group 01,Group 02"`\
`},`

*Hardware NDI Devices must support NDI Groups to be compliant with the NDI standard specifications.*

Here are some examples of hardware devices with NDI Groups support:

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FJeGvAHHD1CfeoSLFpS2o%2Fimage.png?alt=media&amp;token=4f779bd1-8c28-4549-b04d-583f0b8d0438" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FCt0BbBbvP1juBKYt4DZM%2Fimage.png?alt=media&amp;token=1dd9d99e-14d4-47fa-b275-cc683b9a8e59" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FHtqE4lT0slhLFyJpiqYk%2Fimage.png?alt=media&amp;token=a86172b2-4faf-428d-8fde-d626011691ea" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
NDI Group names must match exactly, including their length and any interior or trailing spaces. However, matching is not case-sensitive, and leading spaces are ignored. See the table below for examples.
{% endhint %}

| Group name entered | How it is handled                                                                                          |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| `Group 1`          | Remains `Group 1`                                                                                          |
| `Group 1`          | The trailing space is preserved, making this different from `Group 1`                                      |
| `Group 1`          | The leading space is removed, but the trailing space remains. It therefore matches `Group 1` not `Group 1` |
| `group 1`          | Matches `Group 1` because capitalization is ignored                                                        |
| `Group 1`          | Does not match `Group 1` because the additional interior space is preserved                                |


# NDI Protocols

### Reliable UDP – NDI 5

In NDI version 5 the default communication mechanism is a Reliable UDP[^1] protocol that represents the state-of-the-art communication protocol that is implemented by building upon all the experience we have seen in the real world with NDI across a massive variety of different installations

Reliable UDP, also known as RUDP, is a transport protocol that combines the advantages of UDP's low latency and simplicity with the reliability of TCP (Transmission Control Protocol). It is designed specifically for real-time multimedia applications, where maintaining the timeliness of data is crucial.

In the context of NDI, Reliable UDP is employed to ensure that video and audio streams are delivered reliably and with minimal delay. It achieves this by implementing several mechanisms:

Sequencing: Reliable UDP assigns a sequence number to each packet it sends. This allows the receiving end to detect missing or out-of-order packets and request retransmissions if necessary.

Retransmissions: If a packet is lost or arrives out of order, the receiving end can request a retransmission of the missing packet(s) using the sequence number information.

Flow control: Reliable UDP incorporates flow control mechanisms to manage the rate of data transmission. This prevents overwhelming the network or the receiving device with more data than it can handle, ensuring a smoother streaming experience.

Congestion control: RUDP also includes congestion control algorithms to prevent network congestion and avoid unnecessary packet loss. It dynamically adjusts the transmission rate based on network conditions, maintaining optimal throughput without overwhelming the network.

### Multipath TCP – NDI 4

This protocol permits transport across multiple NICs and all network paths, it is intended to use hardware-accelerated network adapters with adaptive bandwidth sharing across NICs.

Multipath TCP[^2] is a transmission protocol that offers advantages such as maximizing throughput, optimizing resource usage, and enhancing network redundancy. It can seamlessly integrate multiple network pathways, including wireless and mobile networks. It is especially efficient when used with NDI equipment that utilizes multiple Gigabit connections to exchange a large number of NDI streams.

However, in scenarios where 10Gbit interfaces are connected with 1Gbit interfaces, Multipath TCP's efficiency is compromised. This is primarily due to network switches being unable to effectively manage network congestion in such situations. As a result, the protocol may not perform optimally in these specific network configurations.

### UDP with Forward Error Correction – NDI 3

This alternative protocol to TCP[^2] is used when reliable delivery of data [packets ](#user-content-fn-3)[^3]is not required. UDP[^1] is typically used for applications where timeliness is of higher priority than accuracy, such as streaming media, teleconferencing, and voice-over-IP (VoIP). Forward error correction (FEC) is a method of obtaining error control in data transmission in which the source (transmitter) sends redundant data to the destination (receiver).

UDP (User Datagram Protocol) with Forward Error Correction (FEC) is a beneficial approach when the network is prone to errors or not entirely reliable. It provides a solution for error correction when data packets get lost or corrupted during transmission.

However, it's important to note that using UDP with FEC requires additional computational processing on the receiver side. The receiver needs to implement algorithms and mechanisms to manage the error correction process. This involves decoding the received data and applying error correction techniques to recover any lost or corrupted packets.

### Single TCP – NDI 1

This network communications protocol enables two host systems to establish a connection, exchange data packets[^3], and ensure data is delivered intact to the correct destination. TCP[^4] is typically grouped with IP (Internet Protocol) and is collectively known as TCP/IP.

Single-TCP is supported on all NDI versions. While the other transmission modes are likely to perform better, **this mode offers baseline compatibility for all NDI clients**.

[^1]: UDP (User Datagram Protocol) is an alternative protocol to TCP that is used when reliable delivery of data packets is not required. UDP is typically used for applications where timeliness is of higher priority than accuracy, such as streaming media, teleconferencing, and voice-over IP (VoIP).

[^2]: TCP (Transmission Control Protocol) is a network communications protocol that enables two host systems to establish a connection and exchange data packets, ensuring that data is delivered to the correct destination. TCP is typically grouped with IP (Internet Protocol) and is known collectively as TCP/IP.

[^3]: A packet, also known as a frame or datagram, is a unit of data transmitted over a packet-switched network, such as a LAN, WAN, or the Internet.

[^4]: TCP (Transmission Control Protocol) is a network communications protocol that enables two host systems to establish a connection and exchange data packets, ensuring that data is delivered to the correct destination.


# NDI Related Network Ports

NDI uses both TCP and UDP ports for handling inbound and outbound traffic. For example, ports in the range of 5960 and up are used for both TCP and UDP connections, allowing for efficient data transmission and reception.

<table data-full-width="true"><thead><tr><th>Port</th><th>Type</th><th>Use</th></tr></thead><tbody><tr><td>5353</td><td><a data-footnote-ref href="#user-content-fn-1">UDP</a></td><td>This is the standard <a data-footnote-ref href="#user-content-fn-2">port</a> used for mDNS communication and is always used for multicast sending of the current sources onto the network.</td></tr><tr><td>5959</td><td><a data-footnote-ref href="#user-content-fn-3">TCP</a></td><td>NDI Discovery Server is an optional method to have NDI devices perform discovery. This can be beneficial in large configurations when you need to connect NDI devices between <a data-footnote-ref href="#user-content-fn-4">subnets</a> or if mDNS is blocked.</td></tr><tr><td>5960</td><td><a data-footnote-ref href="#user-content-fn-3">TCP</a></td><td>This is a TCP <a data-footnote-ref href="#user-content-fn-2">port</a> used for remote sources to query this machine and discover all the sources running on it. This is used, for instance, when a machine is added by an IP address in the access manager so that from an IP address alone, all the sources currently running on that machine can be discovered automatically.</td></tr><tr><td>5961 and up</td><td><a data-footnote-ref href="#user-content-fn-3">TCP</a></td><td>These are the base TCP connections used for each NDI stream. For each current connection, at least one <a data-footnote-ref href="#user-content-fn-2">port</a> number will be used in this range.</td></tr><tr><td>5960 and up</td><td><a data-footnote-ref href="#user-content-fn-1">UDP</a></td><td>In version 5 and above, when using Reliable UDP connections, it will use a very small number of ports in the range of 5960 for UDP. These <a data-footnote-ref href="#user-content-fn-2">port</a> numbers are shared with the TCP connections. Because connection sharing is used in this mode, the number of ports required is very limited and only one port is needed per NDI process running and not one port per NDI connection.</td></tr><tr><td>6960 and up</td><td>TCP/UDP</td><td>When using multi-TCP or UDP receiving, at least one <a data-footnote-ref href="#user-content-fn-2">port</a> number in this range will be used for each connection.</td></tr><tr><td>7960 and up</td><td>TCP/UDP</td><td>When using multi-TCP, unicast UDP, or multicast UDP sending, at least one <a data-footnote-ref href="#user-content-fn-2">port</a> number in this range will be used for each connection.</td></tr><tr><td>Ephemeral</td><td><a data-footnote-ref href="#user-content-fn-3">TCP</a></td><td>Legacy to NDI v1 - The current versions (4.6 and later) no longer use any ports in the ephemeral <a data-footnote-ref href="#user-content-fn-2">port</a> range.</td></tr></tbody></table>

[^1]: UDP (User Datagram Protocol) is an alternative protocol to TCP that is used when reliable delivery of data packets is not required. UDP is typically used for applications where timeliness is of higher priority than accuracy, such as streaming media, teleconferencing, and voice-over IP (VoIP).

[^2]: A port is a communications channel for data transmission to and from a computer on a network. Each port is identified by a 16-bit number between 0 and 65535, with each process, application, or service using a specific port, or multiple ports, for data transmission. Port can also refer to a hardware socket used to physically connect a device or device cable to your computer or network.

[^3]: TCP (Transmission Control Protocol) is a network communications protocol that enables two host systems to establish a connection and exchange data packets, ensuring that data is delivered to the correct destination. TCP is typically grouped with IP (Internet Protocol) and is known collectively as TCP/IP.

[^4]: Subnet (short for subnetwork) refers to a distinct subdivision of an IP network, usually created for performance or security purposes. Subnets typically include the computers, systems, and devices in one location, office, or building, with all nodes sharing the same IP address prefix.


# Getting video across the network

Video, just like voice data in VoIP systems, is a very demanding data stream and will immediately expose a weakness in a network. The network must support multiple video, audio, and data streams in a reliable, synchronized manner without disruption. When delay, packet loss, and jitter reach thresholds where the video is impacted visually, the usefulness of that video drops to zero. It is important to understand the complexities of video in IP data networks to mitigate these factors.

Networks that are designed to move NDI video streams should be thought of as being primarily utilized for video. IP networks are, by their very nature, “best effort delivery” systems and were originally developed for the transport of data. By contrast to video, data services can function happily with packet retransmissions, lost packets, and even packets arriving out of order.

Video streams, while still composed of data, are much more rigid in their requirements. With the use of modern networking equipment and proper configuration, video can move across networks whilst still obtaining low latency, frame accuracy, and high-quality requirements necessary for live video production.


# Network Layout

NDI is designed for use with standard consumer off-the-shelf (COTS) network infrastructure devices. Looking closely at the network topology and configuration will help to ensure that the maximum possible bandwidth is available.

When selecting a network switch, it is important to check the throughput speeds. Ensure that each port is full duplex (i.e., bi-directional communication) and that each port's upstream and downstream data speeds are at least 1 Gigabit per second (Gbps). In some cases, it is best to force the ports on managed switches to utilize 1 Gbps in contrast with Auto-Negotiation. The use of Auto-Negotiation can sometimes (mostly because non fully compatible Network Interfaces) result in 100Mb connections or even lower, which does not renegotiate until the port is flooded with traffic for some time. Also, poor termination of RJ-45 connectors can impact Auto-Negotiation.

The same suggestion applies when considering network switches that include 10 Gigabit per second ports. Many switches manufactured at the time of writing may share bandwidth across the backplane of multiple ports. Since these ports are generally reserved for linking to other switches, the specification for throughput may be listed differently than the Gigabit port section in the product documentation.

It is best to use switches from the same manufacturer, or ideally, the same model of switch, throughout a single subnet. This will simplify configuration and lessen the chances of compatibility and configuration issues.


# Bandwidth

NDI operates most efficiently in a dedicated network with high bandwidth and high availability. This contrasts with unmanaged environments such as the public Internet or networks where video rides along with data without priority.

Gigabit (1000 Mbps[^1]) networks are essential in production workflows. A typical NDI stream consisting of 1080 60P video yields a data rate up to 150 Mbps per stream. This extremely efficient stream is designed to have very low latency and allows multiple streams to be stacked together on a single Gigabit network. Even so, a production environment may require more capacity based on a simultaneous number of NDI streams required.

The following tables are intended to calculate bandwidth needs based on video resolutions and frame rates. It should be noted, however, that NDI is not deterministic. The bandwidth needed for NDI should be based on the determination of the [average utilization required](#user-content-fn-2)[^2].

{% hint style="info" %}
**NDI HX1** is a legacy format that will eventually be discontinued. As such, there are not reference tables for it. Contact our [technical support team](mailto:support@ndi.video) if you have any questions.
{% endhint %}

[^1]: Mbps (Megabits per second) is a unit of measurement for data transfer speed, with one megabit equal to one million bits. Network transmissions are commonly measured in Mbps.

[^2]: Bandwidth numbers are given as reference and are subject to change


# NDI High Bandwidth based on SpeedHQ2 (8bit 4:2:2)

<table data-full-width="true"><thead><tr><th>Resolution Framerate</th><th>Maximum Bandwidth Mbps</th><th>Proxy Resolution Framerate</th><th>Maximum Bandwidth Mbps</th></tr></thead><tbody><tr><td>720 50p</td><td>96.94</td><td>640x360 60p</td><td>65.83</td></tr><tr><td>720 60p</td><td>105.83</td><td>640x360 60p</td><td>65.83</td></tr><tr><td>1080 50i</td><td>102.50</td><td>640x360 30p</td><td>18.75</td></tr><tr><td>1080 60i</td><td>112.50</td><td>640x360 30p</td><td>18.75</td></tr><tr><td>1080 50p</td><td>125.59</td><td>640x360 60p</td><td>65.83</td></tr><tr><td>1080 60p</td><td>132.14</td><td>640x360 60p</td><td>65.83</td></tr><tr><td>3840x2160 50i</td><td>158.33</td><td>640x360 30p</td><td>18.75</td></tr><tr><td>3840x2160 60i</td><td>171.42</td><td>640x360 30p</td><td>18.75</td></tr><tr><td>3840x2160 50p</td><td>223.80</td><td>640x360 60p</td><td>65.83</td></tr><tr><td>3840x2160 60p</td><td>249.99</td><td>640x360 60p</td><td>65.83</td></tr></tbody></table>


# NDI High Bandwidth based on SpeedHQ7 (8bit 4:2:2:4)

**Includes Alpha Channel**

<table data-full-width="true"><thead><tr><th>Resolution Framerate</th><th>Maximum Bandwidth Mbps</th><th>Proxy Resolution Framerate</th><th>Maximum Bandwidth Mbps</th></tr></thead><tbody><tr><td>720 50p</td><td>121.18</td><td>640x360 60p</td><td>82.29</td></tr><tr><td>720 60p</td><td>132.29</td><td>640x360 60p</td><td>82.29</td></tr><tr><td>1080 50i</td><td>128.12</td><td>640x360 30p</td><td>23.43</td></tr><tr><td>1080 60i</td><td>140.62</td><td>640x360 30p</td><td>23.43</td></tr><tr><td>1080 50p</td><td>156.99</td><td>640x360 60p</td><td>82.29</td></tr><tr><td>1080 60p</td><td>165.17</td><td>640x360 60p</td><td>82.29</td></tr><tr><td>3840x2160 50i</td><td>197.91</td><td>640x360 30p</td><td>23.43</td></tr><tr><td>3840x2160 60i</td><td>214.28</td><td>640x360 30p</td><td>23.43</td></tr><tr><td>3840x2160 50p</td><td>279.76</td><td>640x360 60p</td><td>82.29</td></tr><tr><td>3840x2160 60p</td><td>312.49</td><td>640x360 60p</td><td>82.29</td></tr></tbody></table>

NDI High Bandwidth is I-frame only.

NDI encoders offer a proxy stream with lower resolution and higher compression, and applications can use the proxy stream for preview, reducing network usage and processing requirements. &#x20;


# NDI HX2 h.264 (8bit 4:2:0)

<table data-full-width="true"><thead><tr><th>Resolution Framerate</th><th>Maximum Bandwidth Mbps</th><th>Proxy Resolution Framerate</th><th>Maximum Bandwidth Mbps</th></tr></thead><tbody><tr><td>720 50p</td><td>9.11</td><td>640x360 60p</td><td>3.99</td></tr><tr><td>720 60p</td><td>9.99</td><td>640x360 60p</td><td>6.00</td></tr><tr><td>1080 50i</td><td>9.66</td><td>640x360 30p</td><td>3.99</td></tr><tr><td>1080 60i</td><td>10.59</td><td>640x360 30p</td><td>3.99</td></tr><tr><td>1080 50p</td><td>14.20</td><td>640x360 60p</td><td>6.00</td></tr><tr><td>1080 60p</td><td>15.99</td><td>640x360 60p</td><td>6.00</td></tr><tr><td>3840x2160 50i</td><td>19.11</td><td>640x360 30p</td><td>3.99</td></tr><tr><td>3840x2160 60i</td><td>20.66</td><td>640x360 30p</td><td>3.99</td></tr><tr><td>3840x2160 50p</td><td>26.88</td><td>640x360 60p</td><td>6.00</td></tr><tr><td>3840x2160 60p</td><td>30.00</td><td>640x360 60p</td><td>6.00</td></tr></tbody></table>


# NDI HX2 h.265 (8bit 4:2:0)

<table data-full-width="true"><thead><tr><th>Resolution Framerate</th><th>Maximum Bandwidth Mbps</th><th>Proxy Resolution Framerate</th><th>Maximum Bandwidth Mbps</th></tr></thead><tbody><tr><td>720 50p</td><td>6.33</td><td>640x360 60p</td><td>3.00</td></tr><tr><td>720 60p</td><td>6.99</td><td>640x360 60p</td><td>3.99</td></tr><tr><td>1080 50i</td><td>6.75</td><td>640x360 30p</td><td>3.00</td></tr><tr><td>1080 60i</td><td>7.39</td><td>640x360 30p</td><td>3.00</td></tr><tr><td>1080 50p</td><td>9.80</td><td>640x360 60p</td><td>3.99</td></tr><tr><td>1080 60p</td><td>10.99</td><td>640x360 60p</td><td>3.99</td></tr><tr><td>3840x2160 50i</td><td>13.22</td><td>640x360 30p</td><td>3.00</td></tr><tr><td>3840x2160 60i</td><td>14.33</td><td>640x360 30p</td><td>3.00</td></tr><tr><td>3840x2160 50p</td><td>18.77</td><td>640x360 60p</td><td>3.99</td></tr><tr><td>3840x2160 60p</td><td>21.00</td><td>640x360 60p</td><td>3.99</td></tr></tbody></table>


# NDI HX3 h.264 (8bit 4:2:0)

<table data-full-width="true"><thead><tr><th>Resolution Framerate</th><th>Maximum Bandwidth Mbps</th><th>Proxy Resolution Framerate</th><th>Maximum Bandwidth Mbps</th></tr></thead><tbody><tr><td>1080 50i</td><td>26.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>1080 60i</td><td>31.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>1080 50p</td><td>52.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>1080 60p</td><td>62.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>3840x2160 50p</td><td>92.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>3840x2160 60p</td><td>110.00</td><td>640x360 25/30p</td><td>3.00</td></tr></tbody></table>


# NDI HX3 h.265 (8bit 4:2:0)

<table data-full-width="true"><thead><tr><th>Resolution Framerate</th><th>Maximum Bandwidth Mbps</th><th>Proxy Resolution Framerate</th><th>Maximum Bandwidth Mbps</th></tr></thead><tbody><tr><td>1080 50i</td><td>20.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>1080 60i</td><td>25.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>1080 50p</td><td>41.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>1080 60p</td><td>50.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>3840x2160 50p</td><td>70.00</td><td>640x360 25/30p</td><td>3.00</td></tr><tr><td>3840x2160 60p</td><td>84.00</td><td>640x360 25/30p</td><td>3.00</td></tr></tbody></table>

**NDI HX3 stream specifications:**

GOP size must be 20 frames\
Glass-to-Glass latency, less than 100ms\
I Frame request response, less than 80ms


# NDI Proxy and bandwidth optimization

By default, an NDI Sender has the capability to generate two types of streams: a full-quality stream and a proxy stream. A receiver can readily activate the [**proxy stream**](https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-recv). A simple way to visualize a proxy stream is by utilizing NDI Studio Monitor and enabling the Low Bandwidth mode within the Video settings menu.

The Proxy stream serves as a means for an application to enhance the efficiency of NDI distribution across the network. For instance, an NDI-based Video Mixer can leverage the proxy stream for sources that are intended for use in a preview monitor rather than an actual output. Then, when a source is transitioned to an output, the application can seamlessly switch from the proxy stream to the full bandwidth stream.

This approach empowers receivers to effectively manage a more significant number of NDI sources while utilizing less network bandwidth.


# Network Interface Settings

NDI is designed to enable successful video transport using the default configuration of network interface drivers; however, most recent network interface drivers do support the configuration of advanced properties that can help optimize NDI transmission.

Consider the following adjustments but note that adjusting individual adapters can significantly affect performance and reliability positively and negatively. It is important to consider testing performance with a network analyzer before and after each setting change. The following adjustments are intended to help; however, performance will depend on network and usage (names and available settings vary between vendors, adapter models, and even between different driver versions):

### Speed and Duplex

This setting allows for the selection of the desired speed and duplex of the network adapter. Usually, this is set to Auto Negotiation. If supported, this setting should be set to 1 Gbps Full Duplex or higher to ensure the maximum available throughput.

### Energy Efficient Ethernet

When enabled, this allows the adapter to engage power-saving features while keeping connections active. This technology uses the standard IEEE 802.3az to allow for less power during periods of low data activity. Adapters that utilize the IEEE 802.3az standard should have no impact on the performance of NDI; however, some integrated circuits exist that were developed before the standard was finalized or do not adhere to the standard at all. In these cases, it is best to disable the energy efficiency while determining the best network optimization.


# NIC Selection

Starting in NDI version 5, this lists all the network adapters that will be used for network transmission.

One or more NICs can be used to transmit and receive video and audio data. This capability can be used to ensure that the NDI primary stream data remains on a particular group of network adapters, for instance, allowing you to ensure that dedicated audio is on a separate network card from the NDI video. It is generally preferred that you let NDI select the network adapters automatically, which can smartly select which to use and how to choose the ones that result in the best bandwidth.

While in some modes, NDI can automatically balance bandwidth across multiple NICs, it usually is better for you to use NIC teaming at a machine configuration level which can result in much better performance than what is possible in software. If this setting is misconfigured to specify NICs that might not exist, then NDI might fail to function correctly.

Also, please note that the operation of computer systems that are separately on entirely different networks with different IP address ranges is often not handled robustly by the operating system, and NDI might not fully function in these configurations.

![NIC Selection in configuration is part of NDI Access Manager (Windows).](https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FsAgetemOnR66YjWtPbx0%2F10.png?alt=media\&token=1a1ce7a8-81a3-451b-af02-82c848c9b15f)

In MacOS and Linux, the NIC Selection can be manually added in the NDI configuration file located in the home directory of the effective user: "ndi-config.v1.json"

Here is the way to manually setup NIC Selection in the configuration file:

`},`\
&#x20;   `"adapters": {`\
&#x20;     `"allowed": [`\
&#x20;       `"192.168.30.8,10.10.122.123"`\
&#x20;     `]`

Using the NIC selection, in combination with the Discovery Server, is ultimately the best solution for controlling the NDI network.

{% hint style="info" %}
You might need to enable hidden files on Mac. Click \[CMD SHIFT .]
{% endhint %}

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FCUBaDdJ4y9hqW9FmOtOa%2Fimage.png?alt=media&amp;token=3952a8b2-8c9f-44b2-a366-2a6a1fba95be" alt=""><figcaption></figcaption></figure>

Here are additional steps operators can take to help direct NDI traffic through a preferred NIC:

1. Access Manager: While Access Manager sets preferences, combining it with the following methods can give the selection more weight.
2. NIC Metrics: Adjust the metrics for each NIC in the network settings. Lower metrics will prioritize that NIC for traffic.
3. VLANs can assist with managing NIC traffic in the following ways:
   1. Traffic Segmentation: VLANs segment network traffic, ensuring that specific types of traffic are isolated and routed through the desired NIC.
   2. Improved Control: By assigning different VLANs to different NICs, you can control which NIC handles specific traffic types. This can be particularly useful for separating NDI traffic from other network traffic.
   3. Enhanced Security: VLANs can improve security by isolating sensitive traffic and reducing the risk of unauthorized access.
   4. Simplified Management: VLANs can simplify network management by allowing you to configure and manage traffic routing more efficiently.
4. Firewall Rules: You can use firewall rules to block NDI traffic on the NIC you don't want to use. This can force the traffic to go through the preferred NIC.
5. Set Up a Discovery Server: Configuring a Discovery Server on the network you want to use for NDI can help keep the traffic on that subnet. If deploying multiple redundant discovery servers, ensure that all discovery servers reside on the desired subnet.


# Encoding and Decoding

### SpeedHQ Compression

NDI uses compression to enable the transmission of many video streams across existing infrastructure, specifically discrete cosine transform (DCT), which converts video signals into elementary frequency components. This method of compression is commonly used in encoding formats and mezzanine codecs within the industry.

One of the most efficient codecs in existence, NDI achieves significantly better compression than many codecs that have been accepted for professional broadcast use. On a typical, modern Intel-based i7 processor, the codec can compress a video stream to the following benchmarks:

**The NDI codec's peak signal-to-noise ratio (PSNR) exceeds 70dB for typical video content.**

Uniquely and importantly, NDI is the first ever codec to provide multi-generational stability.\
This means there is no further loss once a video signal is compressed. As a practical example, generation 2 and generation 1000 of a decode-to-encode sequence would be identical.

The NDI codec is designed to run very fast and is largely implemented in hand-written assembly to ensure that the process of compressing video frames occurs as quickly as possible. Latency is both a factor of the network connection and the endpoint products. NDI has a technical latency of 16 video scan lines, although in practice, most implementations would be one field of latency. Hardware implementations can provide full end-to-end latency of within 8 scan lines.

### NDI HX

NDI is available in some devices and applications using a different compression codec than NDI High Bandwidth. This format is known as NDI HX. Devices using this NDI format will be labeled with the HX moniker. HX offers similar video quality at a much lower bit rate, which can be useful in contexts with limited bandwidth, like Fast Ethernet[^1] networks, Wi-Fi, or WAN[^2] connections.

NDI HX is commonly found in hardware devices, like PTZ cameras and mobile phones, but it is possible to have NDI HX in software applications as well. Software applications using NDI HX will leverage the GPU on the computer for enhanced encoding performance. For this reason, having a good GPU on the system is an advantage.

**There are two variations of NDI HX: NDI HX and NDI HX3**; both can be decoded by software applications thanks to the codec provided by the NDI Tools.

[^1]: Ethernet, standardized as IEEE 802.3, refers to a series of LAN (Local Area Network) technologies used to connect computers and other devices to a home or business network.\
    Ethernet is a physical and data link layer networking protocol that supports data transfer rates starting at 10 Mbps, typically over twisted pair cabling, but also fiber optic and coaxial cabling.

[^2]: WAN (Wide Area Network) is a network that spans a relatively broad geographical area, such as a state, region, or nation. WANs typically connect multiple smaller networks, such as LANs (Local Area Network) and MANs (Metropolitan Area Network). The Internet is an example of a WAN.


# Multicast

NDI supports multicast-based video sources using UDP[^1] with forward error correction. Multicasting allows a single NDI source to be delivered to multiple receivers by replicating the NDI packets from the sender to any number of receivers.&#x20;

{% hint style="warning" %}
Using multicast on a network that is not configured correctly can produce undesirable results and cripple network performance. For this reason, multicast sending is disabled by default.
{% endhint %}

For successful multicasting, IGMP[^2] is mandatory. IGMP allows the receiving NDI systems to request access to the sender. Without IGMP querying and snooping, Multicast traffic is treated the same as broadcast transmission, resulting in packet forwarding to all ports on the network. With IGMP snooping, multicast NDI traffic is forwarded only to the receivers that subscribe to the multicast NDI stream.

NDI subscribes to a multicast group and will unsubscribe when that stream is no longer needed. A routing querier on the network handles the management of multicast subscriptions.\
If multicast is enabled on the sender, the receiver is going to prioritize multicast receive over unicast.

While video and audio data are delivered to the network via multicast delivery, each receiver also connects to the sender via a unicast TCP connection for bi-directional communication of metadata (e.g., PTZ control, tally, etc.)

Basic multicast settings can be enabled in the NDI Access Manager on Windows and Mac machines.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FwCkfO8dk6dIFavPhqGU1%2Fimage.png?alt=media&amp;token=e449ca40-a6dc-4e63-8f5b-e620f1f6f929" alt=""><figcaption><p>Screenshot of NDI Access Manager Tool</p></figcaption></figure>

In Linux, Multicast can be configured in the NDI configuration file located in the home directory of the effective user: "ndi-config.v1.json"

Here is the way to set up Multicast in the configuration file:

```xml
},
    "multicast": {
      "send": {
        "ttl": 1,
        "enable": true,
        "netmask": "255.255.0.0",
        "netprefix": "239.255.0.0"
      }
```

When multicast receiving is enabled, and a sender is available in the same local network, the receiver can negotiate for a multicast stream to be sent. If the sender is not on the same local network, this negotiation does not occur (since it could lead to a multicast stream being sent but never able to arrive at the receiver).

Suppose the network is correctly configured and can ensure a multicast stream to route reliably from a different network to the receiver’s local network. In that case, it is possible to specify the sender’s subnet in the “subnets” setting of the\
"ndi-config.v1.json" to allow multicast negotiation to occur.

```
"multicast": {
  "recv": {
   "enable": true,
   "subnets": [ "10.28.5.0/24", "10.28.4.0/24" ]
  }
}
```

\
These settings pertain to the multicast NDI setting on this machine. The first setting determines whether multicast sending is enabled or not.

By default, multicast sending is disabled. Next is the IP address prefix and mask. In this example, multicast IP addresses will be chosen in the range `239.255.0.0 - 239.255.255.255`. NDI will attempt to use different multicast addresses to ensure that the streams can be filtered efficiently by the network adapter.

**NDI senders need a range of multicast addresses available.**

The TTL value controls how many “hops” the multicast sending traffic will take, allowing it to move outside the local network.

\ <br>

&#x20;

[^1]: UDP (User Datagram Protocol) is an alternative protocol to TCP that is used when reliable delivery of data packets is not required.

[^2]: Internet Group Management Protocol is the protocol used in IP multicasting that allows a host to report its multicast group membership to networked routers in order to receive data, messages, or content addressed to the designated multicast group.


# NDI Administrative Settings

In NDI, administrative settings can be used to limit the rights of almost all NDI tools and also enable NDI settings to be specified by a system administrator without any ability for a user to override them. Here is an overview of these settings and how a system administrator can set them to configure specific machine settings.

The NDI configuration settings are documented in the [Advanced SDK](https://ndi.video/advanced) documentation, and we refer to that to get the full description of each setting.

If any registry key value is missing, it will use the global configuration file on the system, which NDI Access Manager normally configures.

<table data-full-width="true"><thead><tr><th width="331">Registry Key  (all under HKLM)</th><th width="178">Registry Value</th><th width="113">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>SOFTWARE/NDI</strong></td><td>MachineName</td><td>String</td><td>A replacement for the local machine name.</td></tr><tr><td><strong>SOFTWARE/NDI/Networks</strong></td><td>Discovery Service</td><td>String</td><td>One or more discovery servers to use. Comma-separated.</td></tr><tr><td><strong>SOFTWARE/NDI/Networks</strong></td><td>IPs</td><td>String</td><td>Comma-separated list of additional NDI Source Ips.</td></tr><tr><td><strong>SOFTWARE\NDI\Adapters</strong></td><td>Allowed</td><td>String</td><td>Comma-separated list of local NIC IP addresses that NDI will attempt to use.</td></tr><tr><td><strong>SOFTWARE\NDI\Groups</strong></td><td>Receive</td><td>String</td><td>Comma-separated list of NDI groups that any sources discovered (finder and receiver) will be within.</td></tr><tr><td><strong>SOFTWARE\NDI\Multicast\Send</strong></td><td>Mode</td><td>DWORD</td><td>1 when Multicast sending is enabled.</td></tr><tr><td><strong>SOFTWARE\NDI\Multicast\Send</strong> </td><td>NetPrefix </td><td>String </td><td>The prefix for the IP address range that will be used. </td></tr><tr><td><strong>SOFTWARE\NDI\Multicast\Send</strong> </td><td>NetMask</td><td>String</td><td>The network mask for multicast sending. </td></tr><tr><td><strong>SOFTWARE\NDI\Multicast\Send</strong> </td><td>TTL </td><td>DWORD </td><td>The network <a data-footnote-ref href="#user-content-fn-1">TTL</a> for multicast sending. </td></tr><tr><td><strong>SOFTWARE\NDI\Multicast\Receive</strong> </td><td>Mode</td><td>DWORD </td><td>1 when multicast receiving is enabled. </td></tr><tr><td><strong>SOFTWARE\NDI\Unicast\Send</strong> </td><td>Mode </td><td>DWORD </td><td>1 when sending over <a data-footnote-ref href="#user-content-fn-2">UDP</a> mode  is enabled </td></tr><tr><td><strong>SOFTWARE\NDI\Unicast\Receive</strong> </td><td>Mode</td><td>DWORD</td><td>1 when receiving over UDP mode is enabled. </td></tr><tr><td><strong>SOFTWARE\NDI\TCP\Send</strong> </td><td>Mode </td><td>DWORD </td><td>1 when sending over Multi-<a data-footnote-ref href="#user-content-fn-3">TCP</a> is enabled. </td></tr><tr><td><strong>SOFTWARE\NDI\TCP\Receive</strong> </td><td>Mode</td><td>DWORD</td><td>1 when receiving over Multi-TCP is enabled. </td></tr><tr><td><strong>SOFTWARE\NDI\RUDP\Send</strong> </td><td>Mode </td><td>DWORD </td><td>1 when sending over Reliable UDP is enabled.</td></tr><tr><td><strong>SOFTWARE\NDI\RUDP\Receive</strong> </td><td>Mode</td><td>DWORD</td><td>1 when receiving over Reliable UDP is enabled. </td></tr></tbody></table>

***

### **Tools Settings**

All NDI Tools settings are stored under the registry location  `HKEY_LOCAL_MACHINE\SOFTWARE\NDI\Pemissions` and are of type DWORD. When set to `1`, they indicate that a feature is allowed, and when they are set to `0,` that feature is disallowed.

<table data-full-width="true"><thead><tr><th width="305">Key name</th><th>Description</th></tr></thead><tbody><tr><td><strong>app.studiomonitor</strong> </td><td>Is Studio Monitor allowed to be run on this machine</td></tr><tr><td><strong>app.studiomonitor.web</strong> </td><td>Is the web server within studio monitor allowed to be run on this </td></tr><tr><td><strong>app.webcamera</strong> </td><td>Is the webcam tool allowed to be run on this machine? </td></tr><tr><td><strong>app.scanconverterhx</strong> </td><td>Is Screen Capture HX allowed to be run on this machine. </td></tr><tr><td><strong>app.scanconverter</strong> </td><td>Is Screen capture allowed to be run on this machine. </td></tr><tr><td><strong>app.scanconverter.kvm</strong> </td><td>Is the KVM functionality of Screen Capture allowed to be run on this machine.</td></tr><tr><td><strong>app.remote</strong> </td><td>Is NDI remote allowed to be run on this machine?</td></tr><tr><td><strong>app.remote.incoming</strong> </td><td>Are incoming NDI remote connections allowed on this machine, when this is disabled, the machine can only provide links that others can connect to. </td></tr><tr><td><strong>app.vlc.video</strong> </td><td>Is VLC video output enabled on this machine? </td></tr><tr><td><strong>app.vlc.audio</strong> </td><td>Is VLC audio output enabled on this machine? </td></tr><tr><td><strong>app.testpatterns</strong> </td><td>May the test pattern tool be run on this machine? </td></tr><tr><td><strong>app.bridge</strong> </td><td>Is NDI bridge allowed to be run on this machine? </td></tr><tr><td><strong>app.accessmanager</strong> </td><td>Can Access Manager be run on this machine? </td></tr><tr><td><strong>app.adobecc.transmit</strong> </td><td>Can the NDI output plugin be used with Adobe CC </td></tr><tr><td><strong>app.adobecc.fileio</strong> </td><td>Can the NDI file IO plugin be used with Adobe CC </td></tr><tr><td><strong>app.vst3</strong> </td><td>Can NDI Audio Direct be used on this machine? </td></tr></tbody></table>

***

{% hint style="info" %}
Was this helpful? Please let us know by rating this page; you can also leave a [review](https://forms.office.com/Pages/ResponsePage.aspx?id=pzs8xttADka98eY6AqOtWZeUcJXxBylLhfBY94EFe29UNjZRV0xTOFdHR09INzRaN1BDVFFWT0lNRi4u).
{% endhint %}

[^1]: **Time to live** (**TTL**) or **hop limit** is a mechanism that limits the lifespan or lifetime of data in a computer or network. TTL may be implemented as a [counter](https://en.wikipedia.org/wiki/Counter_\(digital\)) or [timestamp](https://en.wikipedia.org/wiki/Timestamp) attached to or embedded in the data.&#x20;

[^2]: UDP (User Datagram Protocol) is an alternative protocol to TCP that is used when reliable delivery of data packets is not required.&#x20;

[^3]: TCP (Transmission Control Protocol) is a network communications protocol that enables two host systems to establish a connection and exchange data packets, ensuring that data is delivered to the correct destination.


# Synchronization

&#x20;NDI transmitters and receivers do not require any specific synchronization method to connect and function. An NDI infrastructure can operate “sync-free”, avoiding the complexity and cost of network systems that support synchronization layers. However, for specific use cases, developers and hardware manufacturers have several approaches to achieve synchronization.  &#x20;

When processing multiple video streams in production workflows, it may be necessary to synchronize all video streams to the same frame rate, with their frame start times aligned.  &#x20;

For physical video sources (e.g., cameras or video output cards) that have a fundamental native video timebase, synchronization is achieved through genlocking the internal video timebase to a reference signal, typically a blackburst signal.&#x20;

For software-only implementations (e.g., character generators, DDR playback, graphics rendering engines) that lack an inherent internal video timebase, multiple platforms can maintain the same frame rate by locking system clocks using NTP, PTP, or similar protocols. However, even with locked system clocks, frame start times will not align across different applications since each application initializes its frame processing independently.  &#x20;

## NDI Genlock  &#x20;

NDI Genlock provides a solution for software applications that lack an internal video timebase by allowing them to use an NDI signal as a timing reference. The Genlock instance connects to any visible NDI sender on the network and synchronizes the frame rate and frame start times to the selected source. The NDI source can reside on a local network, a remote network, or in the cloud.  &#x20;

To ensure proper operation of an NDI source as a Genlock reference, the following conditions must be met:  &#x20;

### NDI Version Compatibility

It is strongly recommended that the NDI source stream originates from NDI version 5 or higher, which includes significant enhancements for genlock support. Older NDI streams may not fully comply with NDI genlock operations.  &#x20;

### Network Bandwidth &#x20;

The NDI source must have sufficient network bandwidth to provide the genlock stream to all NDI receivers. Configuring the source with multicast may help optimize bandwidth usage. &#x20;

### Cross-Frame-Rate Locking

NDI Genlock supports cross-frame-rate locking, where, for instance, a 60Hz signal can synchronize to a 30Hz sender. However, this is not a recommended workflow and should be avoided if possible.&#x20;

### Irregular Frame Streams

Some NDI sources, like the Test Pattern Generator and NDI Screen Capture, may not send a regular frame stream. These sources optimize CPU usage and save network bandwidth by skipping frames, making them unsuitable as genlock references.  &#x20;

### Fallback Mechanism

If the NDI Genlock clock cannot successfully synchronize with the NDI sender, it will automatically fall back to using the system clock. While this fallback is not as precise, it allows video processing to continue with reasonable performance.  &#x20;


# Time, Timecode, and Sync for NDI

Time, timecode, and synchronization of NDI streams

## Introduction

While it seems like the concept of time and a timecode value for a given audio or video frame should be fairly straightforward, various real-world issues can quickly make time, timecode, and timing very complicated. This document attempts to codify how the NDI library handles time values and proposes best practices of how to handle time values in various situations.

## The Basics

### NDI Time Values

All time values in the NDI SDK are represented as 64-bit integer values with units of 100 ns. Time values for a frame can be synthesized by the SDK or provided by the application layer. When synthesized by the SDK, both the timecode and timestamp field use the same logic to synthesize a time value, however this logic varies between platforms (discussed in more detail below).

### NDI timecode

The NDI timecode value has no specified epoch so the use and interpretation of timecode values is somewhat workflow dependent.

NDI expressly does not define an epoch for the timecode value, with the idea that SMPTE timecode values converted into 100 ns units are legal, including 0 which would represent the legitimate 00:00:00:00 hh:mm:ss:ff SMPTE timecode value. As with SMPTE timecode, the NDI timecode may increment in step with real or "wall-clock" time or it may increment faster or slower than real time (eg: fast-forward or slow-motion), potentially even stopping or decrementing (eg: paused or rewinding). It is also possible for the timecode value to be counting (normal playback) but not incrementing every frame, as legacy SMPTE timecode formats cannot represent frame rates over 30 fps.

Timecode values for live sources, however, should generally increment in step with real time. While not mandatory, it is recommended that the epoch used for timecode values for live sources use either the Unix epoch for timecode values which also include date information or zero for SMPTE style timecode that does not include any date information and "wraps" after 24 hours.

While not explicitly specified by the documentation, timecode values should be considered to represent the end of the associated audio or video data. This way implementations that are capturing real world data (eg: video camera or screen capture) will have similar timecode values to applications which are having the NDI SDK synthesize the timecode. The NDI SDK generates the timecode for a frame when that frame is passed to the SDK.

#### Synthesized timecode

When the NDI library synthesizes timecode, the timecode value depends on the previous context of the stream. If the first frame passed to the NDI library has the timecode value set to `NDIlib_send_timecode_synthesize`, the initial timecode value will be derived from the current UTC time. Subsequent frames submitted to the NDI library will be advanced by the frame time as determined by the `frame_rate_N` and `frame_rate_D` values for video frames and the `sample_rate` and `no_samples` values for audio frames.

If the application provides a timecode value other than `NDIlib_send_timecode_synthesize` and subsequently requests that timecode be synthesized, new timecode values will be calculated from the last user-provided timecode value, incremented by the frame time determined by the frame details as above.

Additional details can be found in the [NDI SDK Documentation](https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-send#timecode-synthesis)

### NDI timestamp

NDI timestamp values represent the time a frame was passed to the NDI SDK and are referenced to the UNIX time epoch (00:00:00 UTC on 1 January 1970).

The timestamp value will be generated by the NDI SDI if the timecode value passed with the NDI frame is either zero or `NDIlib_send_timecode_synthesize`.

Applications are strongly encouraged to allow the NDI library to synthesize the timestamp value.

## Additional Details

### SMPTE Timecode & MPEG-2 PCR Values

Conversion between SMPTE timecode, NDI timecode values, MPEG-2 PCR time base values, and absolute (or "wall clock") time can be confusing and complex. The guidelines and formulas from SMPTE Engineering Guideline 40-2002 are recommended for anyone wishing to convert between these formats. To convert to or from NDI timecode values, use the conversion routines for absolute time and convert absolute time (in seconds) to or from NDI timecode (in 100 ns units) using the following formulas:

* NDI time = absolute time / 100e-9
* absolute time = NDI time \* 100e-9

Note that like NDI time values, absolute time values can represent more than 24 hours. The conversion formulas in EG 40 account for this.

Note that for some formats, conversion between SMPTE and NDI timecode values requires information that is not necessarily easily available. For instance fractional frame rates (eg: 29.97 or 59.94 fps) may use drop-frame or non-drop-frame timecode. If this distinction is critical for a particular use case, the application should provide a means to select the appropriate option.

### Platform Specific Details

The logic used to determine the current UTC time is platform specific and has changed over time as operating systems have provided improved APIs.

#### Windows 8 and newer:

UTC time is generated using `GetSystemTimePreciseAsFileTime()` with the return value adjusted to the Unix epoch. The time values will track system time, including any potential corrections made by clock synchronizing code such as NTP or PTP clients.

#### Earlier Windows versions:

UTC time is generated using `QueryPerformanceCounter()` with the epoch anchored to UTC using `getSystemTimeAsFileTime()` when the NDI instance is created.

NOTE: GetSystemTimeAsFileTime() has approximately 10 millisecond precision which is why `QueryPerformanceCounter()` is used. The performance counter timebase is typically a free running clock that is not corrected by NTP or PTP and is often not particularly accurate (frequency errors of 1-2% or more are common).

#### Mac and Linux:

UTC time is generated `using std::chrono::high_resolution_clock` with the epoch anchored to UTC using `gettimeofday()` when the NDI instance is created. The high resolution clock is typically a free running clock that is not corrected by NTP or PTP and is often not particularly accurate (frequency errors of 1-2% or more are common).

Versions following NDI 6.3 will switch to using `clock_gettime()` with CLOCK\_REALTIME to more closely match the behavior of NDI on modern Windows platforms.

### Long Term Drift

When synthesizing timecode values and "clocking" audio or video sending, the NDI library (up to and including version 6.3.0) uses an integer time value in units of 100ns for the frame duration. This means for example that a frame rate of 59.94 fps which should be 166,833.333... will instead be 166,833 meaning that the NDI timecode values and clocked frame rate will show some drift from the expected values and times over a long period of time (approximately 0.173 seconds every 24 hours for 59.94 fps).

Note that frame rates that can be exactly represented by 100 ns units (such as 25 and 50 fps) are not affected by this issue.

Versions following NDI 6.3 will switch to using a running frame count along with the `frame_rate_N` and `frame_rate_D` fields to avoid this drift, which is mentioned here for those concerned with absolute accuracy or long term drift.

## Sending

### Best Practices

All NDI senders should follow some basic best practices whenever possible:

* The system clock should be synchronized to UTC via NTP, PTP, GPS, or similar

Best practice when the user application is generating time values for live sources:

* The timebase should based on “wall clock” time, as used by the NDI SDK when synthesizing timecode/timestamp values
* All frame types sent to a given NDI sender should use the same timebase
* All NDI senders on a given system should use the same timebase

### Software Sources

#### Live Sources

Sources which are "live", or being dynamically generated (such as a rendered graphics overlay, virtual 3D enviornment, or similar) should generate timecode values based on the current UTC time.

Applications without an inherent sample timebase should generally set “clocking” to true and allow the NDI SDK to generate timecode values, or alternately use the Genlock API (see below) to pace sending.

Applications with an inherent timebase (eg: live screen capture of a GPU output) should be treated as a hardware source.

#### Recorded Sources

Applications which are playing back recorded content such as a media player or video editing application preview should generally use a timecode value related to the specific media clip or project. For media which has no inherent timecode, convention is to start timecode values with 00:00:00:00 at the start of the clip or project.

#### Genlock API

This API is designed for software based NDI senders with no inherent video or audio timebase, such as a graphics rendering engine or perhaps a media player or DDR. The Genlock API allows a sender that would otherwise use the “clocked” feature of the NDI SDK to pace sending to instead pace sending based on a reference NDI source. This allows software defined workflows (eg: virtual machines or cloud instances) to synchronize without the need for traditional genlock signals and video I/O cards. This API cannot be used to synchronize a source with an inherent timebase of its own, such as a video camera or video capture card. These hardware devices need to be synchronized with more traditional methods (eg: traditional genlock via black-burst).

To turn a free-running NDI sender into a genlocked NDI sender, the clock\_video and clock\_audio flags are set to false when creating the NDI sender and a call to NDIlib\_genlock\_wait\_video or NDIlib\_genlock\_wait\_audio is added into the sending loop to pace the generation of video or audio frames. These calls will block until it is time to send the next frame and the return value identifies whether a valid NDI genlock signal is present and being used (true) or if timing is being driven by the local system clock (false).

### Hardware Sources

Hardware sources such as video capture cards have an inherent video and audio timebase that is typically not configurable via software but is instead driven by the upstream video timing. In this case, the applications should set “clocking” to false and allow the hardware to pace the frame sending.

Best practice for generating timecode values for these devices is to generate a UTC based timecode value as close as possible to the reception of the complete frame of audio or video data, ideally as close to the hardware callback as the OS allows. If there is a known latency in the input chain (eg: a known delay in a camera’s signal processing pipeline) that offset can be subtracted to provide a timecode value more representative of exactly when that audio or video data existed in the real world.

Alternately, a live production environment may have a specific workflow dictating how timecode values should be generated (perhaps being distributed via serial link, black-burst with VITC, LTC, or some other method). In this case, the production specific workflow requirements should be followed.

## Synchronization

The NDI library encodes and transmits audio and video frames from the sender to the receiver as quickly as possible. The amount of time it takes to send any given frame is dependent on multiple variables, including the format, sender and receiver CPU/system performance, network architecture, network traffic, and other factors. Typically, audio frames require less processing than video frames resulting in slightly lower NDI transport latency for audio vs. video frames (on the order of a few milliseconds).

In order for downstream NDI receivers to be able to properly synchronize received audio and video streams, it is important for the NDI sender to pass aligned audio and video data to the NDI library. This does not mean that audio frames need to exactly match the length of a video frame and be submitted at the same time as a video frame (although this is perfectly acceptable), but the timecode values for audio packets need to accurately represent the audio timing relative to the video frame.

In addition to any delay mismatch potentially added by NDI, capture and playback pipelines often have significantly different delays for audio vs video paths. Measuring and accounting for any audio to video offset outside of NDI is outside the scope of this paper. All following content regarding synchronization assumes the audio and video data are properly aligned when passed to the NDI sender instance.

### Synchronizing Audio and Video

Since the difference between audio and video latency in NDI is typically small, simply passing the received NDI audio and video frames directly to the application for processing or output as soon as they are received will often maintain sufficient synchronization between the streams for practical use cases. In those cases where the latency difference added by NDI is significant (UHD resolutions can exhibit significant video encode and decode delay on lower-powered systems) or when audio and video alignment is critical, applications may wish to delay the audio or the video stream to restore alignment.

Timecode or timestamp values can be used to determine the relative timing between the audio and video streams and some additional delay can be added to the earlier stream (the stream with lower latency) to bring them into alignment. Timecode values are typically more accurate for this than the timestamp value, but note that applications need to be able to handle cases where the timecode value does not increment uniformly as discussed in the "NDI timecode" section, above. The AVSync API (below) can also be used to obtain the audio data which corresponds to a particular video frame.

### AVSync API

Broadly speaking, the AVSync API is used for aligning audio and video data at the receiver when the audio is not being resampled. This would be useful for example when recording an NDI source into a multimedia file, or when mixing multiple NDI streams with synchronized timing between the NDI senders and receiver such that no frame synchronization or audio resampling is needed.

The AV Sync API is used by an NDI receiver to pull aligned frames of audio and video data from the NDI stream and its functionality is essentially summarized as “Provide me the audio samples which align in time with this specific video frame”. Note that no resampling of any sort is performed, so users of this API need to be able to handle both clocking differences between the NDI sender and receiver as well as the case when the audio sample rate is not exactly locked to the video frame rate.

### Synchronizing Senders and Receivers

With NDI, the sender determines all stream details, including frame timing and audio sample rate. While some receiver applications are able to follow the sender frame timing, frequently an NDI receiver will need to process the received audio and video frames on a local timebase which is not synchronized to the sender. This process is performed by a frame synchronizer.

### Framesync API

Audio and video frame timing in NDI is driven by the sender, however NDI receivers often have a local audio or video timebase for signal outputs and the received NDI frames need to be synchronized to these output timebases. The NDI library provides the frame synchronizer API to assist with this task.

There are several details that are important to understand when using the NDI frame synchronizer to retime audio and video data at the receiver. First, the basic operating principle of the frame synchronizer is that an NDI receiver application should be requesting audio and video frames from the frame synchronizer based on its local timebase, typically derived from physical audio and video output hardware. The application should try to request frames (especially audio frames) with as consistent timing as possible, ideally driven by something like a hardware interrupt.

When a frame is requested, the frame synchronizer returns the most appropriate recent video frame or retimed audio samples. If no recent video or audio is available, null frames (video) or silence (audio) will be returned.

NOTE: When using the NDI Advanced SDK, the frame synchronizer only supports compressed SpeedHQ video. The H.264 and H.265 video formats used by NDI HX as well as the AAC and Opus audio formats do not function properly when passed through the frame synchronizer.

#### Video

It is critical to note that the frame synchronizer does not modify the video frames in any way, including the timecode, timestamp, and frame\_format\_type fields which remain unchanged. If the receiver asks for a progressive frame but the NDI source is sending interlaced video, the frame\_format\_type returned will be either `NDIlib_frame_format_type_field_0` or `NDIlib_frame_format_type_field_1` and not `NDIlib_frame_format_type_progressive`. Similarly, if the receiver is operating with an interlaced output and asks for a `NDIlib_frame_format_type_field_0` or `NDIlib_frame_format_type_field_1` but the NDI sender is sending progressive video, the frame\_format\_type returned by the frame synchronizer will be `NDIlib_frame_format_type_progressive`.

Additionally, if the video source is interlaced and the receiver application requires the normal alternating sequence of frame 0 and frame 1 types from the frame synchronizer, it is important to explicitly request either `NDIlib_frame_format_type_field_0` or `NDIlib_frame_format_type_field_1` when asking for a frame. If the application instead requests a `NDIlib_frame_format_type_progressive` or `NDIlib_frame_format_type_interleaved` frame, the frame synchronizer will return the frame nearest in time regardless of its field, meaning the receiver could see consecutive field 0s or field 1s.

If the receiver application needs a different format (progressive or interlaced) than is currently being sent by the NDI sender, it is up to the application to perform any needed conversion.

#### Audio

The NDI framesync instance tracks the effective audio sample rate of both the sender (based on received audio frames) and the receiver (based on audio frames requested by the application) and uses a sample rate converter (SRC) to synthesize audio appropriate for playback on the receivers timebase. While the tracking logic does account for jitter, the SRC performance improves with more consistent timing of application requests for audio frames.

Unlike video, where the original video format can be identified by the frame\_format\_type field, audio is dynamically resampled and the frame synchronizer generates new audio frames with the requested number of audio samples and channels. To identify the original source details, the receiver application can call the `NDIlib_framesync_capture_audio()` routine with `sample_rate`, `no_channels`, and `no_samples` set to zero and the original sender sample rate and number of channels will be returned.

Note that it is possible for audio format details (sample rate and number of channels) to change dynamically. Applications wishing to track sample rate or channel number changes in the original source should periodically request the original source details via the above method to monitor for changes.

## Future Improvements

It might be useful for NDI receivers to have some knowledge about the sender which is not currently communicated, such as:

* The format of timecode values
* System clock synchronization status
* System clock synchronization reference
* Genlock status of audio and video timebases
* Audio and video timebase reference

This information could potentially be passed as connection metadata Anyone with an application that would benefit from this and an interest in developing real-world use cases should contact the NDI team via the [Metadata Lab submissions page](https://ndi.video/tech/ndi-for-metadata/submit-metadata-proposal/).


# NDI in the Cloud

Setting up an NDI-based video production in a Virtual Private Cloud is quite easy; the first step is to define how to make NDI Discovery and Registration work in a VPC. Cloud providers allow the creation of a multicast domain[^1]; multicast is required to use mDNS-based discovery and registration. This setup requires the creation of a transit gateway with multicast enabled. Enabling multicast in the cloud might require specific knowledge; for this reason, the easiest solution to enable NDI Discovery and registration is to set up a Discovery Service. NDI Discovery Service requires just a basic Windows or Linux-based instance to run.

[^1]: A domain refers to a LAN subnetwork of users, systems, devices, and servers. Domain can also refer to the IP address of a website on the Internet.


# Configuration Files

The NDI configuration settings are stored in JSON files. The location of these files varies per platform and is described in the next section of the manual.

{% hint style="info" %}
When using the NDI Advanced SDK, all settings are per instance and so entirely separate settings may be used for every finder, sender, and receiver; this is incredibly powerful by allowing you to specify per sender or receiver which NICs are used, formats are used, what the machine name is, etc...
{% endhint %}

Please pay extra attention to the value types, as it is important that these match what is listed here (e.g., true rather than “true”). Also, please note that all these parameters have default values that are the recommended best configuration for most machines; we only suggest you change these values if there is a very specific need for your installation.

<table data-card-size="large" data-column-title-hidden data-view="cards" data-full-width="true"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><pre class="language-json" data-line-numbers data-full-width="false"><code class="lang-json">{
   "ndi": {
      "machinename": "Hello World",
</code></pre></td><td>This is an option that allows you to change how your machine is identified on the network using NDI, overriding the local name of the machine. This option should be used with great care since a clash of machine names on the network is incompatible with mDNS and can cause all other sources not to work correctly. When using this, it is essential to ensure that all machine names on the network are unique. We recommend avoiding using this parameter when at all possible.</td></tr><tr><td><pre class="language-json" data-line-numbers><code class="lang-json">"send": {
  "metadata": "&#x3C;My very cool source/>"
},
</code></pre></td><td>In NDI 5, it is possible to specify metadata for the current source when creating an NDI sender with the Advanced SDK. When using the NDI finder, it is then possible to receive this metadata in order to receive any number of properties about the source. Please note that you should always make your meta-data in XML format and be careful to escape it correctly when adding it to the JSON configuration file.</td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"networks": {
  "ips": "192.168.86.32,",
  "discovery": "127.0.0.1,127.0.0.1"
},
</code></pre></td><td><p>These are extra IP addresses for machines from which you wish to discover NDI sources. Each local machine runs a service on port 5960, which is then connected to the machine this configuration is run on. This allows sources to be discovered on those IP addresses without needing mDNS to discover it.<br><br><mark style="background-color:yellow;"><strong>Hint</strong>: When a Discovery server is used, receivers combine the list of sources found on the discovery server with those discovered via mDNS. Senders, however, will avoid using mDNS when a discovery server is configured, allowing you to run entirely without network multicast if you desire.</mark><br><br>Starting in NDI 5, it is possible to use a comma-delimited list of discovery servers for full support for redundancy. For more information, please review the section of the manual regarding the discovery server.</p><p></p><p>The discovery server list may include port numbers. If you do not list the port numbers, the default port of 5959 will be used.</p></td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"groups": {
  "send": "Public",
  "recv": "Public"
},
</code></pre></td><td>This is the list of groups that the senders on this system are going to be part of by default. If groups are not specified, senders will be part of the public group by default.</td></tr><tr><td><pre class="language-json" data-line-numbers><code class="lang-json">"sourcefilter": {
  "regex": "MACHINE .*"
},
</code></pre></td><td>In NDI 5, there is the ability to specify a regular expression that will be used to filter further the set of sources that will be visible to NDI finders. This is an advanced option that allows you to specify exactly which sources are going to be visible to the local machine. If your regular expression is not valid, then it will not be applied.</td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"adapters": {
 "allowed": ["10.28.2.10","10.28.2.11"]
},
</code></pre><p></p></td><td><p>Starting in NDI version 5, this lists all the network adapters that will be used for network transmission. One or more NICs can be used for the transmission and receiving of video and audio data. This capability can be used to ensure that the NDI primary stream data remains on a group of network adapters, allowing you to ensure that dedicated audio is on a separate network card from the NDI video.<br></p><p>It is generally preferred that you let NDI select the network adapters automatically, as it can smartly select which to use and how to choose the ones that result in the best bandwidth. While in some modes, NDI can automatically balance bandwidth across multiple NICs, it is normally better for you to use NIC teaming at a machine configuration level which can result in much better performance than what is possible in software.<br></p><p>If this setting is configured incorrectly to specify NICs that might not exist, then NDI might fail to function correctly. Also please note that the operation of computer systems that are separately on entirely different networks with different IP address ranges is often not handled robustly by the operating system, and NDI might not fully function in these configurations.</p></td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"rudp": {
  "send": {
    "enable": true
  }, 
  "recv": {
    "enable": true
  }
},
</code></pre></td><td><p>The following connections are available in NDI version 5 and allow the force enabling and disabling of the reliable UDP mode, which is the default connection type on NDI version 5 and later. The full details of this connection type are described in the section for “Performance and Implementations” section of this manual.</p><p></p><p>There are separate settings for sending and receiving. Both sides need to allow this mode to be applied; sources and receivers have it enabled by default.</p><p></p><p>This is the default connection type and represents the preferred type for most network configurations, and we recommend its use where possible.</p></td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"multicast": {
  "send": {
    "ttl": 1,
    "enable": false,
    "netmask": "255.255.0.0",
    "netprefix": "239.255.0.0"
  },
  "recv": {
    "enable": true
  } 
},
</code></pre></td><td><p>These settings enable or disable the use of multicast for receiving. If you explicitly disable it on a machine then, even if the sender is configured for multicast, it will use unicast. When multicast receiving is enabled, and a sender is available in the same local network, the receiver can negotiate for a multicast stream to be sent. If the sender is not on the same local network, this negotiation does not occur (since it could lead to a multicast stream being sent but never able to arrive at the receiver). If you have a correctly configured network and can ensure a multicast stream can route reliably from a different network to the receiver’s local network, you can specify the sender’s subnet in the “subnets” setting to allow multicast negotiation to occur.<br><br>These settings pertain to the multicast NDI setting on this machine. The first setting determines whether multicast sending is enabled or not. By default, multicast sending is disabled. Next is the IP address prefix and mask. In this example, multicast IP addresses will be chosen in the range 239.255.0.0 - 239.255.255.255. NDI will attempt to use different multicast addresses to ensure that the streams can be filtered efficiently by the network adapter. NDI senders need a range of multicast addresses available. The TTL value controls how many “hops” the multicast sending traffic will take, allowing it to move outside of the local network.<br><br>There are separate settings for sending and receiving. Both sides need to allow this mode to be applied; sources and receivers have it enabled by default.<br></p><p>We generally discourage the use of Multicast since configuration and ensuring that high performance is achieved is very difficult at a network level; in most cases, the default protocols (particularly reliable UDP) perform much better.</p></td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"tcp": {
  "send": {
    "enable": false
  }, 
  "recv": {
    "enable": false
  }
},
</code></pre></td><td><p>These settings enable or disable multi-TCP sending or receiving. If multi-TCP is disabled, then unicast UDP will be used. If unicast UDP is also disabled, then the base TCP connection will be used.</p><p></p><p>There are separate settings for sending and receiving. Both sides need to allow this mode to be applied; sources and receivers have it enabled by default.</p><p></p><p>Multi-TCP is not the default mode in NDI 5, which performs better with Reliable UDP.</p></td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"unicast": {
  "send": {
    "enable": false
  },
  "recv": {
    "enable": false
  }
},
</code></pre></td><td><p>These settings enable or disable unicast UDP sending or receiving. If unicast UDP is disabled, then the base TCP connection will be used.</p><p></p><p>Unicast settings determine whether UDP with forwards- error correction is used for sending. While configurable, we recommended that this be enabled by default and not changed. Our experience has been that our UDP implementation handles poor networks and packet loss more robustly than TCP/IP, which can encounter timeout problems when acknowledgment packets are dropped (while rare, this can happen over a period of hours).</p><p></p><p>The UDP implementation also fully implements paced network sending with zero memory copy scatter-gather lists and jittered timing to reduce the chance of packet loss on networks with many synchronized video streams. By default, 4Kb UDP packets are used, although jumbo packets do not need to be enabled on the network.</p><p></p><p>All versions of NDI fall to TCP/IP if a particular protocol is not supported by both sides. Again, note that that a sender implementation can simultaneously send internally in multiple modes based on what receivers require.</p><p></p><p>There are separate UDP unicast settings for sending and receiving. Both sides need to allow this for UDP mode to be applied; sources and receivers have it enabled by default.</p><p></p><p>Unicast UDP is not the default mode in NDI 5, which performs better with Reliable UDP.</p></td></tr><tr><td><p></p><pre class="language-json" data-line-numbers><code class="lang-json">"codec": {
      "shq": {
        "quality": 100,
        "mode": "auto"
      }
    }, 
  }
}
</code></pre></td><td><em>These settings are only available in the NDI Advanced SDK</em> and allow you to override the default codec quality settings of NDI. The “quality” setting is a percentage scale to apply to the bit-rate control; for instance, a value of 200 would mean that NDI targets a bitrate that is double the NDI default. Be careful when specifying high bitrates because the CPU usage required for compression and decompression might increase, and the strain on the network and the OS networking stack is correspondingly increased. Once the bitrate hits a maximum level for a particular media type (e.g., the codec q value becomes the maximum), then increasing it further might have no impact.<br><br>The “mode” allows you to force NDI into a particular color mode. The default is “auto,” which uses heuristics to best allocate bits between the luminance and chroma fields. You may specify “4:2:2” or “4:2:0” here to force the codec into a particular chroma-subsampling mode. Please note that often forcing it into a particular mode will cause the codec to be less high quality than letting the codec choose the bit allocation that results in the best PSNR.</td></tr></tbody></table>

The following is example of a JSON configuration file that illustrates the parent/child relationship between the hierarchy of objects. Some of these settings such as *vendor* are only relevant to the Advanced SDK.

<pre class="language-json"><code class="lang-json"><strong>{
</strong>  "ndi": {
    "vendor": {
      "name": "SKU LAST 4, Customer name first4,dateofissuance 6digits mmddyy",
      "id": "Generated License"
    },
    "machinename": "MachineName",
    "send": {
      "metadata": "&#x3C;My very cool source/>"
    },
    "networks": {
      "ips": "192.168.1.92,",
      "discovery": "65.52.14.139,65.52.14.138"
    },
    "groups": {
      "send": "Public",
      "recv": "Public"
    },
    "sourcefilter": {
      "regex": "MACHINE .*"
    },
    "adapters": {
      "allowed": [
        "10.28.2.10",
        "10.28.2.11"
      ]
    },
    "tcp": {
      "recv": {
        "enable": true
      }
    },
    "rudp": {
      "recv": {
        "enable": true
      }
    },
    "unicast": {
      "recv": {
        "enable": true
      }
    },
    "multicast": {
      "send": {
        "ttl": 1,
        "enable": false,
        "netmask": "255.255.0.0",
        "netprefix": "239.255.0.0"
      }
    },
    "codec": {
      "shq": {
        "quality": 100,
        "mode": "auto"
      }
    },
    "bridge": {
      "host": true,
      "join": false,
      "address": "127.0.0.1",
      "port": 5990,
      "secure": "123abc",
      "ntk": true,
      "reflect": true,
      "srcgroups": "0ca7b4fd-4bbe-41d8-b263-b8cbeec1188c",
      "bufferdelay": 0,
      "diag": "info",
      "id": "NiceCamera"
    }
  }
}


</code></pre>


# NDI Audio Levels

Making Sense of NDI and Professional Audio Levels

## Introduction

Given the historical specification of NDI floating-point audio levels in terms of dBu (an analog, voltage-based measurement having no direct connection to either integer or floating-point digital values) there has been significant confusion related to proper NDI audio levels. This document aims to explain the original NDI audio level specification, why it does not make sense in a multi-format world, and what to do instead.

## What is a dB?

A dB or decibel is a logarithmic unit used to measure sound intensity or magnitude. The decibel represents a ratio between two values and is therefore unitless. The decibel values most typically used in professional audio production are root-power quantities (amplitude or voltage) calculated using the following formula:

$$dB = 20 \* log\_{10} ( \frac{F}{F\_0} )$$

Where $$F$$ and $$F\_0$$ are the two values being compared. Typically, $$F$$ is the value being measured and $$F\_0$$ represents the 0.0 dB reference level.

### Reference Level

As the decibel is a unitless measure, the ratio scale needs to be anchored or indexed to a specific level, referred to here as the reference level. This specified level represents 0.0 dB.

### Program Reference Level

In addition to the 0.0 dB anchor of the reference level, audio workflows also have a separate program reference level, sometimes referred to as alignment level. This level is the signal amplitude that represents the “typical” signal level when mixing, which would normally equal 0.0 dBVU on an audio mixing console. In other words, the standard signal level which all inputs are aligned to for mixing.

The program reference level is sometimes defined by standards (eg: the SMPTE program reference level for integer audio samples is -20.0 dBFS) but is really workflow specific. Different audio productions use various program reference levels based on the specific task and required results. For example, mixing workflows typically operate with more headroom than would be needed or desired for something like generating a CD master where given the 16-bit output format and 96 dB dynamic range, the headroom from the mix output is typically reduced in order to improve the noise floor. The program reference level is also sometimes intentionally modified to affect perceived loudness, see for example: [Loudness War](https://en.wikipedia.org/wiki/Loudness_war)

## Standard Reference Levels & Program Reference Levels

A variety of decibel-based units of measurement are used in audio production. Several common units and their relationship with each other and NDI are listed here.

### dBu

Voltage relative to the RMS voltage that would dissipate 0dBm (1 mW) in a 600 ohm load:

$$0.0 dBu = \sqrt{0.6}V\_{RMS} \approx 0.7746V\_{RMS}$$

Program reference level: +4.0 dBu (SMPTE per RP-155)

Program reference level: 0.0 dBu (EBU)

Commonly used to specify professional audio levels on XLR audio connections.

### dBV

Voltage relative to 1.0 volt RMS:

$$0.0 dBV = 1.000V\_{RMS}$$

Program reference level: -10.0 dBV (Consumer line level)

Commonly used to specify consumer audio levels on RCA audio connections.

### dBFS

A unit of measurement for amplitude levels in digital systems which have a defined maximum peak level. Used in digital audio production where PCM audio values are represented by fixed length integer values, typically 16, 24, or 32 bits in length.

#### Full-Scale

A full-scale sine wave has positive peaks with a value of 7FFFFF (hex) and negative peaks with a value of 800000 (hex) in a 24-bit digital audio system. For other bit depths, refer to the appropriate standard.

Reference level (24-bit): 0x800000-0x7FFFFF

#### SMPTE Levels

Program reference level is -20dB (1/10 of Reference Level) per SMPTE RP-155:2014

Program Reference Level (24-bit): 0xF33333-0x0CCCCD

#### EBU Levels

Program reference level is 1/8 of reference level (approximately -18.0618dB) per EBU R68-2000

Program Reference Level (24-bit): 0xF00000-0x0FFFFF

### dB<sub>NDI</sub>

A sensible modern definition of NDI audio levels.

Reference Level: Normalized sine wave with peaks of -1.0 to +1.0

Program reference level: 0.0 dB<sub>NDI</sub>

### dB<sub>NDI</sub> (Legacy)

The historical definition of NDI audio levels and a source of significant confusion.

Reference Level: Normalized sine wave with peaks of -1.0 to +1.0 = +4.0 dBu

Program reference level: Undefined

## Legacy NDI Audio Levels

Since at least 4.x, NDI has defined audio levels such that a normalized floating-point sine wave is equal to +4.0 dBu. In a SMPTE workflow this means that an NDI program reference level signal is equal to a normalized -1.0 to +1.0 floating-point sine wave, -20 dBFS digital signal, and +4.0 dBu analog signal.

Problems arise, however, when trying to interface with non-SMPTE audio workflows. EBU program reference levels differ from SMPTE by -4.0 dBu and approximately +2.0 dBFS. If the NDI program reference level is really +4.0 dBu, conversion between NDI audio levels and EBU (or any non-SMPTE) based audio levels becomes very confusing. For instance, an EBU analog audio signal "properly" converted to NDI would have a program reference level of -4.0 dB<sub>NDI</sub> while a similarly converted SMPTE audio signal would have a program reference level of 0.0 dB<sub>NDI</sub>, making it impossible to properly mix NDI signals without knowing the signal's origin.

In addition, specifying a floating-point audio reference level using dBu does not really make sense. NDI floating-point audio values are at least two steps removed from the analog voltage reference used by dBu, and one step removed from the fixed-point values used by dBFS. A more sensible solution is to define NDI floating-point audio levels in terms of the audio signal itself.

Essentially, the original specification for NDI audio levels that a normalized sine wave is equal to +4.0 dBu was a United States and SMPTE-centric attempt to specify NDI audio levels in terms of program reference level. No effort was made to allow for alternate audio level workflows, and software and products sold by NewTek (and later by Vizrt) made no distinction between SMPTE, EBU, or other audio level standards.

## Modern NDI Audio Levels

To address the legacy NDI issues above, the reference to +4.0 dBu is removed from the definition of NDI audio levels and a normalized -1.0 to +1.0 sine wave is specified as both the reference level and the program reference level for NDI audio (see dB<sub>NDI</sub>, above). This allows proper mixing NDI audio sources regardless of origin or destination and makes conversion to and from NDI floating-point audio straightforward.

Rather than confusing and unspecified conversions based on analog voltage levels, converting to and from NDI audio levels becomes a straight-forward conversion between clearly defined program reference levels. Whether SMPTE, EBU, or other reference levels are used in a workflow, the conversions to and from NDI can be clearly defined by simply matching the desired program reference level to NDI's normalized sine wave.

## Other Floating-Point Standards

There are other audio level standards for floating-point audio. One common standard used by ffmpeg and Premiere is to equate a normalized floating-point sine wave with what ffmpeg refers to as "full volume level" or what would be 0 dBFS if using integers:

Reference Level: Normalized sine wave with peaks of -1.0 to +1.0

Program reference level: Varies, typically -20 dBFS (SMPTE) or -18 dBFS (EBU)

This format is referred to as `Audio_float_dBFS_ref` in the conversions below.

## Conversions

With NDI audio levels defined by program reference level, conversion to other formats becomes more straight-forward. Refer to the following examples for several common conversions needed between fixed point and NDI floating-point audio levels.

### SMPTE

```c
// SMPTE program reference level = 1/10 full-scale
NDI_Float = ((float) Audio_16_bit) / 0x0CCD;
NDI_Float = ((float) Audio_24_bit) / 0x0CCCCD;
NDI_Float = ((float) Audio_32_bit) / 0x0CCCCCCD;
NDI_Float = Audio_float_dBFS_ref * 10.0;

Audio_16_bit = (int) (NDI_Float * 0x0CCD);
Audio_24_bit = (int) (NDI_Float * 0x0CCCCD);
Audio_32_bit = (int) (NDI_Float * 0x0CCCCCCD);
Audio_float_dBFS_ref = NDI_Float / 10.0;
```

### EBU

```c
// EBU program reference level = 1/8 full-scale
NDI_Float = ((float) Audio_16_bit) / 0x0FFF;
NDI_Float = ((float) Audio_24_bit) / 0x0FFFFF;
NDI_Float = ((float) Audio_32_bit) / 0x0FFFFFFF;
NDI_Float = Audio_float_dBFS_ref * 8.0;

Audio_16_bit = (int) (NDI_Float * 0x0FFF);
Audio_24_bit = (int) (NDI_Float * 0x0FFFFF);
Audio_32_bit = (int) (NDI_Float * 0x0FFFFFFF);
Audio_float_dBFS_ref = NDI_Float / 8.0;
```

## Real-World Complications

Given the confusing original specification for NDI floating-point audio levels (particularly for non-SMPTE workflows) and the existence of popular floating-point formats with different reference level specifications there are many existing workflows where audio levels are not handled as specified here.

This creates situations where there may not always be a single correct method to properly align audio levels. In such situations, for maximum flexibility and consistency of user experience, it is recommended that the user is provided with a means to adjust the gain or pad setting used for that conversion. If possible, the user would be presented with the choices below. The discrete options are expected to cover most of the common cases, and a custom option for anything else.

### NDI Audio Conversion Gain Options

* 20 dB or 10x gain/pad: Local program reference level is SMPTE (Default)
* 18 dB or 8x gain/pad: Local program reference level is EBU
* 0 dB or 0x gain/pad: No change to audio levels, matching incorrect behavior in some applications which directly passed audio data between NDI and ffmpeg or Premiere without properly adjusting for program reference level
* Custom : User can adjust for anything not covered by the above options

Otherwise, when details about the NDI audio reference level and/or the local program reference level are unknown, it is recommended that the SMPTE formulas above are used for any needed conversions. This most closely matches the historical handling of audio levels in NDI applications.


# Glossary

The NDI Glossary provides clear definitions and explanations of key terms and concepts related to NDI technology as well as more general industry standard terms for AV over IP. We provided this to serve as a reference to help you navigate and understand the terminology used throughout the NDI ecosystem.

* [**NDI Terminology**](/all/getting-started/glossary/ndi-terminology)
* [**Industry Terminology**](/all/getting-started/glossary/industry-terminology)


# NDI Terminology

The following is an ever-growing list of terms that relate directly to products, features, and our connectivity technology in general.

### Annex-B

This format specifies that each NAL unit must be prefixed with a start code (usually a sequence of bytes like 0x000001). This start code helps the decoder identify the beginning of each [NAL ](#nal-nalu-network-abstraction-layer-unit)unit.

### Bridge

An NDI Tool that allows you to connect and share NDI streams between remote NDI infrastructures across a WAN.

### Discovery Server

A software application that stores and shares the discoverability information of NDI senders. It is an alternative to the default discovery and registration method in NDI based on mDNS and does not require multicast.

### Discovery Service

The service provided by NDI Discovery Server.

### Embedded Bridge

A version of NDI bridge capable of connecting an NDI stream from an embedded NDI device to an NDI Bridge host via a WAN

### H.264/H.265

Two specific video codecs which are used for the NDI HX formats

### Input/Output

A sender or receiver, typically audio and/or video, that can be connected to another device, potentially something other than NDI but able to send or receive NDI streams. A single NDI sender/receiver can support multiple inputs and outputs and each of which could support audio, video, metadata or a combination. This is part of the negotiation between receiver and sender.&#x20;

{% hint style="warning" %}
*The terms input and output should be avoided in an NDI context and the terms Sender and Receiver should be used instead as these are NDI standard terms*
{% endhint %}

### NAL/NALU (Network Abstraction Layer Unit)

Basic unit of data transmission in H.264/H.265 systems

### NDI Finder

A software component in the SDK used to find NDI senders and/or other devices on a network.

### NDI Genlock

NDI genlock supports using an NDI signal as a timing reference for software applications which otherwise lack an internal video timebase

### NDI Groups

A way to organize NDI devices to filter NDI senders using NDI discovery service for easier management and discovery

### NDI High Bandwidth

In an NDI system usually refers to a Speed HQ based NDI stream. Potentially could refer to the NDI sender to sending a proxy or a full stream.

### NDI HX

Encompasses all previous versions of HX.

### NDI HX3

An NDI premium product and one of our high efficiency formats.

### NDI Tools Router

In the NDI context a router is an NDI SDK instance that can map NDI streams to alternate senders.

### NDI Stream

An NDI connection between two or more hosts that negotiate the start of data transmission. The negotiation primarily concerns the transmission protocol (TCP, UDP, mTCP, or RUDP), codec and the type of stream, either video, audio, metadata or a combination of the three.

### Receiver

A device or application (NDI SDK instance) able to receive an NDI stream.

### Sender

A device, application or NDI SDK instance able to send an NDI stream.

### Speed HQ

The original proprietary codec used with NDI.


# Industry Terminology

The following is an ever-growing list of terms that relate to networking and audiovisual technology.

### Cache

Cache refers to a reserved section of computer memory or an independent high-speed storage device used to accelerate access and retrieval of commonly used data.

### Channel

Tyically an audio channel is usually a single mono audio input on a device. Less commonly could refer to video components such as luma channel or alpha channel etc.

### Codec

A codec (compressor-decompressor) is a technology or software used to encode and decode data, specifically for audio, video, or multimedia files. Codecs compress data to reduce file size for easier storage or transmission and then decompress it for playback or editing.

### Device

Any hardware capable of communicating over a network using the Internet Protocol (IP) or NDI network. A device can be a source or destination or both while the function of the machine could be sending or receiving.

### Domain

A domain refers to a LAN subnetwork of users, systems, devices, and servers. Domain can also refer to the IP address of a website on the Internet.

### DNS

DNS (Domain Name System) is a system used by the Internet and private networks to translate domain names into IP addresses.

### Ethernet

Ethernet, standardized as IEEE 802.3, refers to a series of LAN (Local Area Network) technologies used to connect computers and other devices to a home or business network. Ethernet is a physical and data link layer networking protocol that supports data transfer rates starting at 10 Mbps, typically over twisted pair cabling, but also fiber optic and coaxial cabling.

### Format

Specific details of a signal, eg: resolution, frame-rate, codec encoding, etc.

### Genlock

A process used to synchronize a video source by allowing devices to lock their video signals to a common external reference signal (often referred to as a sync signal or black burst), It is used in video production and broadcasting to ensure that multiple video devices, such as cameras, switchers, and monitors, operate in perfect sync.

### HDCP

High-bandwidth Digital Copyright Protection developed to prevent unauthorized copying of digital content as it travels across connections like HDMI, display port, etc. It is commonly used in high-definition content transmission between devices such as Blu-ray players, TVs, computers, and gaming consoles.

### Host

A specific machine, device, or computer that is connected to a network that can provide or consume services, resources, or data.

### IGMP

IGMP (Internet Group Management Protocol) is the protocol used in IP multicasting that allows a host to report its multicast group membership to networked routers in order to receive data, messages, or content addressed to the designated multicast group.

### IP

IP (Internet Protocol) is the communications protocol for the Internet, many wide area networks (WANs), and most local area networks (LANs) that define the rules, formats, and address scheme for exchanging datagrams or packets between a source computer or device and a destination computer or device.

### IPv4

IPv4 (Internet Protocol Version 4) is the fourth and most used version of the Internet Protocol. IPv4 uses a 32-bit IP address scheme for network identification and communication, with each unique IP address expressed as four numbers (between 0 and 255) separated by decimal points.

### IPv6

IPv6 (Internet Protocol version 6) is the latest version of the Internet Protocol, developed to eventually replace IPv4 (Internet Protocol version 4). IPv6 uses a 128-bit IP address scheme for network identification and communication, with each unique IP address expressed as eight groups of four hexadecimal digits (numbers from 0-9 or letters from A-F) separated by colons. In addition to exponentially increasing the number of available IP addresses, IPv6 simplifies and streamlines network communication while increasing security, compatibility, and efficiency.

### LAN

LAN (Local Area Network) is a network that connects computers and devices in a room, building or group of buildings. LANs are typically deployed in homes, offices, and schools, where users share access to the same server, resources, and data storage. A system of LANs can also be connected to form a WAN (Wide Area Network).

### Layer 2

Layer 2 refers to the OSI networking model's second layer or Data Link layer. A layer 2 switch uses hardware-based switching to transmit data between connected devices based on their MAC (Media Access Control) layer addresses.

### Layer 3

Layer 3 refers to the OSI networking model's third layer or Network layer. A layer 3 switch uses hardware-based switching to transmit data between connected devices based on their IP addresses.

### Library

A collection of compiled functions and classes that can be shared by multiple independent applications on a system.

### MAC Address

MAC (Media Access Control) address refers to a unique physical address identifying a network node.

### Mbps

Mbps (Megabits per second) is a unit of measurement for data transfer speed, with one megabit equal to one million bits. Network transmissions are commonly measured in Mbps.

### mDNS

mDNS (multicast DNS) refers to the use of IP multicast with DNS to translate domain names into IP addresses and provide service discovery in a network that does not have access to a DNS server.

### Monitor

Device used to display or view a video signal or listen to an audio signal. Also defineed as the act of examining details of an audio or video stream

### OSI

The OSI (Open System Interconnection) reference model is a standard that defines worldwide network communication, developed by ISO (International Organization for Standardization). The OSI reference model divides network communication into seven layers: 1) Physical, 2) Data Link, 3) Network, 4) Transport, 5) Session, 6) Presentation, and 7) Application.

### Packet (Frame)

A packet, also known as a frame or datagram, is a unit of data transmitted over a packet-switched network, such as a LAN, WAN, or the Internet.

### Port

A port is a communications channel for data transmission to and from a computer on a network. Each port is identified by a 16-bit number between 0 and 65535, with each process, application, or service using a specific port, or multiple ports, for data transmission.

### PPS (Picture Parameter Set NALU)

Details a decoder needs to decode the video data, such as resolution, frame rate, and other parameters. They must be included in the video stream for the decoder to interpret the video correctly.

### QoS

QoS (Quality of Service) is the measure of performance for systems or networks, with considerations that include availability, bandwidth, latency, and reliability. QoS can also refer to prioritizing network traffic to ensure a minimum or required level of service, predictability, and/or control.

### Router

1. A networking device capable of transporting IP data based on Layer 3 details (IP Address and subnet details).
2. An SDI router (Serial Digital Interface router) is a device used to route and manage video signals in broadcast and production environments. It allows multiple SDI video sources, such as cameras, servers, and playback devices, to connected to and switch between various destinations, such as monitors, recorders, or live feeds.

### SPS (Sequence Parameter Set NALU)

Details a decoder needs to decode the video data, such as resolution, frame rate, and other parameters. They must be included in the video stream for the decoder to interpret the video correctly.

### Subnet

Subnet (short for subnetwork) refers to a distinct subdivision of an IP network, usually created for performance or security purposes. Subnets typically include the computers, systems, and devices in one location, office, or building, with all nodes sharing the same IP address prefix.

### TCP

TCP (Transmission Control Protocol) is a network communications protocol that enables two host systems to establish a connection and exchange data packets, ensuring that data is delivered to the correct destination. TCP is typically grouped with IP (Internet Protocol) and is known collectively as TCP/IP.

### TTL

**Time to live** (**TTL**) or **hop limit** is a mechanism that limits the lifespan or lifetime of data in a computer or network. TTL may be implemented as a [counter](https://en.wikipedia.org/wiki/Counter_\(digital\)) or [timestamp](https://en.wikipedia.org/wiki/Timestamp) attached to or embedded in the data. Once the prescribed event count or timespan has elapsed, data is discarded or revalidated. In [computer networking](https://en.wikipedia.org/wiki/Computer_networking), TTL prevents a data packet from circulating indefinitely. In [computing](https://en.wikipedia.org/wiki/Computing) applications, TTL is commonly used to improve performance and manage the [caching](https://en.wikipedia.org/wiki/Cache_\(computing\)) of data.

### UDP

UDP (User Datagram Protocol) is an alternative protocol to TCP that is used when reliable delivery of data packets is not required. UDP is typically used for applications where timeliness is of higher priority than accuracy, such as streaming media, teleconferencing, and voice-over IP (VoIP).

### WAN

WAN (Wide Area Network) is a network that spans a relatively broad geographical area, such as a state, region, or nation. WANs typically connect multiple smaller networks, such as LANs (Local Area Network) and MANs (Metropolitan Area Network). The Internet is an example of a WAN.

***


# Intro to NDI Tools

The ways in which NDI is currently utilized — and can continue to be utilized — to connect are virtually limitless. This is primarily due to two factors: (1) our ongoing development of the features and capabilities of our Core Technology and (2) our community of users exploring and implementing NDI-based solutions. From professional broadcast studios to homemade streaming setups, NDI can be applied in any situation where a multimedia connection is needed. Despite the wide range of scenarios, users are consistently seeking certain performance standards, such as high-quality audio and video, low latency, and plug-and-play setups.

Learning how to use multicast is one of the most frequently explored topics within our community. To support this interest, we've gathered a collection of resources to learn more about implementing multicast with NDI. Whether you're just starting to explore multicast or looking to refine your existing setup you can check out the [Multicast ](/all/getting-started/white-paper/multicast)section in our [White Paper](/all/getting-started/white-paper), the [Multicast Testing](/all/developing-with-ndi/ndi-certified/certification-process/testing-methods/multicast-testing) guide for [NDI Certification](/all/developing-with-ndi/ndi-certified), or our articles on how to use NDI multicast with [other devices](/all/using-ndi/ndi-with-hardware/recommended-network-switch-settings-for-ndi) offer in-depth information and practical advice. You can also ask questions in the forums or take our NDI basics course via the [NDI Connected Community](https://community.ndi.video/). These resources are tailored to help you achieve optimal performance, ensuring high-quality audio and video, minimal latency, and seamless integration into your workflows.

This space includes a variety of reference guides, best practice documents, and step-by-step tutorials for using NDI. Our goal is to offer valuable information for anyone looking to connect their setups and workflows with NDI. We are committed to continuously updating this resource and adding new educational content to reflect the latest developments in our technology and its application within our community.

{% hint style="success" %}
You can browse the index below to access all the main topics, guides, and documentation included in this space. If your looking for guidance on specific OS look for the **Apple** or **Windows** icons next to the title.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>NDI for Video</strong></td><td><a href="/all/using-ndi/ndi-for-video">NDI for Video</a></td></tr><tr><td><strong>NDI for Audio</strong></td><td><a href="/all/using-ndi/ndi-for-audio">NDI for Audio</a></td></tr><tr><td>🛠️ <strong>NDI Tools</strong></td><td><a href="/all/using-ndi/ndi-tools">NDI Tools</a></td></tr><tr><td><strong>Utilities</strong></td><td><a href="/all/using-ndi/utilities">Utilities</a></td></tr><tr><td><strong>Using NDI with Hardware</strong></td><td><a href="/all/using-ndi/ndi-with-hardware">NDI with Hardware</a></td></tr><tr><td><strong>Using NDI with Software</strong></td><td><a href="/all/using-ndi/ndi-tools/installing-ndi-tools/software-license-agreement">Software License Agreement</a></td></tr></tbody></table>

If you find any inconsistent or unclear information, you can always [reach out to our team.](https://ndi.video/resources/get-in-touch/)


# NDI for Video

{% hint style="success" %}
If you can't find the answers you're looking for here check out our [**community forums**](https://community.ndi.video/mod/forum/view.php?id=39) or see our [**troubleshooting guide**](/all/faq/troubleshooting-guides)
{% endhint %}

As a technology designed to connect video, ensuring interoperability across all NDI products—both hardware and software—is one of the fundamental principles that NDI strives to uphold for its growing user community.

In this guide, we will explore how NDI can connect video while maintaining interoperability and consistent performance at the heart of any workflow. We will cover some of the basics of digital video and explain the various ways NDI-enabled devices and NDI formats can work together to create a seamless networking environment.

## Contents

1. [Digital Video Basics](/all/using-ndi/ndi-for-video/digital-video-basics)
2. [NDI Video Codecs and Format Matrix](/all/using-ndi/ndi-for-video/ndi-video-codecs-and-format-matrix)
3. [NDI Encoding Support Matrix](/all/using-ndi/ndi-for-video/ndi-encoding-support-matrix)
4. [Interoperability Scenarios](/all/using-ndi/ndi-for-video/interoperability-scenarios)


# Digital Video Basics

Digital video involves capturing, processing, compressing, storing, and transmitting moving visual images in digital form. Understanding digital video requires knowledge of several key concepts, including chroma subsampling, bit depth, and color spaces such as YCbCr and RGB. These elements are crucial for balancing video quality with bandwidth requirements, particularly in video transmission.

## Color Space: YUV vs RGB

Color space refers to the method of representing the range of colors. YUV and RGB are two primary color spaces used in digital video.

**RGB** is based on the primary colors of light (Red, Green, and Blue) and is used primarily in devices that emit light directly, like computer monitors, TVs, and cameras. It represents colors by combining these three colors at various levels of intensity, suitable for applications where precise color representation is crucial.

Color space refers to the method of representing the range of colors. YUV and RGB are two primary color spaces used in digital video.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/TSGSuincRMSCPzwQ4piI/image.png" alt=""><figcaption></figcaption></figure>

In the **YUV** color space, the Y component represents the luminance, or brightness, of the color, which is essentially a grayscale representation of the image. The U and V components represent the chrominance, or color information, separate from the luminance. Specifically:\
\
**U (Chrominance-B):** The U component indicates the difference between the blue component and the reference luminance (Y). Essentially, it represents the blue projection of the color minus its luminance. This helps in determining how blue or how opposite of blue (which can be interpreted as yellowish) the color is.\
\
**V (Chrominance-R):** The V component indicates the difference between the red component and the reference luminance (Y). It represents the red projection of the color minus its luminance. This component helps determine how red or how opposite of red (which can be interpreted as greenish) the color is.

&#x20;The U and V components do not directly correspond to specific colors but rather to the chromatic difference from the luminance. By adjusting these components, you can shift the hue and saturation of a color. The Y component ensures that the brightness of the color is maintained independently of its hue and saturation, which is particularly useful in broadcasting and video compression technologies where luminance is more critical to the perceived quality of the image than color details. This separation allows for more efficient compression by reducing the resolution of the U and V components relative to the Y component, exploiting the human visual system's lower sensitivity to fine details in color compared to brightness.\
\
To make it simple the U component in the YUV color space essentially represents the color spectrum between blue and its complementary color, which can be seen as a range from blue to yellow-green. This range is not about moving directly from blue to red but rather moving from blue towards green and red, where the midpoint might represent less saturation or a neutral point where the blue influence is minimized.\
\
Similarly, the V component represents the spectrum between red and its complementary colors, moving from red towards blue and green, where its midpoint could represent a neutral point with minimized red influence, potentially leaning towards cyan or green.<br>

In essence, the U component controls the blue-yellow balance, while the V component controls the red-cyan (or red-green) balance. By adjusting these two components along with the Y (luminance), you can navigate through the color space to represent a wide range of colors.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/ClYoQOqi8x2yyqKRE79y/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/YqJdHUaF0g9ZE7tcugig/image.png" alt=""><figcaption></figcaption></figure>

The choice between YUV and RGB in a digital video workflow depends on the application's requirements. YUV is typically used for video compression and transmission, where bandwidth efficiency is paramount. In contrast, RGB is used in contexts where accurate color representation and direct control over each primary color are needed, such as in content creation and display technologies.

## Chroma Subsampling

With YUV color space it is possible to use the chroma subsampling as a method to spatially reduce the color information in a signal while retaining the luminance data. This technique leverages the human visual system's characteristic of being more sensitive to variations in brightness (luminance) than to color (chrominance). By reducing the amount of color information, chroma subsampling significantly lowers the bandwidth and storage requirements for video data without substantially impacting perceived image quality.\
\
Video signals consist of luminance information, which represents the brightness levels, and chrominance information, which represents the color. Chrominance is further divided into two components, U and V\
\
Chroma subsampling is expressed in a notation like 4:2:2, 4:2:0, 4:4:4, etc. where the first number (4 in these examples) refers to the reference number of luminance samples in the first row of a 2x2 block of pixels.<br>

The second number indicates the number of chrominance samples (U and V) in the first row of pixels, showing how many color samples are taken compared to the luminance samples.\
The third number indicates the number of chrominance samples in the second row of pixels.

**4:4:4 subsampling** means that no chroma subsampling is applied. Every pixel has its own color information, resulting in the highest quality but also the largest bitrate.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/EbxrRxHvh7hV8IJFb5wg/image.png" alt=""><figcaption></figcaption></figure>

**4:2:2 subsampling** reduces the color information by half horizontally but keeps full-color information in the vertical direction. It's a common compromise between quality and bandwidth used in professional video environments.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/pAWc42CAwDr7kJuYUXit/image.png" alt=""><figcaption></figcaption></figure>

**4:2:0 subsampling** reduces the color information by half both horizontally and vertically, which is widely used in consumer video formats (e.g., Blu-ray, DVD, streaming media PTZ and Prosumer Cameras) because it significantly reduces the bitrate with minimal visible loss of quality.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/FprDkzdiNCYBkMOJQxPx/image.png" alt=""><figcaption></figcaption></figure>

**4:1:1 subsampling reduces the color information by a quarter of the horizontal resolution and keeps full-color information in the vertical direction.**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/ZS5WbI6NPNkc0udCiSAK/image.png" alt=""><figcaption></figcaption></figure>

**Alpha Channel:**

The YUVA color space is an extension of the YUV color space that includes an Alpha channel. In color spaces, the Alpha channel represents the opacity of a color, allowing for varying levels of transparency and compositing images over one another.

\
The alpha channel sampling is usually the same as the luminance and is expressed in a notation like 4:2:2:4, 4:2:0:4, 4:4:4:4, etc.

## Bit Depth

Bit depth, also known as color depth, refers to the number of bits used to represent the color of a single pixel in a digital video. Higher bit depth allows for more colors to be displayed, resulting in more detailed and nuanced images. Common bit depths include:

**8-bit:** Capable of displaying 256 shades per channel (YUV), resulting in 16.7 million colors in total.<br>

**10-bit:** Can display 1,024 shades per channel, offering over a billion colors. This greater range allows for finer gradients and more detailed color representation, reducing banding in video images.


# NDI Video Codecs and Format Matrix

Updated as of NDI 5.6

## **NDI High Bandwidth**

<table data-full-width="true"><thead><tr><th>Codec</th><th>Supported Bit Depth</th><th>Supported Chroma Subsampling</th><th>Supported Color Space</th></tr></thead><tbody><tr><td>SpeedHQ0</td><td>8bit</td><td>4:2:0</td><td>YUV</td></tr><tr><td>SpeedHQ2</td><td>8bit - 10bit</td><td>4:2:2</td><td>YUV</td></tr><tr><td>SpeedHQ7</td><td>8bit - 10bit</td><td>4:2:2:4</td><td>YUVA</td></tr></tbody></table>

### &#x20;**NDI HX 1**

<table data-full-width="true"><thead><tr><th>Codec</th><th>Supported Bit Depth</th><th>Supported Chroma Subsampling</th><th>Supported Color Space</th></tr></thead><tbody><tr><td>H.264</td><td>8bit</td><td>4:2:0</td><td>YUV</td></tr></tbody></table>

> **(1)** An SoC, or System on Chip, is an integrated circuit (IC) that integrates all components of a computer or other electronic system into a single chip. It may include a central processing unit (CPU), memory (RAM, ROM, and flash memory), input/output ports, and secondary storage – all on a single substrate or microchip. It can also contain other components such as a graphics processing unit (GPU), a network interface for communications, and specialized hardware accelerators for specific tasks like digital signal processing (DSP), encryption, or A/V Codecs.

### **NDI HX 2 - 3**

<table data-full-width="true"><thead><tr><th>Codec</th><th>Supported Bit Depth</th><th>Supported Chroma Subsampling</th><th>Supported Color Space</th></tr></thead><tbody><tr><td>H.264</td><td>8bit</td><td>4:2:0</td><td>YUV (A)</td></tr><tr><td>H.265</td><td>8bit - 10bit</td><td>4:2:0</td><td>YUV (A)</td></tr></tbody></table>

{% hint style="info" %}
NDI offers Alpha Channel support with both H.264 and H.265 (YUVA 4:2:0:4).

Since Alpha Channel is not officially supported by H.264 and H.265, this feature is restricted to software applications like NDI Bridge, TriCaster, Vectar Plus, and Connect from Vizrt. It is implemented by vertically stacking the video and alpha frames into a single frame before compression.
{% endhint %}


# NDI Encoding Support Matrix

> ## SpeedHQ

<table data-full-width="true"><thead><tr><th>CODEC</th><th>SpeedHQ0  4:2:0 8bit</th><th>SpeedHQ2  4:2:2 8bit</th><th>SpeedHQ2  4:2:2 10bit</th><th>SpeedHQ7 4:2:2:4 8bit</th><th>SpeedHQ7 4:2:2:4 10bit</th></tr></thead><tbody><tr><td><strong>FPGA Encoding²</strong></td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr><tr><td><strong>FPGA Decoding</strong></td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr><tr><td><strong>Hardware Video Encoder (VCU)</strong></td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td></tr><tr><td><strong>Hardware Video Decoder</strong></td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td></tr><tr><td><strong>Software Encoding</strong></td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr><tr><td><strong>Software Decoding</strong></td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr></tbody></table>

***

> ## HX

<table data-full-width="true"><thead><tr><th>CODEC</th><th width="166.39996337890625">HX (v1) H.264 4:2:0 8bit</th><th width="144.79998779296875">HX (v2) H.264 4:2:0 8bit</th><th>HX (v2) H.265 4:2:0 8bit</th><th>HX (v2) H.265 4:2:0 10bit</th><th>HX3 H.264  4:2:0 8bit</th><th>HX3 H.265  4:2:0 8bit</th><th>HX3 H.265  4:2:0 10bit</th></tr></thead><tbody><tr><td><strong>FPGA Encoding²</strong></td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td></tr><tr><td><strong>FPGA Decoding</strong></td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td><td>NO</td></tr><tr><td><strong>Hardware Video Encoder (VCU)</strong></td><td>NO</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr><tr><td><strong>Hardware Video Decoder</strong></td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr><tr><td><strong>Software Encoding</strong></td><td>NO</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr><tr><td><strong>Software Decoding</strong></td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td><td>YES</td></tr></tbody></table>

{% hint style="info" %}
The FPGA implementations include a SpeedHQ codec in the FPGA fabric for speed, but can *also* use the same software codec as the regular SDK. Typically, the ARM CPU cores on the FPGA+SoC devices are slow enough that decoding video in software is impractical, but this is gradually changing as everything gets faster. (Charles Steinkuehler)
{% endhint %}


# Practical NDI Receivers Format Support

<table data-full-width="true"><thead><tr><th></th><th>NDI HX 1</th><th>NDI HX 2</th><th>NDI HX3</th><th>SpeedHQ0 4:2:0</th><th>SpeedHQ2 4:2:2</th><th>SpeedHQ7 4:2:2:4</th></tr></thead><tbody><tr><td><strong>FGPA-based receiver³</strong></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td></tr><tr><td><strong>SoC¹-based receiver with VCU²</strong></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:$success;">YES</mark></td></tr><tr><td><strong>SoC²-based receiver with FPGA &#x26; VCU²</strong></td><td><mark style="background-color:$danger;">NO</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td></tr><tr><td><strong>Software-based receiver</strong></td><td><mark style="background-color:$danger;">NO</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td></tr></tbody></table>

> **(2)** A VCU, or Video Codec Unit, is a specialized hardware module or component designed to handle the encoding and decoding of video streams. Note that the term VCU seems to be mainly used by AMD for their Zynq series of FPGAs. For instance, other SoCs such as Ambarella just call it a codec.\
> The primary function of a VCU is to efficiently compress (encode) raw video data to reduce its size for storage or transmission and decompress (decode) video data for playback. By performing these operations in hardware, a VCU can significantly speed up video processing tasks, reduce CPU load, and decrease power consumption, which is especially beneficial in devices where power efficiency and high-performance video processing are critical.\
> Integrating a VCU within a System on Chip (SoC) or as part of a dedicated video processing card allows for efficient handling of video content, making it a critical component for multimedia applications and devices in today's video-centric digital world.

> **(3)** An FPGA-based encoder/decoder requires an SoC to be able to offer the user interface, the memory, the network interface of the system, etc.


# Practical NDI Transmitters Support

<table><thead><tr><th width="144"></th><th>NDI HX 1</th><th>NDI HX 2</th><th>NDI HX3</th><th>SpeedHQ0</th><th>SpeedHQ2</th><th>SpeedHQ7</th></tr></thead><tbody><tr><td>FPGA-based <strong>Transmitter</strong></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:red;">NO</mark></td></tr><tr><td>SoC-based <strong>Transmitter</strong> with VCU<strong>²</strong> </td><td><a data-footnote-ref href="#user-content-fn-1"><mark style="background-color:orange;"><strong>YES</strong></mark></a> <mark style="background-color:orange;"><strong>*</strong></mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td></tr><tr><td>SoC-based <strong>Transmitter</strong> with FPGA &#x26; VCU<strong>²</strong> </td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:red;">NO</mark></td></tr><tr><td>Software based <strong>Transmitter</strong></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td><td><mark style="background-color:green;">YES</mark></td></tr></tbody></table>

[^1]: With an implementation developed by NewTek. **NO LONGER AVAILABLE**


# Summary Table

<table data-full-width="true"><thead><tr><th width="287"></th><th>NDI HX (v1)</th><th>NDI HX (v2)</th><th>NDI HX3</th><th>SpeedHQ0</th><th>SpeedHQ2</th><th>SpeedHQ7</th></tr></thead><tbody><tr><td>Chroma Subsampling</td><td>4:2:0</td><td>4:2:0</td><td>4:2:0</td><td>4:2:0</td><td>4:2:2</td><td>4:2:2:4</td></tr><tr><td>FPGA (Supports SHQ in logic), <strong>with</strong> SoC, <strong>without</strong> hardware h.26x codec (VCU)<strong>³</strong></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:orange;">RX only</mark></td></tr><tr><td>FPGA (Supports SHQ in logic), <strong>with</strong> SoC, <strong>with</strong> hardware h.26x codec (VCU)<strong>³</strong></td><td><mark style="background-color:orange;">TX only</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:orange;">RX only</mark></td></tr><tr><td>SoC with hardware h.26x codec (no FPGA) — e.g. Ambarella</td><td><mark style="background-color:orange;">TX only (by NewTek, EOL)</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td><td><mark style="background-color:red;">NO</mark></td></tr><tr><td>Sofware on powerful CPU (GPU acceleration only for NDI HX formats, not SHQ)</td><td><mark style="background-color:orange;">RX only on Mac and Windows</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td><td><mark style="background-color:green;">Rx + Tx</mark></td></tr></tbody></table>


# Interoperability Scenarios

Our certified devices are tested to ensure interoperability with all other certified produces. Please check the [Product Finder](https://ndi.video/product-finder/) on our website to search for products that have been certified.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/Ech9VxDJcRyxuXZThjku/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/yiuOdv6cb1cKToCJdIVk/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/eu7sQtdVCvWx7EVDYflQ/image.png" alt=""><figcaption></figcaption></figure>


# NDI for Audio

Audio is at the heart of countless applications, from media production to live broadcasting, and understanding the principles behind its digital transformation is key to unlocking its full potential.&#x20;

This guide explores how NDI leverages digital audio technology to enable seamless, high-quality audio transmission over IP networks. Beginning with the fundamentals of digital audio, we'll delve into the technical aspects of NDI audio, its real-world use cases, and the innovative products driving this revolution. Whether you're an audio engineer or a curious enthusiast, this guide will provide a comprehensive look at the role of NDI in reshaping modern audio workflows.

## Contents

1. [Digital Audio Fundamentals](/all/using-ndi/ndi-for-audio/digital-audio-fundamentals)
2. [Audio Over IP](/all/using-ndi/ndi-for-audio/audio-over-ip)
3. [Technical Facts About NDI for Audio](/all/using-ndi/ndi-for-audio/technical-facts-about-ndi-for-audio)
4. [Use Cases](/all/using-ndi/ndi-for-audio/use-cases)
5. [Products Using NDI for Audio](/all/using-ndi/ndi-for-audio/products-using-ndi-for-audio)


# Digital Audio Fundamentals

## What is digital audio?

Digital audio refers to the representation of sound in a digital format, wherein audio signals are converted into a series of binary numbers that can be stored, transmitted, and manipulated by electronic devices such as computers and audio processors.&#x20;

Unlike analog audio, represented by continuously varying electrical signals, digital audio breaks down sound into discrete samples at regular intervals, typically measured in thousands of samples per second (expressed as KHz[^1]). Each sample captures the amplitude of the audio waveform at a specific point in time, allowing for precise reproduction and manipulation of sound.&#x20;

Digital audio has revolutionized how we record, edit, transmit, and reproduce sound, enabling unprecedented levels of fidelity, flexibility, and convenience in a wide range of applications, from music production and broadcasting to telecommunications and multimedia entertainment.

***

## Conversion process

Recording or converting sound into a digital format involves two primary steps: **sampling** and **quantization**.

### **Sampling**&#x20;

Sound is a continuous analog wave. To digitize this sound, it is sampled at discrete intervals. The sampling rate, measured in Hertz (Hz), defines how many times per second the sound is sampled. A common sampling rate for CD-quality audio is 44.1 kHz, meaning the audio is sampled 44,100 times per second.

In broadcast video production, the sample rate is 48 kHz; for high-quality audio recording and mastering, the sample rate can be up to 768 kHz.

### **Quantization**

Once sampled, each snapshot of the sound's amplitude is converted into a digital value. This process is known as quantization. The bit depth determines the resolution of this conversion, with higher bit depths allowing a more precise representation of the sound's amplitude. Common bit depths include 16-bit, 24-bit, and 32-bit.

***

## Audio formats

In addition to the fundamental concepts of sampling and quantization, understanding digital audio involves familiarity with various audio file formats. These formats can be categorized into two main types: **uncompressed** and **compressed**.

### **Uncompressed Formats**

These formats store digital audio data without any compression, preserving the original quality of the audio. Common uncompressed audio formats include:

**WAV (Waveform Audio File Format)**: Developed by IBM and Microsoft, it's a standard format for storing audio on PCs.

**AIFF (Audio Interchange File Format)**: Developed by Apple, similar in quality and structure to WAV, commonly used on Mac computers.

### **Compressed Formats**

Compressed formats store audio data using algorithms that eliminate redundant or less audible information to reduce file size. Compressed formats can be lossless or lossy.

**Lossless Formats**: These compress audio data without losing any information, allowing the original audio to be perfectly reconstructed from the compressed data. Examples include FLAC (Free Lossless Audio Codec) and ALAC (Apple Lossless Audio Codec).

[^1]: In the context of sound, **kilohertz** represents the frequency of audio signals. It refers to the number of times a sound wave oscillates per second.


# Audio Over IP

**Audio over IP** refers to the transmission of digital audio across [IP networks](#user-content-fn-1)[^1]. This technology enables high-quality audio streams to be sent between devices and locations with minimal latency. AoIP can be used for broadcasting, live sound reinforcement, recording studios, and more.

## Key concepts

### **Codec**

To efficiently transmit audio over IP, the digital audio data is often compressed using a codec (compressor-decompressor). Codecs like AAC, MP3, and Opus are designed to reduce the amount of data needed to represent the audio without significantly compromising quality.

### **Packetization**

Digital audio is divided into packets, small chunks of data that are transmitted over the network. Each packet contains a portion of the audio signal and metadata for routing and reassembling the audio on the receiving end.

### **Protocols**

Several protocols are used to manage the transmission of audio over IP. These include [**RTP**](#user-content-fn-2)[^2] for streaming audio, [**SIP**](#user-content-fn-3)[^3] for signaling and controlling communications sessions, and more specialized protocols like Dante, AES67, and Ravenna, each designed for specific use cases and industries.

***

## Synchronization

Synchronization is a critical aspect of Audio over IP systems, ensuring that audio packets from various sources arrive in time and are played back coherently. Synchronization may refer to clock synchronization between endpoints (i.e. the same function as word clock in digital audio), or between channels in a stream. Achieving precise synchronization across a network involves several key mechanisms:

### **Precision Time Protocol (PTP)**

For environments requiring higher precision than NTP, PTP (defined in IEEE 1588) provides sub-microsecond accuracy, making it ideal for professional audio and video applications. Protocols like AES67 and Dante use PTP for clock synchronization between endpoints.

### **Sample Accurate Synchronization**

In professional audio environments, it's essential that audio samples are aligned perfectly across multiple streams or channels. This can be achieved through sample-accurate timing information embedded in the audio packets or external clocking mechanisms provided by the AoIP protocol.

### **Jitter Buffers**

To cope with timing variations (jitter) in packet arrival caused by network congestion or path variations, AoIP devices use jitter buffers. These temporarily store incoming packets to realign them into a steady stream before playback, ensuring smooth audio delivery.

[^1]: An IP (Internet Protocol) network is a computer network that uses IP, a set of rules defining how data is sent and received over the internet, to facilitate communication among interconnected devices.

[^2]: The Real-time Transport Protocol (RTP) is a [network protocol](https://en.wikipedia.org/wiki/Network_protocol) for delivering audio and video over [IP networks](https://en.wikipedia.org/wiki/IP_networks). RTP is used in communication and entertainment systems that involve [streaming media](https://en.wikipedia.org/wiki/Streaming_media), such as [telephony](https://en.wikipedia.org/wiki/Telephony), [video teleconference](https://en.wikipedia.org/wiki/Video_teleconference) applications including [WebRTC](https://en.wikipedia.org/wiki/WebRTC), [television services](https://en.wikipedia.org/wiki/IPTV) and web-based [push-to-talk](https://en.wikipedia.org/wiki/Push-to-talk) features.

[^3]: The Session Initiation Protocol (SIP) is a [signaling protocol](https://en.wikipedia.org/wiki/Signaling_protocol) used for initiating, maintaining, and terminating [communication sessions](https://en.wikipedia.org/wiki/Communication_session) that include voice, video and messaging applications.[\[1\]](https://en.wikipedia.org/wiki/Session_Initiation_Protocol#cite_note-What_is_SIP?-1) SIP is used in [Internet telephony](https://en.wikipedia.org/wiki/Internet_telephony), in private IP telephone systems, as well as mobile phone calling over [LTE](https://en.wikipedia.org/wiki/LTE_\(telecommunication\)) ([VoLTE](https://en.wikipedia.org/wiki/VoLTE)).


# Technical Facts About NDI for Audio

### **Codecs**

NDI is essentially codec-agnostic, meaning it is compatible with various codecs. Officially, it supports PCM, AAC, and Opus for audio.

### **Channel Count**

An individual NDI stream can transport multiple audio channels. The number of channels supported depends on the codec used. PCM allows unlimited channels; in NDI, AAC can support 2 channels, while Opus can support up to 255 channels.

Multiple audio channels are multiplexed into a single NDI stream to maintain synchronization.&#x20;

### **Sampling**

NDI Audio supports any sample rate; the standard for live production is 48 kHz.

### **Quantization**

The audio processing in NDI is 32-bit floating point, Internally, the processing is handled as 32-bit. On the sending side of NDI, APIs are available to accept audio in various formats, which are then converted to floating-point.

### **Latency**

Currently, NDI technology does not allow for latencies similar to those offered by technologies such as Aes67, Ravenna, or Dante Audio. However, an NDI audio transmitter is capable of delivering a stream over the network in 6 ms.\
\
This latency might not be acceptable for some cases such as where a captured audio source, like a microphone, is simultaneously listened to in the same environment. Still, there are many use cases where this amount of latency may be acceptable.

### **Synchronization**

The NDI protocol does not employ PTP-based clock synchronization internally, although it may be possible to employ external PTP synchronization software that's available on the market. NDI delivers all sent audio samples exactly and they can be captured to storage without loss, or if they need to be retimed at the receiver for real-time playback or processing, they will be resampled with high quality to adjust for small clock rate differences that may exist between the sender and receiver.&#x20;

For some use cases such as driving line array loudspeakers or multitrack recording, clock synchronization between endpoints for sample-accurate synchronization between outputs is essential and protocols like Dante or Ravenna would be recommended. However, NDI audio is suited for a vast number of other use cases for networked audio.&#x20;

Also note, there are scenarios where PTP-based clock synchronization is difficult or impossible to implement, and NDI is an excellent solution. This is because PTP is a multicast protocol, and clock synchronization using PTP also requires tight hardware integration. NDI has the advantage of being a pure software implementation that can run without multicast, making it suitable for functioning in environments like the cloud or across WANs or the Internet, where multicast is not available.&#x20;

{% hint style="warning" %}
It's important to remember that, unlike other technologies, NDI allows for creating multichannel streams in which all audio channels are multiplexed while maintaining synchronization between them.
{% endhint %}


# Use Cases

The following list presents examples of applications of NDI for Audio over IP in different contexts.

### Live Streaming and Broadcasting (Sports, News, etc.) commentary and comms

There are several use cases in the production of live events, such as sports and news, where NDI Audio can be utilized with great benefits. In sporting events, for example, the entire audio flow for commentary, where neither latency nor synchronization represents a real problem, could be managed using NDI with the advantage of distributing all the service video signals using the same technology.\
\
Another example of its use is audio communications like Intercoms. In this case, NDI also offers the advantage of infrastructure simplicity and, above all, the ability to be supported by software applications rather than dedicated hardware. Moreover, NDI works on wireless networks, thanks to NDI Bridge over WAN.

***

### Webinars and Remote Training

In these use cases, neither latency nor synchronization are blocking issues. What's essential are the ease of use and the ability of NDI to operate over the internet and wireless networks. NDI-based devices, such as the Mackie DLZ Creator, are excellent examples of products designed for these markets.

***

### Remote Production (REMI) and Cloud Production

In these use cases, the features of NDI are of immense value:

* With [NDI Bridge](broken://spaces/RNgRFpW0QELCFWgOTQfu/pages/Rjud2ouu5L3xBAOgsZMz), multichannel audio streams can be distributed and shared over the Internet. NDI is natively unicast, which is the perfect solution for the cloud.
* NDI does not require strong synchronization technology; PTP cannot operate over the Internet or in the cloud.

Even in these use cases, a technology allowing software-only solutions represents a significant advantage over competing technologies.

Furthermore, NDI also supports video and metadata, enabling the creation of a complete workflow with a single technology.

***

### Public Address (PA) System

In this case, NDI's achievable latency does not represent a problem, and thanks to multicast's support, NDI can be easily implemented to provide audio streams to many receivers.&#x20;

Another immense advantage of NDI in this market is its operation over wireless networks, a unique feature compared to other technologies that allow for the distribution of audio signals where a wired infrastructure is not possible.

***

### Home Entertainment (High Fidelity Audio)

NDI is extremely plug-and-play. The audio quality is perfectly compatible with high and very high-quality digital entertainment systems.&#x20;

Discovery and Registration, especially based on the NDI Discovery Server, are much more efficient and reliable than other mDNS solutions.&#x20;

In NDI, the receiver defines which source to use, which is exactly like a radio tuned to a broadcasting station. This is consistent with the normal user experience. Furthermore, no transmitter can unexpectedly connect to a receiver, a very common problem with AoIP for home entertainment solutions used today.

***

### Wireless Audio

NDI Audio represents a winning solution in all applications with a wireless connection. Compared to other Audio Over IP technologies, NDI is less sensitive to the Wi-Fi network jitter and does not require a synchronization like PTP that can’t work over wireless connections.&#x20;

With NDI, multiple audio channels can be multiplexed into a single transmission while maintaining synchronization. This is a huge advantage over other AoIP technologies.


# Products Using NDI for Audio

The following list presents some products that make use of NDI connectivity technology for Audio over IP networking. It will be updated over time, as more relevant products enter the market.

<table data-full-width="true"><thead><tr><th>Brand</th><th>Products</th></tr></thead><tbody><tr><td>NDI</td><td>​<a href="/all/using-ndi/ndi-tools/plugins/audio-direct">Audio Direct VST3 Plugins</a> NDI Free Audio (distributed with the NDI SDK) <a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture">NDI Screen Capture</a>​ <a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac/virtual-input">NDI Virtual Input</a>​</td></tr><tr><td>Mackie</td><td>​<a href="https://mackie.com/en/blog/all/DLZ_NDI_HowToSetup.html">DLZ Creator</a>​</td></tr><tr><td>LAMA</td><td>​<a href="https://lamamix.com/product/lama-connect/">Connect</a>​</td></tr><tr><td>Avsono</td><td>​<a href="https://avsono.com/products/">NDI Audio Embedder </a><a href="https://avsono.com/products/">NDI Audio Gateway</a> <a href="https://avsono.com/products/">NDI Virtual Soundcard</a> <a href="https://avsono.com/products/">NDI Audio Router</a>​</td></tr><tr><td>Salsa Sound</td><td>​<a href="https://www.salsasound.com/products/mixair">MIXaiR™</a>​</td></tr><tr><td>Telos Alliance</td><td>​<a href="https://success.telosalliance.com/telos-infinity-ip-intercom-systems">Infinity IP Intercom Systems</a>​</td></tr><tr><td>Waves</td><td>​<a href="https://www.waves.com/mixers-racks/cloud-mx-audio-mixer">Cloud MX Audio Mixer</a>​</td></tr><tr><td>On-Hertz</td><td>​<a href="https://www.on-hertz.com/artisto">Artisto</a>​</td></tr></tbody></table>

{% hint style="info" %}
It's important to note that, in addition to the software listed, any product (hardware or software) sending or receiving video over NDI is also, in essence, doing the same for audio.
{% endhint %}


# NDI Tools

Today, millions of professional and amateur users leverage NDI-enabled devices and software to maximize IP for audio and video connectivity. In addition to developing the core technology that provides the connectivity features and infrastructure for this ecosystem of products, we recognized the importance of facilitating the operation of NDI workflows and setups.

Hence, we created NDI Tools, a collection of simple yet powerful free software applications designed to introduce anyone, from end users to professional installers, to the world of NDI connectivity and video over IP.

NDI tools work on most computers and are [simple to install](/all/using-ndi/ndi-tools/installing-ndi-tools). Our team is committed to improving all our tools by releasing [frequent updates](/all/using-ndi/ndi-tools/release-notes) that make each tool even more powerful and valuable. This space contains all documentation and educational content related to NDI Tools. We continuously review it to reflect the most recent developments and updates.

{% hint style="info" %}
You can browse the index below to access all the main topics, guides, and documentation included in this page.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>🆕 Release Notes</strong></td><td><a href="/all/using-ndi/ndi-tools/release-notes">Release Notes</a></td></tr><tr><td><strong>Installing NDI Tools</strong></td><td><a href="/all/using-ndi/ndi-tools/installing-ndi-tools">Installing NDI Tools</a></td></tr><tr><td><strong>NDI Tools Launcher</strong></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-launcher">NDI Tools Launcher</a></td></tr><tr><td>🪟 <strong>NDI Tools for Windows</strong></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows">NDI Tools for Windows</a></td></tr><tr><td>🍏 <strong>NDI Tools for Mac</strong></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac">NDI Tools for Mac</a></td></tr><tr><td><strong>Plugins</strong></td><td><a href="/all/using-ndi/ndi-tools/plugins">Plugins</a></td></tr></tbody></table>

We understand some users cannot upgrade their operating system or need a specific older version of NDI Tools for their unique workflow. If your workflow depends on older versions, we recommend reaching out to the developer or manufacture of the component in your workflow that requires this and ask them to update their NDI libraries. \
\
NOTE: These older versions of NDI Tools are provided without support- any features or updates will be in the latest version of NDI Tools, available at ndi.video. The NDI Tools README page has the listed updates for all NDI Tools versions. Due to licensing reasons, we can only provided NDI Tools as far back as NDI 5 for both Mac and Windows for now. \
\
[Download old version of NDI Tools here](https://vizrto365-my.sharepoint.com/:f:/g/personal/rpo_vizrt_com/IgBTLux-WlDhToPcyyA3D8YWAbiKyQ_NIi5q5RA1JngYAt0?e=3CWpRP)

{% hint style="warning" %}
If you would like to use NDI Tools for commercial purposes please contact our [sales team](mailto:sales@ndi.video)
{% endhint %}


# Release Notes

{% hint style="info" %}
**These release notes refer to changes in our complete technology, including the SDKs, NDI Tools, and any other items. Take your time to comb through the documentation and decide what is more relevant for your specific context.**

**\*Any reference to a ChangeLog refers to the release notes shown below**
{% endhint %}

{% updates format="full" %}
{% update date="2026-04-13" %}

## NDI 6.3.2

### Fixed

* Fixed an issue where the [NDI Audio Direct](/all/using-ndi/ndi-tools/plugins/audio-direct) VST3 plug-in settings could not be configured via  &#x20;dropdowns when used inside a DAW application.
* Fixed a possible memory leak in [NDI Screen Capture HX](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) where changing video codec settings would  &#x20;cause the existing send advertiser instance to be leaked.
* Fixed an issue in [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) where the list of audio devices would not dynamically update  &#x20;when connecting or disconnecting audio devices on Windows.
* Fixed an issue where the receiver’s name would appear blank in the Discovery UI when the receiver had an input name configured.
* Fixed an issue in [NDI Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-mac/access-manager) on macOS where the preferred NIC setting would revert to  &#x20;"AUTO" after closing and reopening the application.
* Fixed an issue in [NDI Scan Converter](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter) on macOS where the cursor position would appear offset in the  &#x20;captured output.
* Fixed an intermittent crash when destroying send or recv advertiser objects.
* Added missing NDI receiver advertiser API symbols to the visionOS library.
* **SpeedHQ Codec Improvements**: Improved SpeedHQ rate control quality and consistency by refining  &#x20;quality level boundaries and adjusting bitrate tolerance thresholds
  {% endupdate %}

{% update date="2026-02-09" %}

## NDI 6.3.1

### Fixed

* Potential deadlock issue in the new discovery server with sources for older versions
* Rare rash in [Premiere Pro](/all/using-ndi/ndi-tools/plugins/ndi-for-premiere-pro) on Mac when enabling NDI output and allowing network access
* Issue where [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) fails to auto launch at starup if the selected source is unavailable
* [NDI Bridge Service](/all/developing-with-ndi/utilities/bridge-service-for-windows) auto-start issue where the service appeared running but failed to start
* Added new command-line options in the NDI Recording tool. Please refer to the SDK documentation for details.
  {% endupdate %}

{% update date="2026-01-21" %}

## NDI 6.3.0

### NDI Tools

**Sender Monitoring Enhancements**: The [NDI Discovery app](/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery) now includes sender discovery and&#x20;monitoring on both Windows and macOS.

**Default Sender Monitoring Support**: Enabled by default in existing sender-based NDI Tools apps.

Windows: NDI Test Patterns, NDI Screen Capture, NDI Screen Capture HX, NDI VLC Plugin.

macOS: NDI Test Patterns, NDI Scan Converter.

**NDI Discovery Server Improvements**: Enhanced [sender discovery and monitoring](/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor) capabilities. The NDI&#x20;server utility is now available as a standalone installer for Windows and Linux and can run as a service.&#x20;See [documentation ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery/discovery-server-additional-information)for setup details.

#### Fixed

* Fixed an issue in the NDI plugin for Adobe Premiere where the field sequence was incorrectly  \
  displayed when playing SpeedHQ progressive clips in interlaced sequences.
* Resolved poor NDI HX encoding performance on AMD GPU/CPU systems in [Screen Capture HX](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) and  &#x20;[NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge).
* Fixed NDI Virtual Input on macOS failing to receive video when connected via [Discovery Server](/all/getting-started/white-paper/discovery-and-registration/discovery-server) and  &#x20;[Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager).
* Resolved an issue where [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) would stop receiving video from the NDI HX Camera app  \
  when the camera resolution was changed.
* Corrected video preview rendering in NDI Webcam to properly respect the source aspect ratio.
* Fixed [NDI Router](/all/developing-with-ndi/sdk/ndi-routing) terminating active streams upon application closure.

### NDI SDK

**New APIs**: Introduced APIs for [sender discovery and monitoring](/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor), designed for integration with the\
NDI Discovery Server. See documentation for details.

**Performance Improvements**: Enhanced [SpeedHQ](/all/getting-started/white-paper/bandwidth/ndi-high-bandwidth-based-on-speedhq2-8bit-4-2-2) codec quality across multiple generations.

**Enabled passthrough** of the NDI capabilities message from NDI receiver to the NDI sender.

**Enhanced Receiver Passthrough Control**: Introduced per-codec passthrough override control via\
receiver creation JSON in the NDI Advanced SDK, enabling selective decompression of compressed\
formats. Please refer to the SDK documentation for details.

Improvements to [**FPGA reference design**](/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design). Please refer to the [ChangeLog](/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/changelog) files for more details.
{% endupdate %}

{% update date="2025-08-21" %}

## **NDI 6.2.1**

**Fixed**

{% hint style="warning" %}
Our latest release brings an update to the NDI SDK terms, bringing these in line with our commitment to the health and growth of the NDI ecosystem. **The NDI SDK remains royalty-free, subject to the SDK terms and conditions.** For more details including a full explanation and updated list of exclusions please consult the terms and conditions by downloading the NDI 6.2.1 SDK. These changes apply to the NDI SDK only and are not applicable to the NDI Advanced SDK. For more information see the [Community Announcement](https://community.ndi.video/mod/forum/discuss.php?d=114) in our Forums.
{% endhint %}

* Updated the NDI Tools installer to display the [Privacy Policy](/all/using-ndi/ndi-tools/installing-ndi-tools/privacy-policy) on the data collection agreement page.
* Fixed an issue with silent installation of [NDI Tools](/all/using-ndi/ndi-tools).
* Fixed an issue where the [NDI Discovery Server](/all/getting-started/white-paper/discovery-and-registration/discovery-server) running as a service would not start automatically after windows restart.
* Added **URL connection** reporting in the [Discovery UI](broken://pages/4E0yRhy4TMEitjwX1GpG) when monitoring NDI receivers connected to HX1 sources.
* Fixed a **localization issue** in the [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) statistics window.
* Fixed a crash that could occur when destroying an NDI receiver during an active connection attempt to a source. Improved handling of deinterlacing in [NDI Studio Monito](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor)r.
* A new '**deinterlacing**' option has been added to the Video Settings menu.
* Fixed incorrect byte order handling when using `NDIlib_recv_color_format_RGBX_RGBA`.
* Fixed an issue where NDI output from[ Adobe Premiere](/all/using-ndi/ndi-tools/plugins/ndi-for-premiere-pro) could change resolution when clips on the timeline ended.
* Resolved an issue where [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) could incorrectly select a temporary GPU adapter, which might become unavailable when remote desktop sessions end.
* Fixed a potential issue where an **NDI Finder** could block indefinitely in certain environments.
* Removed the [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued) application from the **NDI Tools Suite.** See [here ](https://community.ndi.video/mod/forum/discuss.php?d=127#p332)for more details
  {% endupdate %}

{% update date="2025-06-03" %}

## **NDI 6.2**

### **NDI Tools**

* Introduced the [**NDI Discovery**](broken://pages/4E0yRhy4TMEitjwX1GpG) **app** in the Tools suite for macOS and Windows for **NDI receiver discovery, monitoring and control**.
* NDI Tools now includes support for **anonymous usage data collection** to help improve future releases. Users can choose to opt in or out during setup and update their preference anytime from the NDI Tools Launcher.
* Updated NDI Studio Monitor (Windows) and NDI Video Monitor (Mac) to enable settings for **receiver monitoring** and **remote source control** when used with the new NDI Discovery Server.
* Improved [**Access Manager**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager) for easier multicast configuration on Windows and Mac.
* Added a new setting in [**Screen Capture**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture) applications on Windows to enable or disable notifications for new connections.
* Improved error handling and user notifications in [**Screen Capture** ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture)applications on Windows.

#### **Standalone Tools**

* Enhanced existing [**NDI Discovery Server**](/all/getting-started/white-paper/discovery-and-registration) with new capabilities for **receiver discovery, monitoring, and control**. It is now available as a standalone installer for Windows and Linux, allowing it to run as a service. Refer to the documentation for details.
* Updated the [**NDI Bridge Service**](/all/developing-with-ndi/utilities/bridge-service-for-windows) to include local mode support.

#### **Fixed**

* A problem in [**NDI Webcam**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) and [**NDI Router**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/router) where the preview window could freeze or fail to render video.
* Issue where the **NDI record binary** would stop recording when the record chop command was used with the `-noautochop` flag.
* Crash in [**Scan Converter**](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter) on macOS that occurred when its signal was received in [**Video Monitor**](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) or Studio Monitor.
* Addressed a localization issue that skewed statistics in [**NDI Bridge**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge).
* Usage of **incorrect units for packet lost metric** in [**NDI Bridge**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) statistics window.
* Issue where the [**NDI Bridge** ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge)host could crash during stream cleanup or closure.&#x20;
* Fixed a potential crash in the **NDI VST output plugin** when used with certain DAW applications.
* Issue where audio frameworks could fail to load at runtime on macOS, causing [**Free Audio**](/all/developing-with-ndi/utilities/free-audio) to detect no audio devices.

### NDI SDK

* Introduced a new set of APIs for **receiver discovery, monitoring, and control,** designed for integration with the NDI Discovery Server. Refer to the documentation for details.
* Added **visionOS** support to **Apple SDKs**.
* Optimized audio resampler performance in [**NDI Frame Sync**](broken://pages/2pllbPWFLnfXP7Ls26Vy) on ARM-based platforms.
* Improved **single-TCP sending performanc**e by using scatter-gather to reduce per-message ACKs.&#x20;

#### Fixed

* Resolved a potential crash in the NDI library when handling UDP streams on certain ARM-based processors.
  {% endupdate %}

{% update date="2024-12-23" %}

## NDI 6.1.1

**Fixes**

* Resolved a low-level exception that occurred when importing recorded SpeedHQ files into Adobe Premiere Pro.
* Fixed an issue where NDI Virtual Input might stop functioning after a few seconds on certain macOS platforms.
* Improved handling of connection metadata when used with the NDI Routing API.
* Addressed a possible issue with the Discovery Server where sources might not appear intermittently.
* Resolved a potential memory leak issue in NDI Test Patterns on Windows.
  {% endupdate %}

{% update date="2024-12-05" %}

## NDI 6.1.0&#x20;

**SDK**&#x20;

* **FPGA** improvements.
* Added support for **16-bit** color formats on FPGA platforms.&#x20;
* Introduced encoder support for **planar alpha**.&#x20;
* Added support for new **packed and semi-planar** video formats.&#x20;
* Implemented **64-bit addressing in raw audio/video input and output logic**. For more details, refer to the **ChangeLog** files.&#x20;
* The **Advanced SDK** now features a new **API** that enables dynamic adjustment of the received bandwidth for NDI video streams. For more information, please consult the [Advanced SDK documentation](/all/developing-with-ndi/advanced-sdk).&#x20;
* Added **new audio conversion utility API**s for `NDIlib_audio_frame_v3_t` structure.&#x20;
* Made **improvements to the** [**SpeedHQ**](/all/getting-started/white-paper/encoding-and-decoding) **codec** to verify the correctness of the bitstream before decompression.&#x20;

**SDK - Fixes**

* Fixed incorrect **HDR color information in MOV files** recorded using the NDI Recorder utility.&#x20;
* Addressed an issue where the NDI library took longer than expected to unload in specific scenarios.&#x20;
* Addressed a potential frame drop issue with [NDI HX](/all/getting-started/white-paper/encoding-and-decoding) streams under specific conditions.&#x20;
* General improvements to the [Reliable UDP protocol](/all/getting-started/white-paper/ndi-protocols#reliable-udp-ndi-5).  &#x20;

**NDI Tools**

* [**NDI Tools launcher**](https://ndi.video/tools/) **layout and style improvements**. (macOS and Windows).&#x20;
* The [NDI Virtual Input](/all/using-ndi/ndi-tools/ndi-tools-for-mac/virtual-input) app on macOS has been updated to utilize **modern system extensions introduced in macOS Sonoma 14.1**.&#x20;
* [All NDI Tools](/all/using-ndi/ndi-tools/ndi-tools-for-windows) apps on **Windows** have been updated to use **.NET 8.**&#x20;

**NDI Tools - NDI Bridge**

* A **connection test feature** was added to determine optimal buffer delay settings for your network.
* Introduced a **dedicated statistics window** with timeline graphs to monitor system and bridge usage.
* Added a **logging window with support for log-level filters** to view bridge logs more effectively.
* **Local mode** now includes an option to configure the **local send group for bridge sources**.&#x20;

**NDI Tools - New Utilities**

* The [NDI Bridge Service](/all/developing-with-ndi/utilities/bridge-service-for-windows) is now [available for free download](https://ndi.video/tools/bridge-service/) on the NDI website. It allows you to run [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) **in a headless mode as a Windows service**. Please refer to the documentation for more details.&#x20;
* The [NDI Free Audio](/all/developing-with-ndi/utilities/free-audio) utility is now [available for free download](https://ndi.video/tools/free-audio/) on Windows and Linux via the NDI website. It also includes **enhanced ASIO support for Windows** devices.&#x20;
* The **NDI Analysis** tool has been improved to include additional information about NDI stream timings when exporting to a CSV file. Please refer to the [NDI Analysis documentation](broken://pages/eEOrR87Gy7wxy6kPitSP) for more details.&#x20;

**NDI Tools - Fixes**

* [NDI Access Manager ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/access-manager)(macOS) now supports inputting **multiple discovery server IP addresses**.
* Corrected an issue in [NDI Router ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/router)(macOS) where **HDR** images were not rendered properly in the preview.
* Resolved a potential exception in the source menu of [NDI Router ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/router)(macOS) when parsing NDI sources.
* Resolved an issue where [NDI Bridge ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge)failed to auto-start in **Local** **mode**.
* Fixed a potential deadlock when closing an [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) stream in **Join** **mode**.
* Corrected **NDI Test Patterns** to ensure the full **Rec.709** color range is output for imported images (Windows).
* Fixed an issue with [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued) when enumerating system audio devices.&#x20;
* Resolved a potential issue in [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) when rendering test patterns with alpha transparency.
* Enabled high bit-depth decoding in [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) for streams with **BT.2020 color primaries**.
* Added support for higher color depth when playing **SDR files using the VLC player** with the NDI output plugin enabled.
* Fixed audio driver stability issues with [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input).&#x20;

**NDI Tools - Known Issues**

* NDI Virtual Input may stop working after a few seconds with certain macOS platforms.
  {% endupdate %}

{% update date="2024-05-08" %}

## NDI 6.0.1

#### **NDI Tools - HDR**

* The [NDI output plugin for VLC](/all/using-ndi/ndi-tools/plugins/ndi-for-vlc) now includes HDR support\<html>

#### NDI Tools - Fixes

* Corrected rendering issue when importing custom images from older versions of [NDI Test Patterns](/all/using-ndi/ndi-tools/ndi-tools-for-windows/test-patterns) on Windows.
* Resolved a potential crash in [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued).
* Resolved a minor talkback audio issue in [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued).
* Added a firewall exception rule for the [NDI Remote](/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued) app.
* Resolved an issue with loading the [NDI output plugin for Final Cut Pro](/all/using-ndi/ndi-tools/plugins/ndi-output-for-final-cut-pro) on newer macOS versions.
* [NDI Video Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) on Mac was not playing audio.
* Ensured correct permissions were set on the NDI Runtime installer on MacOS.
* Resolved an issue where the NDI Tools registration state was not being saved correctly.

#### **NDI SDK - Fixes**

* Resolved a source limitation issue with the [NDI Discovery server](/all/getting-started/white-paper/discovery-and-registration) running on Linux.
* Addressed an issue with NDI Frame Sync, restoring correct behavior in audio capture.
* Fixed a potential threading issue when loading and unloading the NDI library on Windows.

{% endupdate %}

{% update date="2024-03-25" %}

## NDI 6.0.0

#### SDK

* Support for 16-bit color formats improved (P216/PA16).&#x20;
* There is a new specification for NDI HDR metadata (read the new dedicated [**HDR section**](/all/developing-with-ndi/sdk/hdr) in the NDI SDK for more details).&#x20;
* New receiver formats permit SpeedHQ pass-through with UYVY/P216 video.&#x20;
* HDR example code samples are provided with NDI SDK.&#x20;
* The NDI Advanced SDK includes a new [**NDI Bridge Utility**](/all/developing-with-ndi/advanced-sdk/embedded-bridge) for hardware (currently available for Linux), with comprehensive guidance on its use.&#x20;
* [**NDI Recorder utility**](/all/developing-with-ndi/sdk/command-line-tools) enhanced to capture NDI HDR streams.&#x20;

{% hint style="info" %}
Please note: The **NDI Advanced SDK** licensing scheme has been enhanced. To use NDI 6.0 features, advanced SDK users will need a new License ID (which replaces the former Vendor ID). Please contact <support@ndi.video>
{% endhint %}

#### SDK - Fixes

Improved audio synchronization with [NDI Frame Sync API](broken://pages/2pllbPWFLnfXP7Ls26Vy).

#### NDI Tools

* **A new** [**NDI Router tool for macOS**](/all/using-ndi/ndi-tools/ndi-tools-for-mac/router) has been released.&#x20;

#### NDI Tools - HDR&#x20;

* [NDI Test Patterns](/all/using-ndi/ndi-tools/ndi-tools-for-windows/test-patterns) now supports HDR patterns (macOS and Windows).&#x20;
* [NDI Studio Monitor ](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor)now supports displaying HDR content in PQ and HLG (Windows).&#x20;
* [NDI Studio Monitor (Windows)](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) has been enhanced to capture NDI HDR streams.&#x20;
* [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) has received 10-bit HEVC transcoding and HDR pass-through.&#x20;
* [NDI Screen Capture HX (Windows)](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx) has received support for HDR screens and 10-bit HEVC.&#x20;
* [NDI Analysis](broken://pages/eEOrR87Gy7wxy6kPitSP) in Frame Checker mode will now output HDR color information if present.&#x20;

#### NDI Tools - More

* [NDI Video Monitor (macOS)](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) now includes new KVM support.&#x20;
* The NDI Launcher app adds a one-click link to extensive online Docs & Guides.&#x20;

#### NDI Tools - Fixes&#x20;

* Reduced latency from [NDI Screen Capture HX (Windows)](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx).&#x20;
* Resolved [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) Local mode issue when handling a source that has multiple machine names.
* [NDI Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge) has been enhanced to leverage the increased number of encoders supported by NVIDIA GeForce cards (may require NVIDIA driver update).&#x20;
* Resolved an [NDI Webcam](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input) audio driver stability issue.
  {% endupdate %}
  {% endupdates %}


# Installing NDI Tools

Step-by-step Guide

{% hint style="success" %}
If you can't find the answers you're looking for here check out our [**community forums**](https://community.ndi.video/mod/forum/view.php?id=39) or see our [**troubleshooting guide**](/all/faq/troubleshooting-guides)
{% endhint %}

Installing **NDI Tools** is easy: it requires only a couple of simple actions. In case you are not sure how to do it, follow this **step-by-step guide** to install and run the most updated collection of NDI Tools as fast as possible. \
\
Before you know it, you'll be using NDI to connect your video workflows.

{% hint style="warning" %}
If you plan to use NDI Tools for commercial purposes please contact our [sales team](mailto:sales@ndi.video)
{% endhint %}

***

## 1. Navigate to the NDI Tools page on the NDI website

Just open your preferred web browser and type <https://ndi.video/tools/> in your address bar. This will take you to our NDI Tools page, where you can explore and dive into the complete collection of NDI Tools we have to offer.

{% hint style="warning" %}
Make sure you download NDI Tools only through the **official** **NDI website**. Other websites might offer NDI Tools downloads, but only the official page will guarantee that you are downloading the most updated release of our tools.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/l31ApFZnfLbcRcp86jve/image.png" alt=""><figcaption><p>Screenshot from the NDI Tools page.</p></figcaption></figure>

***

## 2. Open the NDI Tools download page to download NDI Tools

By clicking the **"Download NDI Tools"** button, you'll enter the [NDI Tools download](https://ndi.video/tools/download/) page. This includes all the NDI Tools and plugins you need to set up, test, and manage your NDI workflow. On this page, you'll be able to explore a list of all included tools in NDI Tools (both for the Windows and Mac versions) and understand the minimum requirements to install it on your computer.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/IUGechieolCvPlIfM4Pp/image.png" alt=""><figcaption><p>Screenshot from the NDI Tools download page.</p></figcaption></figure>

***

## 3. Download the right NDI Tools package for your OS

On the top right side of the NDI Tools download page, you'll find a menu with two buttons. Select the one that corresponds to your operating system, and you'll be prompted to save the **NDI Tools Installer** in a location of your choice.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/LqkDImNQNsBrWkc3GmKA/image.png" alt=""><figcaption><p>Screenshot from the NDI Tools download page.</p></figcaption></figure>

***

## 4. Open the NDI Tools Installer and complete the installation steps&#x20;

The installation steps include reading and agreeing with a [Software License Agreement](/all/using-ndi/ndi-tools/installing-ndi-tools/software-license-agreement) and selecting the location where the tools should be installed. Now, you're ready to install NDI Tools.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/XTaXfbbINA36joumJVoq/image.png" alt="" width="375"><figcaption><p>Screenshot of NDI Tools Installer (Mac version)</p></figcaption></figure>

***

## 5. Your NDI Tools are installed!

You can now find all the different NDI Tools within your selected folder (by default, they will be installed in the Applications folder). Besides the NDI Tools, you can also open the [NDI Launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher), which offers an overview of all the tools, as well as some additional features.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/MnHj2bKVxtBBN8FQNlwm/image.png" alt="" width="563"><figcaption><p>Screenshot of Windows Start Menu and Mac OS Applications folder containing some NDI Tools and the NDI Launcher.</p></figcaption></figure>

***

#### That's it! You've successfully downloaded and installed the free NDI Tools. Now, you can explore and leverage these tools for your multimedia projects and workflows.&#x20;

If you'd like to learn more about each tool, but also CLI Tools and Plugins, be sure to explore the additional documentation and tutorials by navigating the left menu.

**Thank you for connecting with NDI.**


# Software License Agreement

Agreeing to this Software License Agreement is a necessary step to install NDI Tools. This step can be completed during the installation process through the NDI Tools Installer.

## Software License and Content Data License and Limited Warrant

This Software and Content Data License and Limited Warranty applies to NDI® Tools and other software and/or content data products provided by Vizrt NDI AB. (“NDI”).

PLEASE READ THIS CAREFULLY BEFORE USING THIS SOFTWARE. THIS SOFTWARE IS LICENSED. THE LICENSE AND LIMITED WARRANTY APPLIES TO THE SOFTWARE LISTED ABOVE. BY USING THIS SOFTWARE, YOU AGREE TO BE BOUND BY THESE TERMS OF THE LICENSE AND LIMITED WARRANTY. IF YOU DO NOT AGREE TO THESE LICENSES AND THESE TERMS, YOU MAY RETURN THE SOFTWARE WITHIN 15 DAYS OF PURCHASE TO THE PLACE WHERE YOU OBTAINED IT FOR A FULL REFUND.

### 1. License Grant.

Any computer program or content data installed and/or enclosed (the "Software") is licensed, not sold, to you by NDI for use only under the terms of this License, and NDI reserves any rights not expressly granted to you herein. Title to the Software and all copyright rights therein, foreign and domestic, are owned by NDI or its suppliers and is protected by US, EU and other copyright laws and international treaty provisions.

You are hereby granted a worldwide, nonexclusive, nontransferable (other than as expressly set forth herein) and, as applicable, fully paid up license to one copy of the Software. If the Software is an NDI/HX driver, you may use up to five (5), and no more than five, copies on separate machines at one time. The copyright restrictions of this license extend to any further updates, software patches, or bug fixes made available to you by NDI, regardless of how the software is delivered (by downloading, through digital storage media, or other). Any software or content data updates later obtained by you from NDI may only be used to update Software that has a valid and legal license under which the update was obtained. SUCH UPDATES MAY INCLUDE ADDITIONAL OR AMENDED TERMS THAT MODIFY OR CHANGE THIS LICENSE. YOUR ACCEPTANCE AND USE OF SUCH UPDATES WILL CONSTITUTE YOUR CONSENT AND AGREEMENT TO AMEND THIS LICENSE PURSUANT TO SUCH TERMS.

You may make one copy of the Software in machine readable form solely for backup purposes. As an express condition of this License, you must reproduce on the backup copy the NDI copyright notice in the following format: "© \<YEAR> Vizrt NDI AB. All Rights Reserved."

EXCEPT WITH REGARD TO ANY PROHIBITIONS ON TRANSFER AND ASSIGNMENT MENTIONED HEREIN, you may permanently transfer all your rights under this License to another party provided that the other party reads and agrees to accept the terms and conditions of this License as amended. Your rights under this license shall immediately terminate upon such transfer. Some of these restrictions may not apply to the LGPL, or other licensed software/libraries referenced in Paragraphs 6, 7, or 8 below.

If the Software was obtained for educational use with an educational price discount, this license is a limited Educational License, and not licensed to be used for any commercial or other use that is not an Educational Use. “Educational Use” means use by students, instructors, educational and/or government facilities directly connected with the user’s employment with, or as a student of, a bona fide educational institution of primary, secondary, graduate, or postgraduate level. “Educational Use” may be further defined from time to time on NDI’s website.

Any additional terms of purchase relating to restrictions to educational uses in effect at the time of purchase shall become part of this license to the extent they are not in conflict with these terms. Any uses falling outside the scope of Education Use are a violation of this license and will be considered copyright infringement. If in doubt, you may determine the nature of your license by calling NDI customer support and providing the serial number and letter code.

### 2. Restrictions.

The Software contains NDI trade secrets. EXCEPT AS EXPRESSLY AUTHORIZED HEREIN, YOU MAY NOT COPY, DISTRIBUTE, MODIFY OR CREATE DERIVATIVE WORKS, REVERSE ENGINEER, DECOMPILE, DISASSEMBLE, OR OTHERWISE REDUCE THE SOFTWARE TO ANY HUMAN-PERCEIVABLE FORM. YOU MAY NOT MODIFY, ADAPT, TRANSLATE, RENT, LEASE, LOAN, RESELL FOR PROFIT, OR CREATE ANY MODIFICATIONS OR OTHER DERIVATIVE WORKS BASED UPON THE SOFTWARE OR ANY PART THEREOF.

### 3. Termination.

This License is effective until terminated. This License will terminate immediately without notice, if you fail to comply with any provision of this License. Upon termination you must destroy the Software, all accompanying written materials and all copies thereof. You may also terminate this License at any time by destroying the Software, all accompanying written materials, and all copies thereof.

### 4. Product Warranty and Remedies.

This limited warranty extends to the original purchaser only.&#x20;

NDI DOES NOT WARRANT THAT THE SOFTWARE WILL BE ERROR FREE, OR THAT IT WILL SATISFY ALL YOUR REQUIREMENTS. NDI WARRANTS THE DISCS OR OTHER TANGIBLE STORAGE MEDIA PROVIDED, IF ANY, ON WHICH THE SOFTWARE IS SUPPLIED TO BE FREE FROM DEFECTS IN MATERIALS AND WORKMANSHIP UNDER NORMAL USE FOR 90 DAYS FROM PURCHASE.

ALL IMPLIED WARRANTIES RELATING TO THE SOFTWARE ARE DISCLAIMED, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. YOUR EXCLUSIVE REMEDY FOR BREACH OF WARRANTY WILL BE THE REPLACEMENT OF THE MEDIA OR REFUND OF THE PURCHASE PRICE. IF THIS IS AN EVALUATION OR BETA VERSION, YOU ACKNOWLEDGE THAT THE SOFTWARE AND ACCOMPANYING MATERIALS ARE ACCEPTED “AS IS” AND MAY NOT BE FREE FROM DEFECTS.

THE ABOVE WARRANTY IS EXCLUSIVE AND IN LIEU OF ALL OTHER WARRANTIES, EXPRESS OR IMPLIED. ANY TERM OF THIS WARRANTY OR THE WARRANTY LIMITATIONS THAT IS PROHIBITED BY APPLICABLE LAW SHALL NOT APPLY. ALL ACTIONS ON ANY BREACH OF WARRANTY OF ANY KIND MUST BE BROUGHT WITHIN ONE (1) YEAR OF DATE OF PURCHASE. YOUR SOLE REMEDY IN ANY EVENT SHALL BE TO TERMINATE THE LICENSE.

### 5. Limitations On NDI’s Liability.&#x20;

NDI IS NOT LIABLE FOR LOSS OR DAMAGE FOR INCONVENIENCE OR INTERRUPTION OF SERVICE, LOSS OF BUSINESS, DATA OR ANTICIPATORY PROFITS, OR CONSEQUENTIAL, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES RESULTING FROM THE USE (OR OPERATION) OF ANY OF THE SOFTWARE. NDI’S LIABILITY IS LIMITED SOLELY TO THE REPAIR OR REPLACEMENT OF THE DEFECTIVE SOFTWARE. NDI IS UNDER NO OBLIGATION OR RESPONSIBILITY TO ENHANCE OR UPDATE THE SOFTWARE.

### 6. MPEG-2, MPEG-4, AVC/H.264 Notices.

If your use of this Software involves MPEG-2, MPEG-4, AVC/H.264 encoding or decoding as discussed below, commercial use of the Software, including the distribution of content media, may require additional licenses:

MPEG-2: ANY USE OF THIS SOFTWARE IN ANY OTHER MANNER THAN CONSUMER PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSE IS AVAILABLE FROM MPEG LA, L.L.C., 250 STEELE STREET, SUITE 300, DENVER, COLORADO 80206.

MPEG-4; THIS SOFTWARE MAY BE LICENSED UNDER THE MPEG-4 VISUAL PATENT PORTFOLIO LICENSE FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER FOR (i) ENCODING VIDEO IN COMPLIANCE WITH THE MPEG-4 VISUAL STANDARD (“MPEG-4 VIDEO”) AND/OR (ii) DECODING MPEG-4 VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED BY MPEG LA TO PROVIDE MPEG-4 VIDEO. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION INCLUDING THAT RELATING TO PROMOTIONAL, INTERNAL AND COMMERCIAL USES AND LICENSING MAY BE OBTAINED FROM MPEG LA, LLC. SEE [HTTP://WWW.MPEGLA.COM.](http://WWW.MPEGLA.COM/)

AVC/H.264: The use within this Software of any files using AVC/H.264 encoding and/or decoding are subject to the following restrictions: CERTAIN SOFTWARE HEREIN IS LICENSED UNDER THE AVC PATENT PORTFOLIO LICENSE FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (I) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD (“AVC VIDEO”) AND/OR (II) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE AVC VIDEO. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE [HTTP://WWW.MPEGLA.COM.](http://WWW.MPEGLA.COM/)

HEVC/H.265: The use within this Software of any files using HEVC/H.265 encoding and/or decoding are subject to the following restrictions. CERTAIN SOFTWARE HEREIN IS COVERED BY ONE OR MORE CLAIMS OF THE PATENTS LISTED AT PATENTLIST.HEVCADVANCE.COM, LICENSED UNDER PATENT PORTFOLIO LICENSES, AND MIGHT HAVE RESTRICTED RIGHTS OF USE AND/OR DISTRIBUTION. IN THESE CASES, NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE [HTTP://WWW.MPEGLA.COM](http://WWW.MPEGLA.COM/) AND/OR HEVC ADVANCE, L.L.C SEE <HTTP://WWW.HEVCADVANCE.COM>.

### 7. Other MPEG – No warranty

Your use of this Software to distribute CD’s, streaming video, or other media, or certain other commercial uses, may require additional licensing from other appropriate licensing sources, and no warranty is made otherwise.

### 8. Other Third-Party Licenses; Open Source.

This Software may include certain software, including libraries, licensed under the Lesser General Public License (LGPL) of the Free Software Foundation and other licenses. Some of the above restrictions may not apply to such software, and no warranties apply to such software. Information on such software, and relevant rights and limitations, is provided for review in the “Licenses” folder installed with the software. To the extent required by such open source license, the terms of such license will apply to such open source component in lieu of the relevant provisions of this Agreement. If such open source license prohibits any of the restrictions in this Agreement, such restrictions will not apply to respective open source component.

### 9. Trademarks.

NDI® is a registered trademarks of NDI. NDI claims either federal or common law rights in this and the other trademarks found at [www.NDI.video](http://www.NDI.video). All other brand names, product names, or trademarks belong to their respective holders.

### 10. Limited Content License.

The following terms apply to the use of the Content data that constitutes or is provided with the Software. The computer software, images, printed materials, and other content files, including any files containing photos, video clips, or music (collectively called the "Content Data") distributed with or in connection with the Software or subsequent updates and versions thereof (all such Images and Files), are proprietary and all copyrights are owned by NDI and/or its Licensors. NDI and the parties who granted NDI special permission to include their respective material as part of the Content Data own and reserve all rights. The Content Data is for your use only, and not to be distributed in whole or in part by you, whether or not incorporated into any other content or work, unless you have been expressly granted such right to incorporate the Content Data into your content or work. Certain specific Content Data may have express permissions granted with it. You agree to indemnify and hold harmless NDI and its officers, directors, employees and agents ("Indemnitees") for any and all losses, damages, liabilities, claims, costs, or expenses, including reasonable attorneys' fees, incurred directly or indirectly by the Indemnitees in connection with your use of the Content Data for any unlawful, unauthorized, or prohibited purpose. You may not sell, sublicense, loan, give, or transfer any part of the Content Data or any copies thereof (except in accordance with the aforementioned permitted use in a work created by you), to another person or company. Under no circumstances shall the Content Data be transferred to third parties through the use of on-line services or networks. In the event of a conflict between the terms of this License and this Limited Content License, the latter terms shall control.

### 11. Export Law Assurances.

You agree to comply with all applicable export/import laws and regulations when using or transferring this Software. You agree that neither the Software or any product including the Software is being or will be shipped, transferred or re-exported, directly or indirectly, into any country, or any organization or individual prohibited by any applicable export sanctions law. Any violation of this provision will terminate the license and void the transfer.

### 12. General.

The software licenses, limited warranties, and all other terms contained herein shall be construed under the laws of Sweden, notwithstanding its conflicts of law provisions.&#x20;

If any provision herein shall be held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and any remaining provisions will remain in full force and effect.&#x20;

The warranties provided herein give you specific legal rights. The warranties provided herein may be modified by applicable state or national laws; in some cases, you may have additional warranty rights that are mandated by the laws of a particular state or country. The above warranty limitations will not apply in case of personal injury where and to the extent that applicable law requires such liability.


# Privacy Policy

**Last Updated: 6th May 2025.**

This Privacy Policy covers information collected by Vizrt NDI AB (“NDI”, “we” or “us”) on its website [www.ndi.video and](https://docs.ndi.video/all/using-ndi/ndi-tools/installing-ndi-tools/http:/www.ndi.video and) subdomains (referred to as NDI Website or Website). This Privacy Policy is part of the Terms of Use of NDI Websites.

PLEASE KNOW YOU ARE NOT OBLIGATED TO USE OUR WEBSITE OR DOWNLOAD OUR PRODUCTS, SO BY USING OUR WEBSITES OR BY DOWNLOADING ANY NDI PRODUCTS, YOU ACKNOWLEDGE THAT YOU HAVE READ AND UNDERSTOOD THE CONTENT OF THESE TERMS, THE WEBSITE TERMS OF USE.

This Privacy Policy explains what and how we may gather, track or use information about you through your use of the Website (“Information”). NDI may collect personal data as well as non-personal data. Protecting your data is a top priority for us. The term “personal data” includes any information that enables the identification of a natural person, such as name, physical address, IP address, email address, phone number or behavior. NDI does not sell personal data to third parties.

In this policy, User Data means (i) technical information, including IP address, login information, type and version of operating system and device, time settings, language settings, screen settings, etc.; and (ii) information about your use of any of our services, including what features you have used and when, the duration of transactions, what pages and features you have used, etc. This Privacy Policy is applicable to all Information gathered or used by NDI at the Website.

## Categories of data processed, purposes and legal basis for processing.

If you visit the Website and consent to the placing of cookies, we may process your IP address to find out where in the world you are visiting the website from. The purpose of the processing is to collect data for statistical purposes and to enable security. The processing is based on the legal basis of balancing of interests as the processing is necessary to meet our legitimate interest to improve our services by using statistics on visitors to the website and to facilitate the security of the website and its visitors.

Please note that your IP address does not directly identify you as an individual. However, by cross-referencing your IP address with additional available information, your identity may be revealed. NDI will not attempt to identify you as a website user.

NDI may also process your activity on the website provided that you have given your consent to the placement of cookies. The purpose of the processing is to measure and analyze your use of the NDI website, deliver targeted advertisements and promotions, deliver commercial and transactional messages, and improve the Website, services and marketing. We may also process data you provide via pop-ups and similar dialog tools to provide relevant marketing to you. The processing is based on the legal basis of balancing of interests as the processing is necessary to meet our legitimate interest of being able to market our services and products and improve our website and services.

We further process the personal data you register via your registration and/or use of user account (such as name, address, company name, job title, telephone number and e-mail address) and any User Data when you create and use a user account with us.

We process your data for the purposes of managing your registration and/or termination of your user account, allowing you to log in and use your user account, ensuring your identity, maintaining accurate and up-to-date information about you and to enable and facilitate your prompt use of our community, assisting you with support issues and inquiries regarding your use of our community. The legal basis for processing such data is that the processing is necessary for NDI to fulfill its contractual obligations to you as a user of our services.

### How long will your personal data be stored?

Your IP address will be deleted no later than one year and thirty-five days after your last visit to our website, or anonymized to be used for statistical purposes. It is necessary for NDI to store the information for two weeks in order to produce event logs in case of security incidents.

We process your personal data that is necessary for us to be able to manage your registration of your user account, authorize you to log in and use your user account until you delete your user account with us.

Your user data will be deleted or anonymized no later than three (3) months after you have deleted your user account with us, if the personal data is not necessary to retain in order for us to comply with our obligations under legal requirements or if the data is otherwise needed to defend legal claims. Any data that is not required for the performance and development of the services or for statistical and quality assurance purposes will be anonymized after the purpose of the data has been fulfilled or deleted automatically.

## Cookies

“Cookies” are files which store certain information on your computer. When you visit the Website via your computer, it is possible that we will place a cookie on your computer that maintains certain information so that your computer is automatically recognized the next time it visits the Website.

Cookies are usually divided into four categories:

Necessary cookies – these cookies are essential for the functioning of the website.

Preference cookies – these cookies allow the website to save a visitor’s preferences in relation to, for example, language, currency or where the user is visiting from.

Analytical cookies – these cookies are used to analyze how a visitor uses the website, for example, which parts of the website they visit or which links they click on, in order to improve the design and functionality of the website.

Marketing cookies – these cookies are used to track a visitor’s use of the website. The information is used for marketing purposes. For example, by knowing what articles you have previously viewed, we can refine our marketing in a way that we think would be more interesting to you.

If you do not want us to deploy cookies on your computer, you can set your browser to reject cookies or to notify you when a website tries to put a cookie in your browser software. If you do not reject cookies, we assume that you consent to the use of cookies. Rejecting cookies, however, may affect your ability to use this Website including the online store.

In the event you request not to be tracked, an anonymous cookie without any personal information will be placed on your computer to prevent another permissions request. If your computer, however, automatically removes cookies, you will be presented the permission request each time you access the Website. If you chose to share content via Social Sharing buttons, Facebook, Google+, LinkedIn, or Twitter you agree to the privacy policies of those individual sites. The actions of social sharing are not covered under the terms of this Privacy Policy.

| COOKIE Name                                            | COOKIE Description                                                                                                                                                                                                                                            |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| elementor                                              | The website’s WordPress theme uses this cookie. It allows the website owner to implement or change the website’s content in real-time.                                                                                                                        |
| wpEmojiSettingsSupports                                | WordPress sets this cookie when a user interacts with emojis on a WordPress site. It helps determine if the user’s browser can display emojis properly.                                                                                                       |
| \_\_cf\_bm                                             | This cookie, set by Cloudflare, is used to support Cloudflare Bot Management.                                                                                                                                                                                 |
| bcookie                                                | LinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser IDs.                                                                                                                                                                   |
| MUID                                                   | Bing sets this cookie to recognize unique web browsers visiting Microsoft sites. This cookie is used for advertising, site analytics, and other operations.                                                                                                   |
| ANONCHK                                                | The ANONCHK cookie, set by Bing, is used to store a user’s session ID and verify ads’ clicks on the Bing search engine. The cookie helps in reporting and personalization as well.                                                                            |
| YSC                                                    | Youtube sets this cookie to track the views of embedded videos on Youtube pages. .                                                                                                                                                                            |
| VISITOR\_INFO1\_LIVE                                   | YouTube sets this cookie to measure bandwidth, determining whether the user gets the new or old player interface.                                                                                                                                             |
| VISITOR\_PRIVACY\_METADATA                             | YouTube sets this cookie to store the user’s cookie consent state for the current domain.                                                                                                                                                                     |
| yt.innertube::requests,                                | YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.                                                                                                                                                 |
| yt.innertube::nextId,                                  | YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.                                                                                                                                                 |
| visitor\_id\*                                          | Pardot sets this cookie to store a unique user ID.                                                                                                                                                                                                            |
| CLID                                                   | Microsoft Clarity set this cookie to store information about how visitors interact with the website. The cookie helps to provide an analysis report. The data collection includes the number of visitors, where they visit the website, and the pages visited |
| \_ga\_\*                                               | Google Analytics sets this cookie to store and count page views.                                                                                                                                                                                              |
| \_ga                                                   | Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site’s analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors.       |
| \_clck                                                 | Microsoft Clarity sets this cookie to retain the browser’s Clarity User ID and settings exclusive to that website. This guarantees that actions taken during subsequent visits to the same website will be linked to the same user ID.                        |
| SM                                                     | Microsoft Clarity cookie set this cookie for synchronizing the MUID across Microsoft domains.                                                                                                                                                                 |
| MR                                                     | This cookie, set by Bing, is used to collect user information for analytics purposes.                                                                                                                                                                         |
| \_clsk                                                 | Microsoft Clarity sets this cookie to store and consolidate a user’s pageviews into a single session recording.                                                                                                                                               |
| pardot                                                 | The pardot cookie is set while the visitor is logged in as a Pardot user. The cookie indicates an active session and is not used for tracking.                                                                                                                |
| li\_gc                                                 | Linkedin set this cookie for storing visitor’s consent regarding using cookies for non-essential purposes.                                                                                                                                                    |
| lidc                                                   | LinkedIn sets the lidc cookie to facilitate data center selection.                                                                                                                                                                                            |
| ytidb::LAST\_RESULT\_ENTRY\_KEY                        | The cookie ytidb::LAST\_RESULT\_ENTRY\_KEY is used by YouTube to store the last search result entry that was clicked by the user. This information is used to improve the user experience by providing more relevant search results in the future.            |
| yt-remote-device-id                                    | YouTube sets this cookie to store the user’s video preferences using embedded YouTube videos.                                                                                                                                                                 |
| <p> yt-remote-connected-devices,  </p><p> </p><p> </p> | YouTube sets this cookie to store the user’s video preferences using embedded YouTube videos.                                                                                                                                                                 |
| yt-remote-session-app                                  | The yt-remote-session-app cookie is used by YouTube to store user preferences and information about the interface of the embedded YouTube video player.                                                                                                       |
| yt-remote-cast-installed                               | The yt-remote-cast-installed cookie is used to store the user’s video player preferences using embedded YouTube video.                                                                                                                                        |
| yt-remote-session-name                                 | The yt-remote-session-name cookie is used by YouTube to store the user’s video player preferences using embedded YouTube video.                                                                                                                               |
| yt-remote-fast-check-period                            | The yt-remote-fast-check-period cookie is used by YouTube to store the user’s video player preferences for embedded YouTube videos.                                                                                                                           |
| SRM\_B                                                 | Used by Microsoft Advertising as a unique ID for visitors.                                                                                                                                                                                                    |

## Non-Personal Data

In addition to personal data, NDI may automatically track general Information such as Internet browser and operating system used, domain name of the Website you are coming from, number of visits, average time of use and pages accessed. We use this Information to analyze aggregate traffic patterns throughout this Website to continually improve our online offerings, the Website’s user friendliness, its efficiency, etc. Your identity cannot be determined from this Information and this Information will only be used by NDI to offer you a product or the service of the Website and to improve it.

It should be noted that we may anonymize your personal data to use it for statistical purposes. The processing is based on the legal basis of balancing of interests as the processing is necessary to meet our legitimate interest to use anonymized personal data for product development purposes and to analyze customer behavior to improve our services and our Customers’ customer experience. By anonymizing data relating to you, we also ensure that we use personal data as little as possible.

## Device-related Data Collection

### **Purpose and Scope**

We are committed to continuously improving our products and services. To achieve this, we collect and analyze device-related data on the usage of our applications. This section outlines how we collect, process, and use this data in a manner that ensures your privacy is protected.

### **What Data We Collect**

The device-related data we collect is de-identified (by means of irreversible hashing) and cannot be linked back to any individual user.The types of device-related data we may collect and de-identify include:

* Application Usage: Information on which of our applications are run, the frequency of use, start and stop times, and specific features utilized (e.g., buttons clicked, menu items selected).
* Device Information: General technical information about the device used, such as operating system, system hostname or similar device identifier and IP address (used only to determine approximate location, and then deleted)&#x20;
* Location Data: General geographic information, such as the city, country, or region from where the application is accessed.

### **How We Use De-identified Data**

The device-related data collected is used for the following purposes:&#x20;

* Product Improvement: To enhance the performance, functionality, and user experience of our applications based on how they are used.
* Analytics: To understand overall usage patterns and trends, which helps us make data-driven decisions.
* Marketing: To better understand the global reach of our products and identify areas where targeted marketing efforts may be beneficial.

## Device Certification Requests

Information submitted via our certification request forms is maintained in our certification database and is used for evaluating and processing certification requests, as well as for internal statistical analysis and operational purposes. When submitting a certification request, we collect the following personal data of you: your name, company, email address, and address. Only the information marked as required on the form is necessary to complete your certification request.

By providing your email address, you acknowledge that we may contact you with updates regarding your certification request and other information related to our services. You may contact us at \[EMAIL] to request the removal of your information from our database or to opt out of receiving such communications.

## Links to third-party websites

This Privacy Policy exclusively addresses the activities of the Website. Other sites (including those that we link to from our Website, and third party sites or services which we co-brand) may have their own policies, which we do not control, and thus are not addressed by this Privacy Policy.

## Product Registration

Information submitted via our product registration forms is maintained in our registration database, and is used for statistical analysis and internal operations, as well as to update our subscriber lists. When registering your product, only the information that appears with an asterisk is required from you. By providing your email address, you are acknowledging that we may send you periodic product announcements, and other information related to NDI. You may contact us at <marketing@ndi.video> to remove your email information from our database.

### **Microsoft Clarity**

We partner with Microsoft Clarity and Microsoft Advertising to capture how you use and interact with our website through behavioral metrics, heatmaps, and session replay to improve and market our products/services. Website usage data is captured using first and third-party cookies and other tracking technologies to determine the popularity of products/services and online activity. Additionally, we use this information for site optimization, fraud/security purposes, and advertising. For more information about how Microsoft collects and uses your data, visit the Microsoft Privacy Statement.

### **Facebook Publication Integration for TriCaster & 3Play**

We use the following permissions on Facebook: Publish video – The publish video permission allows your app to publish live videos to an app user’s timeline, group, event, or Page. The allowed usage for this permission is to live-video stream to an app user’s timeline, group, event or Page.

Publish pages – The pages manage posts permission allows your app to create, edit and delete your Page posts. If you have access to pages read user content, you can also use pages manage posts to delete Page posts created by a user. The allowed usage for this permission is to create and delete content on a Page.

Publish to groups – The publish to groups permission allows your app to post content into a Group on behalf of a person if they’ve granted your app access. The allowed usage for this permission is to allow people to publish content from your app to their Facebook group or to help people manage the content published to their group

### **How we use these permissions:**

These permissions are used to collect a list of groups or pages that the user has permission to post to.

The names, IDs, and access tokens of the pages and groups are used to post live videos or upload videos on the user’s behalf.

NDI may also use this permission to request analytics insights to improve this integration, and for marketing or advertising purposes, using aggregated and de-identified or anonymized information (provided such data cannot be re-identified).

## Information Requests

NDI uses the Website to better educate customers about our products. For this reason, we may have forms on our site that can be used to request specific information. In such forms, you may provide us with your name, address, company name, job title, email address and other requested information. If you request information, you will receive it in the manner described on the form (postal mail, email, telephone contact, etc.). We will use the information you provide to contact you in the method you prefer. We may use that information for other purposes including marketing, but we will not sell that information to third parties. By providing your email address to us, you are acknowledging that we may send you periodic product announcements, and other information related to NDI.

Your email address will be deleted, or anonymized for statistical purposes, when you choose not to receive NDI’s communication anymore by exercising your right to unsubscribe by clicking on the link provided in each mailing or by contacting NDI at <marketing@ndi.video> to inform us of your desire to stop receiving our communication and for us to delete your personal data.

## Event Registration

Sometimes we may provide for registering for events on our website. When you register for an event, your contact information may be added to our database for future communication, or for statistical purposes.

Your email address will be deleted, or anonymized for statistical purposes, when you choose not to receive NDI’s communication anymore by exercising your right to unsubscribe by clicking on the link provided in each mailing or by contacting NDI at <marketing@ndi.video> to inform us of your desire to stop receiving our communication and for us to delete your personal data.

## Risks of Hacking

It is important to remember that whatever you transmit or disclose online can be collected and used by others or unlawfully intercepted by third-parties. No data transmission over the Internet can be guaranteed to be 100% secure. While we strive to use commercially reasonable means to protect your information, we cannot warrant the security of any information you transmit to us.

## Your Rights

### What are your rights?

You have several rights when we process personal data about you. If you wish to exercise any of the rights listed below or if you have any questions regarding our processing of your personal data, please contact us at <marketing@ndi.video>. If you have any objections or complaints about the way we process your personal data, you have the right to file a complaint with the data protection authority in your jurisdiction within the EU/EEA.

#### **Right of access and information**

You may request to be informed whether we are processing personal data about you and, if so, to receive a copy of it, together with other supplementary information on the purposes of the processing, the categories of personal data concerned by the processing, the recipients to whom the personal data have been or will be disclosed, the retention period and the existence of the right to request rectification and erasure as well as to request restriction and to object to processing. You also have the right to be informed of the right to lodge a complaint with IMY and of the source of the personal data, as well as of the existence of automated decision-making together with certain additional information.

#### **Right to rectification**

If you believe that the personal data we process about you is inaccurate or incomplete, you can request that the data be rectified or completed.

#### **Right to object**

When we process personal data based on our legitimate interest, you have the right to object to the processing at any time. If we cannot demonstrate compelling legitimate grounds to continue processing the data, we must stop the processing of the personal data. You also have the right to object to processing of personal data for direct marketing purposes, including profiling.

**Right to restriction of processing**

In certain cases, for example if you have objected to our processing of your personal data, contested the accuracy of the personal data or if the processing is unlawful, you have the right to request the restriction of the processing of your personal data. By requesting a restriction, you have the possibility, at least for a certain period of time, to stop us from using the data other than to, e.g., defend legal claims, for example. You can also prevent us from erasing the data, for example if you need the data to claim damages.

#### **Right to erasure**

You have the right to have your personal data deleted if it is no longer necessary for the purposes for which it was collected, if you have withdrawn the consent on which the processing was based, if you object to the processing and there are no overriding legitimate grounds for the processing, if the personal data has been processed unlawfully, or if the personal data must be deleted in order to fulfil a legal obligation.

#### **Right to data portability**

You have the right to obtain the personal data that you have provided to us in a structured, commonly used and machine-readable format and transfer this data to another controller if the processing is based on your consent or an agreement between us

#### **Right to withdraw consent**

Where we process personal data based on your consent, you have the right to withdraw the consent at any time. We are then obliged to stop processing your personal data on the basis of your consent with future effect.

## Updates.

NDI may update this Privacy Policy from time to time. If so, NDI will make the revised Privacy Policy available through this Website. We cannot provide you with any separate notice of that fact, so please check back regularly for any updates.


# NDI Tools Launcher

Quick acess to all your NDI Tools, and more.

The **NDI Launcher** is a platform where you can access all the tools you have [installed](/all/using-ndi/ndi-tools/installing-ndi-tools) on your computer. By clicking on any card, you'll open that specific tool. Alternatively, you can find all the tools within your selected folder (by default, they will be installed in the Applications folder).

<div><figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F39ltSYdXThRykbKn2GuS%2Fimage%20(13).png?alt=media&amp;token=d35854d1-d470-4f3d-b1c4-b562febcccda" alt="" width="563"><figcaption><p>NDI Launcher for Windows</p></figcaption></figure> <figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FWDJV0fg18eOBArqgDiYM%2Fimage.png?alt=media&amp;token=b813b574-b882-40b5-b3ef-0099b2cb0c0b" alt="" width="563"><figcaption><p>NDI Launcher for MacOS</p></figcaption></figure></div>

***

## Register your NDI Tools

Upon opening the NDI Launcher for the first time, you'll be prompted to **register your NDI Tools**.&#x20;

This helps us keep improving your experience as a user. You can also subscribe to our mailing list to keep receiving exclusive updates and news about community initiatives by checking the box at the bottom.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/VCsm4rKmdC8M9TAskpce/Login%20screen.png" alt="" width="563"><figcaption></figcaption></figure>

***

## Group Privacy

By default, your NDI channels are public. This means they will be available for anyone to access as long as they are connected to the same network as you. \
\
**Group privacy** can be enabled in two simple steps:

1. Click the `Privacy` box at the top right corner of the launcher.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2Frrhok8XrodGGgwwp2D6s%2Fimage.png?alt=media&amp;token=816b0364-d7fc-4957-b968-3bdd1d81c0bf" alt="" width="329"><figcaption><p>Once enabled, the icon next to the Privacy options should turn green.</p></figcaption></figure>

1. Replace "Public" on the `NDI Group Name` field with a personalized group name to **enable privacy for your group**. &#x20;

You can then share this name with others so they can enter your **private group**.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2Fw7ez4cP3zo5g3cWUYDmn%2Fimage%20(16).png?alt=media&amp;token=22a29fa5-1249-479c-bdfb-1ca93d8b325b" alt=""><figcaption><p>Group Privacy settings on the NDI Launcher</p></figcaption></figure>

{% hint style="warning" %}
You can learn more about [NDI Groups](/all/getting-started/white-paper/discovery-and-registration/ndi-groups) in our white paper.
{% endhint %}

***

## Automatic Start at (Windows only)

In the NDI launcher for Windows, you can set up some tools to be launched automatically every time you start your computer. This could save you some time when setting up workflows.

**Check the boxes** to select which tools you want to launch automatically.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F7QoFnTCWkYV1zbTfxrtr%2Fimage%20(17).png?alt=media&amp;token=b7be7e6b-c983-4014-a81a-97821d4395b5" alt=""><figcaption><p>Additional Settings on the NDI Launcher</p></figcaption></figure>


# NDI Tools for Mac vs Windows

## Introduction

NDI Tools is available for both Windows and macOS, but the platforms do not offer identical utilities or the same feature depth. Both operating systems include the core tools needed to configure, route, and monitor NDI streams. However, several applications are platform-specific, and even shared tools may differ in implementation or capability. Understanding these differences is important when designing workflows, especially in environments that rely on remote production, GPU acceleration, or advanced monitoring.

### Core Tool Availability by Platform

**NDI Tools for Windows includes:**

* [Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager)
* [Bridge](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge)
* [Router](/all/using-ndi/ndi-tools/ndi-tools-for-windows/router)
* [Screen Capture](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture)
* [Screen Capture HX](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx)
* [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor)
* [Test Patterns](/all/using-ndi/ndi-tools/ndi-tools-for-windows/test-patterns)
* [Webcam Input](/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input)
* [Discovery](/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery)

**NDI Tools for Mac includes:**

* [Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-mac/access-manager)
* [Scan Converter](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter)
* [Router](/all/using-ndi/ndi-tools/ndi-tools-for-mac/router)
* [Test Patterns](/all/using-ndi/ndi-tools/ndi-tools-for-mac/test-patterns)
* [Video Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor)
* [Virtual Input](/all/using-ndi/ndi-tools/ndi-tools-for-mac/virtual-input)
* [Discovery](/all/using-ndi/ndi-tools/ndi-tools-for-mac/discovery)

The overlap centers on configuration and routing utilities. The main differences are in capture tools, monitoring utilities, and virtual camera functionality.

#### Windows-Exclusive Tools and Capabilities

NDI Bridge enables remote NDI workflows across WAN or VPN connections. It supports H.264 and HEVC transcoding, alpha channel transmission, encryption, and port forwarding. It also includes KVM functionality for remote control scenarios, which makes it well suited for distributed production environments.

Screen Capture HX provides GPU-accelerated capture with integrated compression. Users can define bandwidth presets, control resolution and frame rate, and use H.264 or HEVC encoding to optimize network performance. KVM remote control is also supported.

Webcam Input allows NDI sources to appear as standard webcam devices in conferencing applications. It includes system tray controls, audio channel grouping, customizable output resolution, and dedicated audio and video configuration tabs.

#### macOS-Exclusive Tools and Capabilities

On macOS, screen capture is handled by Scan Converter instead of separate standard and HX variants. Scan Converter captures either a full desktop or a single application using macOS native screen capture integration. Because it operates within the macOS privacy framework, users must grant the appropriate system permissions. Unlike Windows, individual monitor capture in multi-display environments is not supported.

Virtual Input functions as a system camera extension. It requires Camera Extension approval in macOS System Settings and operates within Apple’s extension management framework. As a result, deployment and troubleshooting may involve system-level permissions rather than application-level configuration.

Video Monitor allows users to view NDI sources and includes PTZ control and recording functionality. It also supports low-bandwidth mode and web-based control through a QR code or IP address. It does not provide the same depth of overlays, routing, or advanced monitoring features as Windows Studio Monitor.

#### Monitoring Tool Comparison

Windows includes Studio Monitor, which provides overlays, VU meters, safe area guides, alpha channel display, flip controls, lowest-latency mode, picture-in-picture, USB joystick PTZ control, and NDI video output routing. It is suitable for both previewing and technical validation.

macOS includes Video Monitor, which supports PTZ control, recording, low-bandwidth mode, and web-based remote control. However, it offers fewer overlay, routing, and advanced monitoring features than its Windows counterpart.

#### Screen Capture Implementation Differences

On Windows, Screen Capture supports full desktop capture and lets users define a region of interest. Screen Capture HX adds GPU acceleration, compression, and bandwidth management.

On macOS, Scan Converter captures either the full desktop or a selected application using native system integration. Capture behavior is governed by macOS privacy permissions, and individual monitor capture in multi-display setups is not supported.

#### Shared Tools Across Both Platforms

Both Windows and macOS include Access Manager, Router, Test Patterns, and Discovery. Access Manager allows configuration of NDI groups and Discovery Server settings. Router enables routing of up to 64 sources to 64 destinations with preset recall functionality. Test Patterns generates calibration patterns, custom images with alpha channel support, and audio tones. Discovery allows users to view active NDI senders and receivers and configure Discovery Server IP and port settings.

#### System Integration Differences

On Windows, users benefit from startup integration options, GPU acceleration for Screen Capture HX, and expanded UI-based configuration.

On macOS, applications operate within Apple’s privacy and extension frameworks. Virtual Input requires camera extension approval, running multiple Video Monitor instances requires a Terminal command, and audio routing is tied to macOS system settings, often requiring third-party virtual cable software.

#### Summary

Both Windows and macOS versions of NDI Tools provide the core utilities needed for NDI configuration, routing, and monitoring. Windows offers a broader feature set for remote workflows, GPU-accelerated capture, advanced monitoring overlays, and granular virtual webcam configuration. macOS provides streamlined native integration within Apple’s ecosystem but operates within stricter system-level permission and extension requirements.

Platform selection should be guided by workflow complexity, monitoring requirements, remote production needs, and network architecture, rather than by assumptions of feature parity.


# NDI Tools for Windows

{% hint style="success" %}
If you can't find the answers you're looking for here check out our [**community forums**](https://community.ndi.video/mod/forum/view.php?id=39) or see our [**troubleshooting guide**](/all/faq/troubleshooting-guides)
{% endhint %}

The following guides provide detailed information about our suite of NDI Tools for Windows, including their features, capabilities, and practical applications. From setup instructions to advanced tips, these resources are designed to help you maximize the potential of NDI technology in your workflows.

{% hint style="warning" %}
Looking for NDI Analysis? Analysis is currently not available on the Tools Launcher. You can download it [**here from our main website**](https://ndi.video/tools/analysis/)
{% endhint %}

{% hint style="info" %}
Click on a card to discover more about the functions and features of each NDI Tool. You can [**install NDI Tools here**](https://ndi.video/tools/)
{% endhint %}

<table data-view="cards"><thead><tr><th align="center"></th><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Access Manager</strong></td><td align="center"><em>Streamline NDI Source Management.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager">Access Manager</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/53tCtPYkd85i1MJGjaBD/Docs%20cover%20Access%20Manager.png">Docs cover Access Manager.png</a></td></tr><tr><td align="center"><strong>Bridge</strong></td><td align="center"><em>Simplify Remote NDI Workflows.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge">Bridge</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/4qu4R2YJ9cIegl44zan3/Docs%20cover%20Bridge.png">Docs cover Bridge.png</a></td></tr><tr><td align="center"><strong>Remote</strong></td><td align="center"><em>Connect with multiple remote contributors.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/remote-discontinued">Remote - DISCONTINUED</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/xYlmtRKETNZak0Kfa7Vw/Docs%20cover%20Remote.png">Docs cover Remote.png</a></td></tr><tr><td align="center"><strong>Router</strong></td><td align="center"><em>Streamline Video and Audio Signal Routing.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/router">Router</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/SndK9PT1EzB6b0teWz1F/Docs%20cover%20Router.png">Docs cover Router.png</a></td></tr><tr><td align="center"><strong>Screen Capture</strong></td><td align="center"><em>Share Your Desktop Seamlessly.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture">Screen Capture</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/9w9S5Id5wJMPiQjK7n2k/Docs%20cover%20Screen%20Capture.png">Docs cover Screen Capture.png</a></td></tr><tr><td align="center"><strong>Screen Capture HX</strong></td><td align="center"><em>Elevate Your Network Display Experience.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture-hx">Screen Capture HX</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/9w9S5Id5wJMPiQjK7n2k/Docs%20cover%20Screen%20Capture.png">Docs cover Screen Capture.png</a></td></tr><tr><td align="center"><strong>Studio Monitor</strong></td><td align="center"><em>Your Window to NDI Signals.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor">Studio Monitor</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/afyRl7it4aUoAHLU4agB/Docs%20cover%20Studio%20Monitor.png">Docs cover Studio Monitor.png</a></td></tr><tr><td align="center"><strong>Test Patterns</strong></td><td align="center"><em>Streamline Connectivity and Calibration.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/test-patterns">Test Patterns</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/EjHaNdgCH1nSDIzYMB5w/Docs%20cover%20Test%20Patterns.png">Docs cover Test Patterns.png</a></td></tr><tr><td align="center"><strong>Webcam</strong></td><td align="center"><em>Elevate Your Webcam Conferencing Experience.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-windows/webcam-input">Webcam Input</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/ofmG3CXI3NOlDS1lyfPK/Docs%20cover%20Webcam.png">Docs cover Webcam.png</a></td></tr><tr><td align="center"><strong>NDI Discovery</strong></td><td align="center"><em>Manage and Monitor Everything</em></td><td></td><td data-object-fit="contain"><a href="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FjVmCmO2ZWKUZ0Lcudyoa%2FNDI%20ICON%20-%20STUDIO%20MONITOR%20_%20VIDEO%20MONITOR.png?alt=media&amp;token=57d9ff3c-c525-4a8b-93b4-3417b82efceb">NDI ICON - STUDIO MONITOR _ VIDEO MONITOR.png</a></td></tr></tbody></table>

{% hint style="warning" %}

### System Minimum Requirements

**Operating System**: Windows 10 64bit or later

**Processor**: Intel or AMD CPUs with SSE4 or later

**GPU**: NVIDIA, AMD, Intel GPU/APU • 6Gb of RAM or better

**Other:** 1Gbps Local Area Network
{% endhint %}

{% hint style="info" %}
You can find information on how to unintall NDI Tools on the official [Windows support page](https://support.microsoft.com/en-us/windows/uninstall-or-remove-apps-and-programs-in-windows-4b55f974-2cc6-2d2b-d092-5905080eaf98)
{% endhint %}


# Access Manager

Streamline NDI Source Management.

**NDI Access Manager** is a tool designed to give you control over the visibility and discoverability of NDI sources within your network. This tool allows you to manage precisely who can see specific NDI sources through the utilization of [send and receive groups](/all/getting-started/white-paper/discovery-and-registration/ndi-groups).

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Access Manager**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Access Manager from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Creating Groups**

In the "Groups" tab, create different NDI groups (by clicking the **plus sign icon**) to determine which devices can send or receive specific NDI signals.

#### **Example Scenario:**

In this screenshot, the group "Public" can both receive and send, meaning any device can see the output NDI signals of this computer, and it can also see any other device in the same group "Public".

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/HUPN3DeUpk266GVQ1VlD/Access%20Manager%201.jpeg" alt="" width="410"><figcaption><p>Creating a new NDI Receive Group</p></figcaption></figure>

To configure a group, you should attribute it to a name. You can also add a small memo/note with additional information about the group.

By entering group names, you **restrict NDI sources to only those devices that have the corresponding Group in their Receive Groups list.**

***

## Configuring **Devices**

{% hint style="info" %}
If you want to explore some examples of how to connect different devices to NDI Groups, check the [scenarios](/all/getting-started/white-paper/discovery-and-registration/ndi-groups#scenarios) in our White Paper.
{% endhint %}

***

## **External Sources**

* Use the **External Sources** tab to reach NDI-enabled devices on subnets that are not on your current network.
* Add external sources by specifying IP addresses, providing easily identifiable names, and managing settings.

***

## **Advanced Settings**

Explore advanced settings in the "Advanced" tab to address specific network challenges:

* **Configure transport modes, multicast ranges, network mapping**, and more.
* To streamline the management of NDI signals, particularly in larger networks, **designate an NDI discovery server, set preferred** [**NICs**](#user-content-fn-1)[^1]**, and define device aliases**.&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/XiMHLVL0dwHDsSBBJMva/Access%20Manager%203.JPG" alt="" width="492"><figcaption><p>The "Advanced" tab allows you to tackle more complex networking needs.</p></figcaption></figure>

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F6nNqQTjfylefDgW04Oo6%2Fimage.png?alt=media&amp;token=82fa61b8-f49b-47e3-8cb3-bcfff9dd5e23" alt=""><figcaption><p>You can select your preferred receive options here</p></figcaption></figure>

NDI Access Manager settings are saved into a specific file in the computer's operating system. All NDI applications will look for this file when they first start to get the NDI configuration data.  If this file is updated while an NDI application is running, it will continue to use the previous information.   To refresh the settings for an NDI application, restart it again which will make it read the file and get the new settings.

The NDI Access Manager configuration file is stored in the following location:

`%programdata%/NDI/ndi-config.v1.json`

{% hint style="warning" %}
Always ensure network configurations align with IT guidelines for better network compatibility and optimal performance. Consult with your IT department before configuring NDI Access Manager.
{% endhint %}

[^1]: A network interface controller (NIC, also known as a network interface card, network adapter, LAN adapter, or physical network interface, and by similar terms) is a computer hardware component that connects a computer to a computer network.


# Bridge

Simplify Remote NDI Workflows.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

**NDI Bridge** enables the interconnection of remote NDI infrastructures, incorporating multipoint capabilities. It delivers local convenience on a global scale as it handles all the complexity of remote sources, supporting all of the benefits of NDI, including:

* **Video Transcoding** for transmitting streams over the internet using H.264[^1] or HEVC[^2] compression
* [**Alpha channel**](#user-content-fn-3)[^3] support (due to h.264 compression's resolution limitations, it is only possible to use HD resolution with an alpha channel or UHD without it. HEVC supports all reasonable resolutions with and without alpha)
* **Multichannel audio** support
* [**PTZ**](#user-content-fn-4)[^4] controls
* **Tally** support
* [**KVM**](#user-content-fn-5)[^5] (Keyboard, Video, Mouse) support
* **Custom metadata**

This system is comprised of three key components:

* [**Host**](#host-mode)
* [**Join**](#join-mode)
* [**Local**](#using-ndi-bridge-locally)

***

## **Host Mode**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/bx74TNiJx9qKrwQl8Bar/Bridge%201.png" alt="" width="369"><figcaption><p>Screenshot of Host menu on NDI Bridge (Windows)</p></figcaption></figure>

In **Host mode,** you can configure the following settings:

* **Groups to Share:** Share specific NDI Groups defined in the NDI local network by the NDI Access Managers.
* **Bridge Name**: Define a specific name for the connected bridge system. This name helps to identify the sources shared through a remote Bridge.

{% hint style="warning" %}
The Bridge Name specified must be unique.
{% endhint %}

* **Server IP Address**: This field is automatically populated by default on Bridge startup; the application automatically discovers the public IP address of the wan connection. However, NDI Bridge Host/Join can be used inside a local area network or over an existing VPN; a local Bridge Join can connect to a local Host using the physical Host IP Address.
* **Port**: Define the network port used by the remote Bridge Join to establish the connection with the Host through a [port forwarding](#user-content-fn-6)[^6] (NAT[^7]).
* **Encryption Key**: Encryption ensures that only authorized parties can access the connection and data transmission between Bridge applications.&#x20;

{% hint style="danger" %}
The strength of the key, determined by its length and complexity, is crucial to the security of the encrypted data.
{% endhint %}

* **Resolve Public IP and Port**: This option allows the Bridge Application to automatically find and verify the public IP address and the port forwarding configuration.
* **Buffer**: The buffer setting in NDI Bridge is a configurable option that determines the amount of video data the system temporarily stores (or buffers) during transmission. \
  \
  This setting helps manage the data flow and can improve the stability of the video stream, especially over networks with varying latency or bandwidth. By adjusting the buffer, you can find a compromise between lower latency and smoother video playback, depending on the network conditions and performance requirements.

### **Encoder Settings**

Adjust encoder settings to define how signals are shared across the wide-area network.<br>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/oz0RbvsFywNEiHnzY9oe/encoder%20settings.jpeg" alt="" width="297"><figcaption><p>Screenshot of Encoder Settins menu on NDI Bridge (Windows)</p></figcaption></figure>

**Check Compatibility:** Verifies if the system can support h.264 and h.265 (HEVC) encoding and decoding.&#x20;

{% hint style="info" %}
In Windows 10 and above, the HEVC decoder is an additional license that can be purchased through the [Microsoft Store App](https://apps.microsoft.com/detail/9NMZLZ57R3T7?hl=en-US\&gl=US).
{% endhint %}

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/H2nFEedI4Gm1XXZmD9NU/Compatibility.JPG" alt="" width="525"><figcaption><p>Screenshot of Compatibility Check menu on NDI Bridge (Windows) </p></figcaption></figure>

**Output**: Configure how NDI Bridge manages the stream transcoding:

| Transcoding format | Video codec   | Audio codec                         |
| ------------------ | ------------- | ----------------------------------- |
| NDI HX             | H.264 or HEVC | Opus (Max. 255 audio ch per stream) |
| NDI High Bandwidth | SpeedHQ       | Passthrough PCM Uncompressed        |
| Do Not Transcode   | N/A           | Opus (Max. 255 audio ch per stream) |

***

## **Join mode**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/4wUxCN80mlLyIEWENudJ/Bridge2.JPG" alt="" width="369"><figcaption><p>Screenshot of Join menu on NDI Bridge (Windows)</p></figcaption></figure>

Through **Join mode**, you can connect your local NDI network to a remote Host. On the menu, you can configure the following settings:

* **Groups to Share:** Share specific NDI Groups defined in the NDI local network by the NDI Access Managers.
* **Bridge Name**: Define a specific name for the connected bridge system. This name helps to identify the sources shared through a remote Bridge.

{% hint style="warning" %}
The Bridge Name specified must be unique.
{% endhint %}

* **Server IP Address**: define the public IP address of the remote Bridge Host.
* **Port**: Define the network port used by the remote Bridge Join to establish the connection with the Host through a [port forwarding](#user-content-fn-6)[^6] (NAT[^7]).
* **Encryption Key**: Encryption ensures that only authorized parties can access the connection and data transmission between Bridge applications.&#x20;

{% hint style="danger" %}
The strength of the key, determined by its length and complexity, is crucial to the security of the encrypted data.
{% endhint %}

* **Resolve Public IP and Port**: This option allows the Bridge Application to automatically find and verify the public IP address and the port forwarding configuration.
* **Buffer**: The NDI Bridge buffer setting is a configurable option that determines the amount of video data the system temporarily stores (or buffers) during transmission. \
  \
  This setting helps manage the data flow and can improve the stability of the video stream, especially over networks with varying latency or bandwidth. By adjusting the buffer, you can find a compromise between lower latency and smoother video playback, depending on the network conditions and performance requirements.

***

## Using NDI Bridge Locally

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/DARyCO77nOF1GgWl8jDG/Bridge3.JPG" alt="" width="369"><figcaption><p>Screenshot of Local menu on NDI Bridge (Windows)</p></figcaption></figure>

NDI Bridge can be used inside a local area network using the Local mode for the following use cases:

**Transcoding NDI High Bandwidth to NDI HX**, which can be useful for distributing NDI streams with a lighter codec (h.264 or h.265).

**Unicast repeater:** By default, NDI transmitters use unicast, and the network interface's capacity limits their output capability. When an NDI stream needs to be shared with multiple receivers, NDI Bridge can be employed to leverage a larger network capacity by using Bridge in local mode. \
\
In the encoding settings, the "**Do Not Transcode**" option can be selected. This allows the NDI Bridge to replicate the requested stream to multiple receivers, overcoming the limited unicast capacity of the original NDI transmitter.

**Here's how to configure Local Mode**:

1. Select the **Local** tab.
2. Enter the [NDI Access Manager groups](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager) and bridge name.
3. Adjust the [Encoder Settings](#id-1.1.-encoder-settings).
4. Click **Start** to activate the NDI Bridge in Local mode.

{% hint style="info" %}

#### An NDI Bridge executable can also be launched using the following [command line arguments](/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge/ndi-bridge-automation).

{% endhint %}

***

## Troubleshooting

{% hint style="success" %}
To troubleshoot common issues hover your cursor over the yellow exclamation point for a tool tip of the issue
{% endhint %}

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FBJnH31Dj05txpbr6x7jy%2Fimage.png?alt=media&amp;token=a5d9aa24-3d44-4ac1-b85b-32ebb3c819a3" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FDYzkZNg0xVYGD2cjRdbJ%2Fimage.png?alt=media&amp;token=e5d66faa-c59f-4db2-82f3-b368622fb7f9" alt=""><figcaption></figcaption></figure>

[^1]: Advanced Video Coding (AVC), also called **H. 264**, is the most common video compression standard used today. AVC/H. 264 can encode high-quality video at lower bit rates than older compression standards.

[^2]: High Efficiency Video Coding (**HEVC**), also known as H.265 and MPEG-H Part 2, is a [video compression standard](https://en.wikipedia.org/wiki/Video_coding_format) designed as part of the [MPEG-H](https://en.wikipedia.org/wiki/MPEG-H) project as a successor to the widely used [Advanced Video Coding](https://en.wikipedia.org/wiki/Advanced_Video_Coding) (AVC, H.264, or [MPEG-4](https://en.wikipedia.org/wiki/MPEG-4) Part 10). In comparison to AVC, HEVC offers from 25% to 50% better [data compression](https://en.wikipedia.org/wiki/Data_compression) at the same level of [video quality](https://en.wikipedia.org/wiki/Video_quality).

[^3]: The **alpha channel** is a color component that represents a color's degree of transparency or opacity (i.e., the red, green, and blue channels). It determines how a pixel is rendered when blended with another.

[^4]: **PTZ** is an abbreviation for Pan-Tilt-Zoom, normally applied to cameras that can pan, tilt, and zoom.

[^5]: **KVM** stands for “Keyboard, Video (monitor), Mouse.” The main function of a KVM switch is to control, switch between, and manage multiple PCs or servers via a single keyboard, monitor, and mouse (also referred to as the 'console').

[^6]: **Port** **forwarding** in a network router or firewall is a technique used to direct incoming internet traffic to a specific device or service within a private local area network (LAN). It is commonly used to allow external devices to access services hosted within a private network.

[^7]: Network address translation (**NAT**) is a method of mapping an IP [address space](https://en.wikipedia.org/wiki/Address_space) into another by modifying [network address](https://en.wikipedia.org/wiki/Network_address) information in the [IP header](https://en.wikipedia.org/wiki/IP_header) of packets while they are in transit across a traffic [routing device](https://en.wikipedia.org/wiki/Router_\(computing\)).


# NDI Bridge automation

An NDI Bridge executable can also be launched using the following command line arguments:

`/verbose`\
Generates extensive log entries in Windows Event Logs, with the event source labeled as "NDI Bridge."

`/host`\
Initiates Bridge in host mode.

`/join`\
Launches Bridge in join mode.

`/local`\
Starts Bridge in local mode.

`/autorun`\
Minimizes Bridge window upon startup.

`/noui`\
Suppresses the display of any user interface elements and prevents the creation of a taskbar icon.

For example, you can use /local /autorun to initiate the Bridge in local mode and minimize it. Similarly, `/local /noui` will start the Bridge in local mode without any user interface. If you use `/autostart` without specifying `/host`, `/join`, or `/local`, the Bridge will start in the last selected mode.

{% hint style="warning" %}
It's important to note that Bridge will not start with these flags if there is a configuration error, such as an invalid IP address for the remote address in the join mode while attempting to auto-start join.
{% endhint %}

If you prefer to configure Bridge using a configuration file, you can find the settings in `AppData\Local\NDI\Application.NDI.Bridge.UI\bridge_settings.json.`

Most setting names are self-explanatory, except for "selected\_tab," which serves as an index field to indicate the last selected tab (mode) the user used (0 = host, 1 = join, 2 = local).

All settings for each mode are present in the same file, so you may need to adjust your logic to target the correct settings for the appropriate mode (e.g., "host\_model," "local\_model," "join\_model").


# Configuring Port Forwarding

In more complex networking cases, ports may need your attention.

To extend beyond the local network, applications (such as NDI Bridge) use network communication ports. Connecting to a local application from an external network requires targeting the correct port, and that your network router is set up to accept traffic at that port.

This is much like an office with one main telephone number, but many extensions. On a WAN[^1] like the Internet, the ‘public IP number’ corresponds to the main telephone number. Your firm provides a list of extension numbers, each matching one phone. Likewise, your network router exposes certain ports for external access. Connecting to a network router is impossible if it doesn’t expose a port.

The NDI Bridge Host finds your public IP address automatically and listens for traffic arriving at the port you specify in its configuration app. It cannot, however, automatically configure the router to allow traffic from the WAN to reach that port. (By default, routers expose a limited set of common ports, and are manually configured to use other ports for specific purposes.)

## Port Forwarding <a href="#port-forwarding" id="port-forwarding"></a>

{% hint style="info" %}
**Port Forwarding** exposes a port (or a range of ports) so an external network can communicate with the port used by an internal applicatio&#x6E;**.**

*Sidenote: The word “forwarding” highlights the fact that it’s possible (though not required) to expose one port to external networks (the ‘external’ port), and pass traffic between it and a different ‘internal’ port. This is much like publishing one phone number publicly, and then secretly forwarding that number to a hidden private number.*
{% endhint %}

![](https://233b1d13b450eb6b33b4-ac2a33202ef9b63045cbb3afca178df8.ssl.cf1.rackcdn.com/blog-images/CustomerStories/Port_Configuring/bridge_port_forwarding_configuration.jpg)

To configure port forwarding, you need to know the internal port you will use, and how to access your router settings.

* NDI Bridge defaults to port `5990` but lets you specify a different ‘internal port’.&#x20;

{% hint style="info" %}
If you assign a Host port number that is in use, NDI Bridge automatically increments the number until a free port is found. Knowing this, you may opt to forward a port range.
{% endhint %}

* Router settings are often available on a webpage published on your local network, though this can vary. Your router documentation will provide details and login information for the router. Alternatively, an Internet search for “port forwarding” locates countless detailed guides (such as [this one](https://portforward.com/router.htm)). A network administrator may handle this task for you in more complex environments.

Once you have this information, you can access the port forwarding section of your router settings to enter the internal and external ports. \
\
Port forwarding options are often found under either “Applications and Gaming” or “Firewall”.) If a Protocol option is provided, select “Both”, or “UDP”.

{% hint style="info" %}
When you start the Host or modify the designated port the **NDI Bridge** application automatically tests your port forwarding configuration. It reports success when everything is properly done.
{% endhint %}

[^1]: wide area network


# Bridge Tool Logging

NDI 6.1 provides a new version of NDI Bridge that allows for additional settings and a new logging feature that allows you to get even greater insight into the capabilities of your NDI Network.&#x20;

### Buffer Test

Since NDI 5, it’s been possible to set a buffer when connecting to or hosting a Bridge network that will store up frames of data up to a certain amount before sending them to the rest of the NDI Network. While this does increase latency, it also allows a seamless viewing experience where the viewer shouldn’t notice a drop of signal or frames that can naturally occur when video is transmitted over the public Internet. Previous version of NDI Bridge would allow the user to define their own size of that buffer as a trial an error, but with NDI 6.1’s new Bridge, there is a “Test Buffer" application that can recommend buffer size.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FbYsJLhtUAwXFgBz95q8u%2FCapture%202.png?alt=media&amp;token=7c19ca23-8449-405b-a9d0-c2ecbd08a403" alt=""><figcaption></figcaption></figure>

To use it, follow the steps below:&#x20;

1. Launch NDI Bridge 6.1&#x20;
2. Connect to your Bridge host if your the Join, or have a remote connection connect into your Bridge application if you’re the Host&#x20;
3. Once connected, click on Start Test. Packets will be sent and received, and the recommended buffer will be shown. &#x20;
4. Run the test for as long as necessary, then click Apply to use their recommended buffer size.&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/DDRTYtt4G1f94M3IKkV2/image.png" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
To run the test, both the Bridge Host and Bridge Client/Joiner must be running NDI 6.1. &#x20;
{% endhint %}

### System Stats

One of the most powerful aspects of NDI is it’s ability to be flexible in it’s installation requirements, it doesn’t need a purpose-built machine. NDI Bridge, like all other NDI applications, is as powerful as the system it’s installed on, but until now there hasn’t been an easy way to determine how much system resources it uses. With NDI 6.1 Bridge, a user can now get a number of helpful stats that may pinpoint potential bottlenecks in a workflow. To access the system stats to see a live view of NDI Bridge’s resources, click the gear labeled **Settings and Diagnostics** and choose **Statistics.**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/7P8AyjtW4w1vlLTpcVXN/image.png" alt=""><figcaption></figcaption></figure>

Clicking this will open a new window that can be positioned and resized anywhere, with helpful graphs and stats for the current connection. Each graph can be expanded to show a greater detailed view of the current resources.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/iR6AaVnR4teDFrfOuNa2/image.png" alt=""><figcaption></figcaption></figure>

**Send Bps**: Usually measured in mbps but depending on how much traffic is sent it can be kbps, this is the amount of data that’s being sent from the current machine to the destination. The graph measures only the last 60 seconds of data in a rolling, live view.

To see the current metric, the right hand-side column also displays the current bitrate of the sending device.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/9yRLjkJDHKkk0IHMPv1N/image.png" alt=""><figcaption></figcaption></figure>

**Receive Bps**: This graphic shows a 60 second view of the amount of traffic being received by the system it’s installed on. Usually measured in mbps, it will give the user an idea of how much bandwidth that Studio Monitor or another NDI receive is receiving from the Bridge network.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/KtvzwG7Z90N7KT5Nnona/image.png" alt=""><figcaption></figcaption></figure>

This is also shown on the right hand side metric under Receive, where it shows a live view of the incoming bitrate.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/6sVP5PeQB54XRrErFon2/image.png" alt=""><figcaption></figcaption></figure>

If the Send and Receive numbers vary too greatly, there’s probably packet loss or connection issues which can result in poor performance. Increasing the Buffer size or using the recommended buffer settings may alleviate these issues&#x20;

**RTT:** Round Trip Time is the measure of how long it takes a packet to be sent from the host to the receiver and back again. The graph shows a live view of the past 60 seconds and the right hand column shows a live view of the current RTT.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/iACXvAkgdYNYTD5nt4jp/image.png" alt=""><figcaption></figcaption></figure>

The RTT value may be high, but the key aspect to look for is consistency- a RTT value that fluctuates often indicates a poor connection and poor video performance&#x20;

**Packet Loss**: Much like RTT, the key aspect here is consistency. Have a video stream with 0 packet loss would be ideal but in a world where video is transmitted over the public internet it can happen.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FUH6fnaJ5D18ATHnNPuXo%2Fimage%20(4).png?alt=media&amp;token=3bf397a7-b0c6-4a57-a294-b73aed9d4868" alt=""><figcaption></figcaption></figure>

0 packet loss is preferred, but if the number grows over time or fluctuates, there’s an issue with the incoming stream or receiving PC dropping packets. Increase buffer size may be one way to alleviate that.&#x20;

**Bridge GPU**: NDI Bridge provides 3 metrics for the GPU that the connected Bridge system (either host or join) is running on, GPU Encode, GPU Decode, and 3D Compute. This measures the amount of GPU usage that the Bridge service is using by itself to send an encoded signal.&#x20;

These are a measure of the Bridge’s utilization only, not of the entire utilization of the engines of the PC. If packet loss occurs or the RTT is high and the buffer can’t resolve it, the Bridge system’s GPU may be at maximum and unable to render frames as quickly as necessary, resulting in poor video performance. Unfortunately, there’s not a way to resolve this outside of upgrading the PC or lowering the demand of other applications on that PC.&#x20;

**System GPU**: Like the Bridge GPU, the System GPU must also decode frames of video for viewing and playback. If the System GPU is at maximum for resources but the connection is fine, the viewer will still notice dropped frames and other apparent issues they may cause them to incorrectly assume the network or NDI Bridge is at fault.

On the right hand side, there are a number of stats also available at any given time.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/i6s9jJ35Kcu4rZDvlQmN/image.png" alt=""><figcaption></figcaption></figure>

**CPU** and **Memory** refer to the percentage of CPU that is used by the system at the time. Memory refers to amount of RAM that the Bridge application is taking up by itself. As **Bridge** is software, we recommend you make sure those numbers stay under 50% utilization, the lower the better. This may mean closing out other open applications and shutting down other services that are taking processing cycles and using the RAM. If the Memory measurement creeps up, it could indicate a memory leak or a process that is stuck running and not shut down properly. &#x20;

Under **System** are the same three metrics, GPU Encode, GPU Decode, and 3D Compute, which measure available  metrics as reported by the system. GPU Encode is if the system is encoding from High Bandwidth to HX, and GPU Decode is used for receiving a signal and displaying it on Studio Monitor. 3D Compute is the overall usage of the GPU of that system. It’s important to note that 3D Compute is variable depending on the system. Sometimes it’s the 3D Compute engine is used to encode/decode, and sometimes it’s used for color conversion. If the system Bridge is running on has two different GPUs, the tasks will be spread out to reduce load. As a general rule keeping those values low will show improved performance.


# Remote - DISCONTINUED

Securely connect with multiple remote contributors.

## IMPORTANT INFORMATION

> **We’ve made the tough call to discontinue NDI Remote and take the service offline. This decision comes after identifying performance issues that can’t be quickly addressed. That said, we’re already exploring a more reliable way to bring Remote back in the future. We’ll share updates as soon as we have them.**\
> \
> **If you have questions or need a hand planning a workaround, please reach out through the proper channel. Our team’s here to help!**  [**Support – NDI**](https://ndi.video/resources/support/)

***

**NDI Remote** is a tool that facilitates seamless connections with multiple remote contributors by simply sharing a link. This application enables receiving video and audio over the internet, transforming your device into an NDI video feed receiver.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Remote**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Remote from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## Sharing Video

### Method 1: Send Invitation

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/lljZEZn2jSEoLTyvMb6u/Remote1.JPG" alt="" width="563"><figcaption><p>Screenshot of NDI Remote (Windows)</p></figcaption></figure>

On the **Send Invitation** tab, enable a remote connection from the available list (up to eight connections). You should assign a specific name to the remote connection.

Then, click the share icon (paper plane icon) on the right side of the desired connection to open up a pop-up menu. This pop-up menu will present various methods to share an invitation:<br>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/yMovylQyEaTtC8WJGh89/image.png" alt="" width="489"><figcaption><p>Screenshot of NDI Remote (Windows)</p></figcaption></figure>

* Via email.
* By sharing a unique QR code attributed to that connection.
* By sharing a unique URL.

The receiver will only need to open the link in a web browser on the remote device, grant access to the camera and microphone, and the video will begin being shared.

***

### Method 2: Initiating from the Remote Device

Visit the [NDI Remote page](https://remote.ndi.tv/). In there, you'll be able to select different sources to share:

* Your hardware system camera
* A feed of your computer's screen

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/HA07vgnt80FsLA46wuEm/image.png" alt=""><figcaption><p>Screenshot of NDI Remote webpage</p></figcaption></figure>

You'll be prompted to provide access to your computer's camera and microphone. If you accept, you'll start seeing a feed from your camera.&#x20;

A menu will also show up. By clicking the leftmost icon, you'll be able to name your feed so that others can identify it. You'll also be able to share it by clicking the **Share** button.

<div align="center"><figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/y2DmMAHf5cVXQ8DPlITy/image.png" alt=""><figcaption><p>Screenshot of the NDI Remote webpage</p></figcaption></figure></div>

The person using the NDI Remote tool can view and manage the incoming connection on the **Received Invitations** tab. \
\
The NDI Remote connection is now generating an NDI source, which any NDI-enabled application in your local area network can receive.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/r3aNOXVN8qqrXr1bOB1n/Remote2.JPG" alt="" width="563"><figcaption><p>Screenshot of NDI Remote (Windows)</p></figcaption></figure>

***

## Using Turn Relay Server (Optional)

A TURN (**T**raversal **U**sing **R**elays around **N**AT) server is a network entity that facilitates the relaying of network traffic. When two devices are unable to establish a direct connection due to NAT[^1] or firewall restrictions, they use a TURN server as an intermediary. The TURN server temporarily stores the data from the sending device and forwards it to the receiving device.&#x20;

TURN servers are particularly important in VoIP[^2] and interactive video conferencing applications that use protocols like WebRTC[^3].

This process helps in overcoming the limitations imposed by NAT, which can change the public IP address and port number of a packet and make it difficult for the receiving device to interpret where the data originally came from

With NDI Remote, a custom TURN server can be specified by the user:

1. Go to the **My Connections** tab and click the gear icon to open the Turn Relay Server options.
2. Activate the Turn Relay Server by checking the corresponding box.
3. Enter the Turn Server's URL and port provided by your system administrator.
4. Optionally, enter a username and password.
5. Click **Apply** to accept the Turn Server configuration.

[^1]: Network address translation (NAT) is a method of mapping an IP [address space](https://en.wikipedia.org/wiki/Address_space) into another by modifying [network address](https://en.wikipedia.org/wiki/Network_address) information in the [IP header](https://en.wikipedia.org/wiki/IP_header) of packets while they are in transit across a traffic [routing device](https://en.wikipedia.org/wiki/Router_\(computing\)).

[^2]: Voice over Internet Protocol (VoIP), is a technology that allows you to make voice calls using a broadband Internet connection instead of a regular (or analog) phone line.

[^3]: WebRTC (Web Real-Time Communications) is an open source project that enables real-time voice, text and video communications capabilities between web browsers and devices.


# Router

Streamline Video and Audio Signal Routing.

**NDI Router** is a tool that enables the routing of NDI video and audio streams to a diverse array of destinations. This tool enables users to:

* assign NDI sources to named router outputs quickly.
* create presets for recalling router layouts for different shows or sites with just one click.
* provide user-friendly controls for ease of use.&#x20;

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Router**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Router from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## Interface Overview

The NDI Router interface comprises four main components:

1. **Preview Pane:** Located in the center, it displays the source routed to the selected destination.
2. **Source Buttons:** On the left of the preview pane, these buttons can be easily assigned to any NDI stream.
3. **Destination Buttons:** To the right of source buttons, these identify router outputs.
4. **Preset Buttons:** Positioned at the far right, these buttons enable the effortless recall of complete router layouts.

***

## Routing Configuration

NDI Router can manage up to 64 sources and 64 destinations. To configure it, click on the gear icon in the upper right corner of the application to activate **configuration mode**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/t051zKOpa6O8YvTkGiuY/Router1.JPG" alt=""><figcaption><p>Screenshot of NDI Router</p></figcaption></figure>

Once **configuration mode** is activated, sources, destinations, and preset buttons can be added by clicking on the icons highlighted below.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/9zaaQKIwzXO5iG4O1Sra/Router2.JPG" alt=""><figcaption><p>Screenshot of NDI Router - configuration mode activated</p></figcaption></figure>

After exiting **configuration mode**, it is possible to define sources and destinations.&#x20;

{% hint style="info" %}
**NDI Router** creates virtual outputs, which are then used as sources for NDI receivers. By selecting the NDI sources, the NDI Router routes the NDI stream by directly connecting an NDI transmitter with a receiver without any stream passing through the NDI Router.
{% endhint %}

***

## Additional Configurations

**Sources** can be managed and configured by **right-clicking** over a Source button. In this configuration panel, you can select the NDI sources that will be routed to the destination and define some extra settings like the button label, the text, and the background color.

**Destinations** can be managed and configured by right-clicking over a Destination button. In this configuration panel, you can define the NDI Virtual Stream name that will be received by the destination and some extra settings like the button label, the text, and the background color.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/MEQtRXK7RfnX4D4bB7wD/Router3.png" alt=""><figcaption><p>Screenshot of NDI Router - Configure Source button</p></figcaption></figure>

***

## Routing Process

NDI receivers will be connected to the NDI Router's virtual output. Subsequently, in the NDI Router, select the destination button followed by the source button. The NDI stream will then be sent from the sources to the NDI receivers, which are virtually connected to the router.


# Screen Capture

Share Your Desktop Seamlessly.

**NDI Screen Capture** is an application designed to effortlessly share your Windows desktop video and audio with other devices on your network through an NDI stream.\
\
Whether you are conducting broadcasts and presentations, collaborating on projects, creating tutorials, or playing back media, Screen Capture provides a simple way to make your desktop available to other NDI-enabled applications and devices.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Starting NDI Screen Capture**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Screen Capture from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list. After you launch Screen Capture, it runs from the Windows system tray. You may not see a full application window open. To access Screen Capture settings, right-click the NDI Screen Capture icon in the system tray.

Once Screen Capture is running, your computer creates an NDI source from the Windows desktop. That source can be viewed by other NDI-enabled applications or devices on the same network. If you are not sure whether Screen Capture is working, test the source in NDI [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) before troubleshooting the receiving application.

***

## Testing on Studio Monitor

* On another Windows computer on the same network, open NDI Studio Monitor.
* Right-click anywhere in the Studio Monitor window, then look for the Screen Capture source in the source list.
* If the source appears in Studio Monitor, Screen Capture is sending an NDI stream.
* If the source does not appear in Studio Monitor, first check whether Screen Capture is running, whether both devices are on the expected network, and whether firewall, NDI group, Access Manager, or discovery settings may be limiting source visibility

***

## **Viewing on NDI-Enabled Devices**

View the output of Screen Capture on another NDI-enabled device using an application like [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor).

**Right-click on the screen** and select the device name and corresponding NDI stream.

***

## **Settings and Customization**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/Ct7mamLXAVmr7BJPSRKO/screencapture%20settings.png" alt=""><figcaption><p>Right-click on the NDI Screen Capture app icon on the system tray  to access different settings.</p></figcaption></figure>

Right-click on the NDI Screen Capture icon to access different settings:

* **Framerate**\
  This option allows to specify the NDI stream framerate[^1].
* **Capture Settings**\
  With this setting, you can choose to capture the full screen or specify a particular area for capture (Region of Interest). Another option is to define the visibility of the mouse pointer.
* **Audio Source**\
  Specify a particular audio source to be embedded into the NDI stream created by NDI Screen Capture.
* **Webcam Video Source**\
  NDI Screen Capture enables the creation of an NDI stream using a webcam.
* **Webcam Audio Source**\
  Specify a particular audio source to be embedded into the NDI stream created by the webcam option.
* **KVM Control**\
  The KVM[^2] option in NDI Screen Capture allows for remote computer control over a network. When this feature is enabled, you can not only capture and send the computer's screen over the network using NDI but also remotely control the computer's keyboard and mouse inputs from another device.
* **Help**\
  Access the Screen Capture Help Assistant and a quick web link to [ndi.video](https://ndi.video/) for more information about NDI and NDI Tools.

{% hint style="info" %}
Screen Capture and Screen Capture HX features are specific to Windows OS. Not all features will be available on macOS
{% endhint %}

[^1]: Frame rate is the measurement of how quickly a number of frames appears within a second, which is why it's also called FPS (frames per second).

[^2]: **KVM** stands for “Keyboard, Video (monitor), Mouse.” The main function of a KVM switch is to control, switch between, and manage multiple PCs or servers via a single keyboard, monitor, and mouse (also referred to as the 'console').


# Screen Capture HX

Elevate Your Network Display Experience.

**NDI Screen Capture HX** provides features comparable to [NDI Screen Capture](/all/using-ndi/ndi-tools/ndi-tools-for-windows/screen-capture), but it uniquely leverages GPU acceleration.&#x20;

This ensures low-latency video delivery, supporting resolutions up to 4K and frame rates of 120 Hertz or higher, using H.264[^1] or HEVC[^2] compression. GPU acceleration significantly reduces your system's CPU workload, enhancing overall efficiency.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Screen Capture HX**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/zKs4yD4DDYN3IS1dJcYL/HX.png" alt=""><figcaption><p>Screenshot of NDI Launcher</p></figcaption></figure>

In the [NDI Launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher), select the configuration gear to choose between two distinct versions of NDI Screen Capture. Select Screen Capture HX.

***

## **Sharing Your Screen**

The application will appear in your system tray with the NDI logo. Upon launch, your computer's desktop video and audio are shared and viewable from any NDI-enabled device on your network.

***

## **Viewing on NDI-Enabled Devices**

View the output of Screen Capture on another NDI-enabled device using an application like [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor).

**Right-click on the screen** and select the device name and corresponding NDI stream.

***

## **Settings and Customization:**

**NDI Screen Capture** is an application designed to effortlessly share your computer's desktop video and audio with any other device on your network through an NDI stream.&#x20;

Whether you're conducting broadcasts and presentations, collaborating on projects, creating tutorials, or engaging in media playback, Screen Capture provides a valuable solution.

***

## **Accessing NDI Screen Capture**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Screen Capture from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Sharing Your Screen**

The tool will appear in your system tray with the NDI logo. Upon launch, your computer's desktop video and audio are viewable from any NDI-enabled device on your network.

***

## **Viewing on NDI-Enabled Devices**

View the output of Screen Capture on another NDI-enabled device using an application like [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor).

**Right-click on the screen** and select the device name and corresponding NDI stream.

***

## **Settings and Customization**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/Ct7mamLXAVmr7BJPSRKO/screencapture%20settings.png" alt=""><figcaption><p>Right-click on the NDI Screen Capture app icon on the system tray  to access different settings.</p></figcaption></figure>

Right-click on the NDI Screen Capture icon to access different settings:

* **Bandwidth**\
  This feature enables the selection from three distinct bandwidth presets and specifies the codec used for NDI HX compression, H.264 or HEVC.
* **Resolution**\
  It allows the native screen resolution or downscaling the stream in lower resolutions.
* **Framerate**\
  This option allows to specify the NDI stream framerate[^3].
* **Audio Source**\
  Specify a particular audio source to be embedded into the NDI stream created by the NDI Screen Capture.
* **Capture Mouse Pointer**
* **KVM Control**\
  The KVM[^4] option in NDI Screen Capture allows for remote computer control over a network. When this feature is enabled, you can not only capture and send the computer's screen over the network using NDI but also remotely control the computer's keyboard and mouse inputs from another device.
* **Help**\
  Access the Screen Capture Help Assistant and a quick web link to [ndi.video](https://ndi.video/) for more information about NDI and NDI Tools.

***

{% hint style="info" %}
Was this helpful? Please let us know by rating this page; you can also leave a [review](https://forms.office.com/Pages/ResponsePage.aspx?id=pzs8xttADka98eY6AqOtWZeUcJXxBylLhfBY94EFe29UNjZRV0xTOFdHR09INzRaN1BDVFFWT0lNRi4u).
{% endhint %}

[^1]: Advanced Video Coding (AVC), also called **H. 264**, is the most common video compression standard used today. AVC/H. 264 can encode high-quality video at lower bit rates than older compression standards.

[^2]: High Efficiency Video Coding (**HEVC**), also known as H.265 and MPEG-H Part 2, is a [video compression standard](https://en.wikipedia.org/wiki/Video_coding_format) designed as part of the [MPEG-H](https://en.wikipedia.org/wiki/MPEG-H) project as a successor to the widely used [Advanced Video Coding](https://en.wikipedia.org/wiki/Advanced_Video_Coding) (AVC, H.264, or [MPEG-4](https://en.wikipedia.org/wiki/MPEG-4) Part 10). In comparison to AVC, HEVC offers from 25% to 50% better [data compression](https://en.wikipedia.org/wiki/Data_compression) at the same level of [video quality](https://en.wikipedia.org/wiki/Video_quality).

[^3]: Frame rate is the measurement of how quickly a number of frames appears within a second, which is why it's also called FPS (frames per second).

[^4]: **KVM** stands for “Keyboard, Video (monitor), Mouse.” The main function of a KVM switch is to control, switch between, and manage multiple PCs or servers via a single keyboard, monitor, and mouse (also referred to as the 'console').


# Studio Monitor

Your Window to NDI Signals.

**NDI Studio Monitor** is a tool that allows you to effortlessly view video and audio signals transmitted over your network through an NDI stream.&#x20;

Studio Monitor is a valuable tool for anyone involved in video monitoring, digital signage, KVM control, recording, PTZ operation, or more.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Studio Monitor**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Studio Monitor from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Remote Control and Navigation**

The application launches as a pop-up window, providing an IP address or QR code for remote control from another device on the same network.

***

## **Viewing NDI Sources**

Click on the menu in the top left or right-click anywhere on the Studio Monitor window.

A list of devices broadcasting over NDI will appear, and you can select any channel to view the video and audio in real-time.

***

## **Settings and Customization**

By clicking on the top menu or right-clicking anywhere on the Studio Monitor window, you'll be able to access the `settings` that you can customize to your needs. You can find a list of all available settings below.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/XNo1XqB8Agk34uP0f4SO/Video%20Monitor%20options.png" alt=""><figcaption><p>Click on the menu in the top left or right-click anywhere on the Studio Monitor screen to access settings.</p></figcaption></figure>

> If you experience dropped frames (indicated by the red bar) you can check in [NDI Analysis](/all/using-ndi/utilities/analysis)

### **Application**

* **Run a new NDI Studio Monitor** to open a second instance of Studio Monitor.
* **Run at Windows Start** is helpful for setting up a digital signage system.
* Allow Web Control
* Show Web Control URL
* Set **Controls Always Visible**
* Set **Record Path** to specify the location where recorded files will be saved.
* Select **Allow Receiver Advertising** to make it available for monitoring when using Discovery Server.
* Select **Allow Receiver Control** to manage which sources  Studio Monitor can connect to.

### **Audio**

* **Define the soundcard** for audio output.
* **Silent, mute, or unmute** audio output.
* **Adjust the output** audio level.

### **Video**

* Show the **NDI source's Alpha Channel**
* Show a **background checkerboard**
* Enable a **center cross overlay**
* Enable a **safe area overlay**
* Enable a **4:3 Aspect Ratio overlay**
* Enable a **Square Aspect Ratio overlay**
* **Flip horizontally** or **vertically** the displayed source
* Overlays the Tally indicators
* VU Meter overlay: Visualizes the source's audio level, with or without a reference scale.
* **Lowest Latency**: Reduces the time the system takes to display a source. When this option is activated, NDI Studio Monitor ceases to use frame-sync. Instead, it plays videos with less smoothness but offers the advantage of lower latency.
* **Low Bandwidth**: Decoding the NDI Proxy stream, rather than the full bandwidth, is highly effective for reducing bandwidth usage. This approach is particularly beneficial when displaying a source solely for monitoring purposes.
* **Overlay:** Select an NDI Source to overlay over the primary source.\
  Picture In Picture: With this option, the secondary source is overlayed as picture-in-picture.\
  Overlay using Alpha: This option overlaps the secondary source using his transparency.
* **Output:** Floating Window: With these options is possible to define if the NDI Studio Monitor will be visible: 1) In a floating Windows 2) Full Screen in one of the available monitor 3) Full Screen in all available monitor.&#x20;
* **NDI Video Output**: an extremely beneficial feature for effortlessly sharing a single source with multiple destinations. This functionality effectively transforms NDI Studio Monitor into an NDI Router. When a new source is chosen in Studio Monitor, it is directly routed to various receivers, originating straight from the sender.
* **Scale Video** to Window.
* **Always on Top**
* **Hide Window Border**
* **Move to Quadrant**: helps you to move, resize and fit multiple monitors in a single screen.
* **PTZ Settings:** enables the PTZ Control in the NDI Studio Monitor.
* Enable **USB Joystick as a PTZ Controller.**
* **Help:** Access the Studio Monitor Help Assistant and a quick web link to [ndi.video](https://ndi.video/) for more information about NDI and NDI Tools.


# Test Patterns

Streamline Connectivity and Calibration.

**NDI Test Patterns** is a tool designed to facilitate precise audio and video calibration on NDI-enabled devices within your network.&#x20;

With a range of test patterns and audio tones, this tool ensures accurate color properties and optimal sound levels.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Test Patterns**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Test Patterns from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Immediate NDI Signal Sharing**

Upon launching, NDI Test Patterns will instantly share an **NDI signal** across your network, viewable on other NDI-enabled devices using software like Studio Monitor.&#x20;

***

## **Viewing the NDI Signal**

Right-click on the [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) tool, select the device's name and choose **Test Patterns** to receive the signal from NDI Test Patterns.

***

## **Test Pattern Variety**

Explore a variety of test patterns by scrolling down the page and selecting the one that best suits your calibration needs.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/xLYiB0TYU8PxdtN68IDM/1.%20Test%20Patterns%20SDR.JPG" alt=""><figcaption><p>Test Patterns library (HDR options to be released with NDI 6).</p></figcaption></figure>

***

## **Custom Image Support**

Click the plus button at the bottom left of the screen to add custom images to the list of patterns in NDI Test Patterns.

NDI Test Patterns supports images with embedded alpha[^1], allowing you to load most 32-bit image file formats and use them as sources for overlays in your program.

***

## **Audio Calibration**

Enable a one-kilohertz tone accompanying the NDI test pattern signal to test your audio equipment. Choose from various decibel levels to suit your audio calibration requirements.

***

## **HDR**

To enable HDR in Test Patterns click the link below:

#### [How to output in HDR](/all/using-ndi/ndi-tools/ndi-tools-for-windows/test-patterns/how-to-output-in-hdr)

[^1]: The **alpha channel** is a color component that represents a color's degree of transparency or opacity (i.e., the red, green, and blue channels). It determines how a pixel is rendered when blended with another.


# How to output in HDR

{% stepper %}
{% step %}

#### Open Test Patterns from NDI Tools and select *HDR* from the menu bar at the bottom

{% hint style="info" %}

All of the included test patterns use the HLG profile, which is selected by default.
{% endhint %}

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F7nNXNmiUa0TnYa7sfVzd%2Fimage.png?alt=media&amp;token=a7b4eabe-b4ac-4f69-8002-1455bda7535d" alt=""><figcaption></figcaption></figure>

{% endstep %}

{% step %}

#### Import an image with HDR PQ information

Click on the **Add Image Icon** on the bottom left and select your HDR image.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FOOgyCuk3C7fMiSkdxdV3%2Fimage.png?alt=media&amp;token=d3afcb9b-6f18-45fa-819c-8570ec395c75" alt=""><figcaption></figcaption></figure>

Once imported it will show up in the list of patterns. Once selected the HDR selection will automatically switch to PQ if it detects the HDR PQ data.
{% endstep %}
{% endstepper %}


# Webcam Input

Elevate Your Webcam Conferencing Experience.

{% hint style="success" %}
If you can't find the answers you're looking for here check out our [**community forums**](https://community.ndi.video/mod/forum/view.php?id=39) or see our [**troubleshooting guide**](/all/faq/troubleshooting-guides)
{% endhint %}

**NDI Webcam Input** is a tool that enables you to use any NDI video and audio signal on your network as a webcam source.

This is particularly beneficial for enhancing your video conferencing experience on platforms like Zoom, Microsoft Teams, Skype, and more. By replacing your conventional webcam with professional video production NDI-enabled equipment and software, you can bring graphics, virtual sets, and other visual enhancements to your virtual meetings.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Webcam Input**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools). After installing it, access NDI Webcam Input from the [NDI Launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications folder. Once started, the program will appear in your system tray on Windows at the bottom of the screen.

***

## **Source Selection**

Right-clicking on the NDI Webcam Input in the system tray reveals a list of devices streaming NDI. **Hover** over each source to preview and select any channel being sent from that device.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/HvYG40LrjeSdvSYzupLr/Webcam.JPG" alt=""><figcaption><p>NDI Webcam interface.</p></figcaption></figure>

***

## **Using it with Conferencing Applications:**

By selecting an NDI channel, it will become available as a source in conferencing applications. In your conferencing software's video input settings, choose **NDI video**, and you're ready to go.

***

## **Additional Settings:**

You can personalize your stream with additional configuration options.

* **Audio Settings Tab:**

  Adjust volume levels for your webcam destination, and choose the grouping of channels if your NDI output has multiple channels.
* **Video Settings Tab:**

  Send custom resolutions (e.g., 480p, 720p, 1080p) to your webcam destination.


# Discovery

Updated as of Version 6.2

**NDI Discovery** is a tool that enables you set up and manage Discovery Servers within workflows. We cover the capabilities of [Discovery Service](/all/getting-started/white-paper/discovery-and-registration/discovery-server) in depth in our [White Paper](/all/getting-started/white-paper).

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

{% hint style="info" %}
Looking for **Discovery Service?** Download it [here](https://ndi.video/tools/discovery-service/).
{% endhint %}

***

## **Accessing NDI Discovery**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools). After installing it, access NDI Discovery from the [NDI Launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications folder.

Once you've installed Discovery check out our [Getting Started with Discovery](broken://pages/elFp7Nzh5PxnHpuj2ze2) guide. For  high level introduction on how Discovery works read [this guide](/all/developing-with-ndi/developer-guides/receiver-discoverability-monitoring-and-control-overview) on Receiver Discoverability, Monitoring, and Control.

***

## **Senders**

Displays all NDI sources (“senders”) that have registered with the Discovery Server. Each sender entry shows its device name/hostname, the network address, and port it is streaming from.  Devices appear grouped by hostname. This tab helps you quickly see which NDI devices are currently available to provide streams on your network.

As of **NDI 6.3**, this view also includes senders registered using the new NDI Sender Advertiser APIs. These APIs extend discovery support to senders, coexist with the legacy advertisement system, and enable improved visibility into sender properties and events when used with the Discovery Server.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FdErmPuRzrgBfh7vPJHfj%2Fdiscovery%20sender.png?alt=media&amp;token=8c3aac1c-3ae9-4fbd-b6e3-c43fc15dab73" alt=""><figcaption></figcaption></figure>

## **Receivers**

Shows all NDI receivers (endpoints listening for NDI streams) recognized by the Discovery Server. Devices are also grouped by hostname under receivers. This is especially useful when troubleshooting or confirming which machines are actively listening for NDI streams.

{% hint style="success" %}
From the dropdown carrot under **Receivers** you can specify the source for that receiver
{% endhint %}

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FYZVoOuEyARdu7Ev4xIgf%2Fimage.png?alt=media&amp;token=725c385a-d94c-4a82-b2c8-d7a81d46275b" alt=""><figcaption></figcaption></figure>

## **Settings**

You can configure or change the Discovery Server IP and port. You can also see whether the application is connected to a Discovery Server and at which IP/port.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FTNLTuTuaIRYLXi4WYQy6%2Fimage.png?alt=media&amp;token=3fd1b5a8-413d-4047-a9cb-ddf18e97f384" alt=""><figcaption></figcaption></figure>

For first time set up, when using with [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor) for the first time be sure to select the **Allow Receiver Advertising** and **Allow Receiver Control** from the settings

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FXkeSlqAFlJRBAATspwcr%2Fimage.png?alt=media&amp;token=c6d8e391-946b-45d6-a08d-d06afb4b051d" alt=""><figcaption></figcaption></figure>


# Getting Started with Discovery Service

This guide will explain how to get set up with NDI Tools application, Discovery Server and Studio Monitor on a Windows machine

{% stepper %}
{% step %}
**(Optional)** If you want to run the Discovery Server as a Windows Service then you'll need to install the stand alone Discovery Server package.

{% hint style="info" %}
The Discovery Service is only available for **Windows** and **Linux.** The screenshot below is the setup for Windows.
{% endhint %}

&#x20;Install the Discovery Server package. During installation, you must specify the IP address and port for the Discovery Service. &#x20;

* You can use **127.0.0.1 (localhost)** as the IP if you are only testing with receivers on the same machine. Otherwise, you must specify the IP address of the machine where the Discovery Server is running.
* The port can be left at the default value unless a different port is needed.&#x20;
* The Discovery Service will start automatically

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F2WWDem36d1cikO2mRt7N%2Fimage.png?alt=media&amp;token=7ced815e-8cc8-47d0-8f37-c4d3ddb0d1e3" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Install the [**NDI Tools package**](/all/using-ndi/ndi-tools/installing-ndi-tools).
{% endstep %}

{% step %}
Launch [NDI Tools](/all/using-ndi/ndi-tools) and complete the registration form (if not already done).&#x20;
{% endstep %}

{% step %}
Launch [Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager)&#x20;

1. In the **Advanced** tab under **Network Mapping** enable **Discovery Servers** &#x20;
2. Input the IP address of the Discovery Server and click **Apply**.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F07tHHNCoJ8FCLSI4Js4l%2Fimage.png?alt=media&amp;token=46213429-30ad-4860-b5b9-146d6c99575c" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Launch **Discovery** from [NDI Tools](/all/using-ndi/ndi-tools)

1. Go to the **Settings** tab.&#x20;
2. If you configured the Discovery Server IP in Access Manager in the previous step, then you should select and enable **Use Access Manager Setting**s.&#x20;
3. Otherwise, enter the IP address of the Discovery Server next to **Setup Discovery Server** and click **Connect**.&#x20;
4. Just above you should see a message in green saying, **Connected to Discovery Server at** and the IP address and port.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FKX71qFAAlCnFpp2NINjO%2Fimage.png?alt=media&amp;token=87038a3d-c375-4046-b1bb-26ab5dd1061f" alt=""><figcaption></figcaption></figure>

5. If the message is in yellow saying, **Attempting to Connect** then double check your IP settings again. If you think you might have made a mistake with the Discovery Server’s IP address or port, you will need to run the installer again to reconfigure the IP and port.&#x20;
6. Once done, click back to the **Receivers** tab.&#x20;
   {% endstep %}

{% step %}
Launch [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor)

1. Click on the Menu button on the top left. Select **Settings**.
2. Click and enable **Allow Receiver Advertising**.
3. Click and enable **Allow Receiver Control.**

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FEpulVSYPhFpc3tfwzD3P%2Fimage.png?alt=media&amp;token=30dc0d07-1956-4371-95fc-1fe6a00b7849" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In the Discovery Application

1. You should now see the **Studio Monitor** receiver in the **Discovery** application.&#x20;
2. Receivers will be grouped by hostname first.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FHM7xvBCmbQatjlz8fhbs%2Fimage.png?alt=media&amp;token=ab64e78c-ee6c-42e7-862c-f1569eeb94aa" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Discovery Server Additional Information

VERSION 6.2

## Introduction&#x20;

In modern networked media workflows, efficient discovery and management of audio and video sources are essential. The **NDI Discovery Service** is a dedicated server and protocol designed to facilitate seamless search, monitoring, and control of **NDI  receivers** and indexing of respective **sources** within a network. This can run as a service (on a remote server) or an application (on your local machine) that accepts incoming connections with senders, finders, and receivers, and coordinates amongst them all to ensure they are all visible to each other. By providing a centralized registry, the service enables devices to automatically announce their presence, retrieve real-time status updates, and establish low-latency connections with minimal configuration. In NDI version 6.2, this new **NDI Discovery Service** adds new capabilities of discovery, monitor and control for **NDI receivers**, compared to previous versions, that only supported advertising and listing **NDI sources**. &#x20;

To enable seamless integration with third-party applications, a **C API** is available for integration, allowing developers to communicate directly with the **NDI Discovery Service**. This API provides functionalities for querying available **NDI sources**, subscribing to real-time updates, and managing connections efficiently, ensuring interoperability across various applications and workflows.&#x20;

As a final note, the NDI Discovery is an alternative to using [**mDNS**](/all/getting-started/glossary/industry-terminology#mdns), which allow a quite significant reduction in network traffic compared to the latter.&#x20;

## NDI Discovery Server&#x20;

The **Server** will be a **standalone application** or as a **system service**, named **NDI Discovery Servic**e, and will provide flexibility for different deployment needs (platforms). &#x20;

Both 32-bit and 64-bit versions of the **NDI Discovery Service** are available, although the 64-bit version is recommended. The server will use very little CPU usage although, when there are a very large number of connections (representing sources, receiver listeners and receiver advertisers), it might require RAM and some network traffic between all sources to coordinate source lists.&#x20;

### Configuration&#x20;

To configure the discovery server for NDI clients, you can use [**NDI Access Manager**](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager) (included in the NDI Tools bundle) to enter the IP address of the machine running the discovery server.&#x20;

Alternatively, you can run the discovery server with a command-line option to specify the network interface (NIC) it should use:&#x20;

`"NDI Discovery Service.exe" -bind 192.168.1.100`&#x20;

This ensures that the discovery server advertises only on the specified IP address. Similarly, you can specify a port number for the discovery server using: &#x20;

`"NDI Discovery Service.exe" -port 5400`&#x20;

This enables you to use a non-default port or run multiple discovery servers for different groups of sources on the same machine. If a port number of 0 is specified, the operating system will automatically assign a port, which will be displayed at runtime.&#x20;

### Command-Line Options&#x20;

`"NDI Discovery Service.exe" -bind <ip_address> -port <port_number> -config <json path> -help`&#x20;

#### General Options (**Windows & Linux**):&#x20;

* `-bind <ip_address>` - This is an optional argument that specifies the IP address to bind the service to (default: 0.0.0.0).&#x20;
* `-port <port_number>` - This is an optional argument that sets the port number (default: 5959).&#x20;
* `-config <json path>` - This is an optional argument that loads configuration from a JSON file.  This option will override both -bind and -port options as it will take precedence&#x20;
* `-help` - Displays available command-line options.&#x20;

#### Additional options for **Linux**:&#x20;

* -service - Runs the NDI Discovery in service mode for background execution.&#x20;
* JSON configuration file:&#x20;

The default paths for the configuration file are:&#x20;

* **Linux**:&#x20;
  * `/etc/ndi/ndi-discovery-service.v1.json`&#x20;
  * `/usr/local/etc/ndi/ndi-discovery-service.v1.json`&#x20;
* **Windows**:&#x20;

`C:\ProgramData\NDI\ndi-discovery-service.v1.json`&#x20;

An example of the JSON configuration file can be seen below:

```
{ 
  "binding": "127.0.0.1", 
  "port_no": "5959" 
}  
```

### Console Output&#x20;

When executed as a standalone application, the NDI Discovery will provide a console output with some relevant information regarding the number of registered sources, listeners and advertisers, that connect or disconnect at a given time. This console will not show up when the application is running in service mode&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F786aAMCBGKhcI6Zm5WIy%2Fimage.png?alt=media&amp;token=50139611-5cd9-487f-aba7-03240eefdcab" alt=""><figcaption><p>Figure 1-Console log example</p></figcaption></figure>

**Log explanation**:

* Underlined in <mark style="color:red;">red</mark>, is the notification when a new receiver listener connects.
* Underlined in <mark style="color:green;">green</mark>, is the notification when a new receiver advertiser connects and the respective NDI receivers it advertises.
* Underlined in <mark style="color:orange;">orange</mark>, a notification of a newly advertised NDI source.
* The “Listening…” is just a progress to signal that the service is working properly, waiting for new connections, either from receiver or source clients.

We will now simultaneously support legacy and new advertisable sources. Consequently, the output will show when a legacy source connects to the discovery service, as well as when a legacy source listener is added.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FXbTcqLAuuLBkbi6p3sLy%2FA%20screenshot%20of%20a%20computer?alt=media&amp;token=5e69782c-5799-421e-9483-4bb085efe16c" alt=""><figcaption></figcaption></figure>

## NDI Discovery clients

Clients are entities that communicate with the NDI Discovery Server. They can be categorized as follows:

### Source clients

Source clients should be configured to connect with the discovery server instead of using mDNS to locate sources. When there is a discovery server, the SDK will use both mDNS and the discovery server for finding and receiving to locate sources on the local network that are not on machines configured to use discovery. In the future, Sources will also have the capability to be monitored and controlled by the NDI Discovery protocol&#x20;

For Source senders, if an NDI Discovery server is specified, the mDNS mechanism will not be used; these sources will only be visible to other finders and receivers that are configured to use the NDI Discovery server.&#x20;

**Source Senders (legacy)**: These clients advertise or register NDI sources with the server, making them easily discoverable. These use the old method without support for monitoring. Support was still maintained to allow for backward compatibility.&#x20;

**Source Finders (legacy)**: These clients query the server to locate sources that have been advertised by any Source Sender. They use the old method without support for monitoring. Support was still maintained to allow for backward compatibility.&#x20;

**Source Advertisers:**

* New implementation of the source advertisement functionality, like their new Receiver counterparts. These new advertisers now allow proper source monitoring&#x20;

**Source Listeners**:

* New implementation of the source finding functionality. These now can request and monitor source properties.&#x20;

## Redundancy and Multiple Servers

**Receiver Advertisers**: Like their source counterpart, Receiver Advertisers can also accept a comma-separated list of servers (e.g., "192.168.10.10,192.168.10.12"). In this case, the receivers will be announced to all specified servers simultaneously.&#x20;

**Receiver Listeners**: The current implementation relies on the user to instantiate the listener and implement logic that enables the Receiver Listener to detect when the server is no longer operational. Once detected, it should then connect to an alternative, redundant Discovery Service server available on the same network.&#x20;

All of the above is also true for the new Source Listeners and Advertisers&#x20;

## Receiver clients

Receiver clients are a new addition to NDI Discovery, beginning from NDI version 6.2, as earlier versions only supported source discovery. In addition to discovery, these new clients can also be used to monitor and control remote NDI receivers.

**Receiver Advertisers:** Advertise NDI receivers

**Receiver Listeners:** Monitor and Control NDI receivers

Monitoring is related to getting instant or more static information from a given receiver. In Version 1, we currently support events for the following receiver properties:

* source-name: **NDI Source** to which the receiver is connected to
* source-url: The URL of the **NDI Source**
* connection-state: Connected or Disconnected
* audio-present : True of False
* audio-channels: Number of audio channels
* audio-sample-rate: Audio sample rate
* audio-receive-mode
* video-present: True or False
* video-codec: Video codec name (i.e. shq2)
* video-resolution: i.e. 1920x800
* video-frame-rate: i.e. 24000/1001
* video-frame-type: i.e. progressive
* video-color-primaries: i.e. bt\_709
* video-transfer-function: i.e. bt\_709
* video-matrix-coefficients: i.e. bt\_709
* video-has-alpha: True or False
* video-receive-mode: i.e. single\_tcp

In the future the number of properties to be monitored will be expanded. Receiver clients only connect to the Discovery Server directly, and unlike source clients, they rely solely on the server to advertise and to listen/query for receivers in the network. The new APIs can be consulted in the NDI SDK documentation for more details.

## Redundancy and multiple servers

**Receiver Advertisers**: Like their source counterpart, Receiver Advertisers can also accept a comma-separated list of servers (e.g., "192.168.10.10,192.168.10.12"). In this case, the receivers will be announced to all specified servers simultaneously.&#x20;

**Receiver Listeners**: The current implementation relies on the user to instantiate the listener and implement logic that enables the Receiver Listener to detect when the server is no longer operational. Once detected, it should then connect to an alternative, redundant Discovery Service server available on the same network.&#x20;

All of the above is also true for the new Source Listeners and Advertisers&#x20;

## Installer Availability & Platform Support

The Discovery Server (DS) installer is available for both Windows and Linux, ensuring broad compatibility across different environments.

We provide pre-built DS installer binaries for the following architectures:

* **Intel x86 / x86-64** (commonly used in desktops, servers, and cloud instances)
* **ARM** (suitable for embedded systems and energy-efficient computing)
* **Raspberry Pi** (optimized for low-power SBCs)

## Windows Installer Features

The Windows installer for the Discovery Server (DS) provides flexible installation options to suit different deployment needs.

### Silent Installation

The installer supports silent installation via command-line arguments, enabling\
automated deployments without user interaction.

**Example usage**:

`setup.exe /verysilent /port=1234 /binding=127.0.0.1`

`/verysilent` installs **Discovery Service** without displaying any UI prompts.

`/port=<port number>` specifies the listening port.

`/binding=<ip address>` restricts DS to listen only on the local machine.

### Interactive Installation

After starting the installer, you’ll be greeted with the following:

### **License Agreement**

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FV7Z6Ulng5Sh0bNBwbhUH%2Fimage.png?alt=media&amp;token=8a5e66a3-3bac-4243-8394-81989af8ff5e" alt=""><figcaption><p>License agreement</p></figcaption></figure>

### I**nstallation Location Selection**

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FRZD0hIRAadJ1j3SdoWXU%2Fimage.png?alt=media&amp;token=96f70173-9dad-43a2-a154-ce8aeaeef05e" alt=""><figcaption><p>Installation location selection</p></figcaption></figure>

{% hint style="success" %}
If the you want NDI Discovery to run **as a service**, you must select the corresponding\
**checkbox**. Otherwise, it will be installed as a standalone application that can be launched\
manually like any other program.
{% endhint %}

It’s also possible through the application itself, to register it later as a service by running\
the following commands:

`NDI Discovery.exe install` - Installs the service. (or in this case re-installs it)

`NDI Discovery.exe remove` - Uninstalls the service. (from the command line)

`NDI Discovery.exe start` - Starts the service. (from the command line)

`NDI Discovery.exe stop` - Stops the service. (from the command line)

### Change Folder Destination Location

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FSffGhcyZcTy9Lp7d1gLp%2Fimage.png?alt=media&amp;token=0fc1b9b7-bffe-4605-8a87-d7089e7866ba" alt=""><figcaption><p>Change folder destination location</p></figcaption></figure>

### Install Screen

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FIFGvWwD3b9lBkBM1dTdH%2Fimage.png?alt=media&amp;token=7203ec93-b536-406c-b0d8-b920c6f4a55c" alt=""><figcaption><p>Install Screen</p></figcaption></figure>

### Port Selection and Address Binding Selection

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FZeRTeGbSSa33yb77nkCw%2Fimage.png?alt=media&amp;token=c3bcbd8f-0663-44a3-a812-682ca19d23f9" alt=""><figcaption><p>Port Selection and Address Binding Selection</p></figcaption></figure>

This screen allows the user to configure the port where the service will be launched and the IP address to which it will be bound (useful if the machine has multiple network interfaces). If left unchanged, the address will be selected automatically, and the service will bind to the first available network device and IP detected on the system.

#### At the end of the installation, this documentation will be shown:

## Linux Installer Features

There’s also a Linux installer available that will universally install binaries for all supported platforms,\
being those:

* aarch64-newtek-linux-gnu
* aarch64-rpi4-linux-gnueabi
* arm-newtek-linux-gnueabihf
* arm-rpi1-linux-gnueabihf
* arm-rpi2-linux-gnueabihf
* arm-rpi3-linux-gnueabihf
* arm-rpi4-linux-gnueabihf
* i686-linux-gnu
* x86\_64-linux-gnu

The installer is an automated installation script named "`Install_NDI_Discovery_Server_v6.sh`". Upon\
execution, the user will be presented with a license agreement document that must be accepted for the\
installation to proceed automatically. The installation process is straightforward, with all binaries being\
placed in the `Install_NDI_Discovery_Server_v6/bin` directory, located within the folder where the\
installation script was initially executed.

## Runing as a Service in Linux

### SystemD framework

{% stepper %}
{% step %}
To run NDI Discovery as a service on Linux using `systemd`, the user must use the provided\
template, fill it out appropriately, and save it as `/etc/systemd/system/ndi-discovery.service`.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FiaRWJiWA7sKnvZd0dfAK%2Fimage.png?alt=media&amp;token=39b19477-cb1f-4523-bd56-bd3af577813d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2Fv3ukhKXpL4DoHiHCFxHd%2Fimage.png?alt=media&amp;token=0fff26e7-9323-482f-811a-bc7d0070cc9e" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
It then needs to replace the `${INSTALL_PATH}` with the actual path of the binary to be launched.
{% endstep %}

{% step %}
To enable and start the service, the user needs to run the following commands:

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FcW7v1MOyWXnqrcrugC42%2Fimage.png?alt=media&amp;token=75725349-b31d-4dd4-a88b-ee474c092bd1" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
This setup allows users to simply edit the `/etc/default/ndi-discovery file` to specify their\
installation directory, making it flexible without modifying the service file itself.
{% endstep %}
{% endstepper %}

## Init.d (for systems without systemd)

{% stepper %}
{% step %}
Create the following script and save it  at `/etc/init.d/ndi-discovery`

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F7xrsHCuO2gslgw5OpnbN%2Fimage.png?alt=media&amp;token=53ae6ad4-655c-4366-a2a2-b1f5db598014" alt=""><figcaption><p>img 1</p></figcaption></figure>

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FPyl2MXfzFoDHUS8NVVSb%2Fimage.png?alt=media&amp;token=0e62bf77-b7a1-422f-8b5c-cf44263c68a1" alt=""><figcaption><p>img 2</p></figcaption></figure>
{% endstep %}

{% step %}
Make it executable with:

`sudo chmod +x /etc/init.d/ndi-discovery`
{% endstep %}

{% step %}
Change $INSTALL\_PATH to the path where the binary is located
{% endstep %}

{% step %}
&#x20;Register the service with:

`sudo update-rc.d ndi-discovery defaults`
{% endstep %}

{% step %}
Start the service

`sudo service ndi-discovery start`
{% endstep %}

{% step %}
Enable the service to start on boot

`sudo update-rc.d ndi-discovery enable`<br>
{% endstep %}
{% endstepper %}

### Changelog

NDI 6.2.0

3/06/2025 - Initial creation


# NDI Tools for Mac

{% hint style="success" %}
If you can't find the answers you're looking for here check out our [**community forums**](https://community.ndi.video/mod/forum/view.php?id=39) or see our [**troubleshooting guide**](/all/faq/troubleshooting-guides)
{% endhint %}

The following guides provide detailed information about our suite of NDI Tools for Mac, including their features, capabilities, and practical applications. From setup instructions to advanced tips, these resources are designed to help you maximize the potential of NDI technology in your workflows.

{% hint style="info" %}
Click on a card to discover more about the functions and features of each NDI Tool. You can [**install NDI Tools here**](https://ndi.video/tools/)
{% endhint %}

<table data-view="cards"><thead><tr><th align="center"></th><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><strong>Access Manager</strong></td><td align="center"><em>Streamline NDI Source Management.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac/access-manager">Access Manager</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/53tCtPYkd85i1MJGjaBD/Docs%20cover%20Access%20Manager.png">Docs cover Access Manager.png</a></td></tr><tr><td align="center"><strong>Scan Converter</strong></td><td align="center"><em>Share Your Desktop Seamlessly.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter">Scan Converter</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/9w9S5Id5wJMPiQjK7n2k/Docs%20cover%20Screen%20Capture.png">Docs cover Screen Capture.png</a></td></tr><tr><td align="center"><strong>Router</strong></td><td align="center"><em>Streamline Video and Audio Signal Routing.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac/router">Router</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/SndK9PT1EzB6b0teWz1F/Docs%20cover%20Router.png">Docs cover Router.png</a></td></tr><tr><td align="center"><strong>Test Patterns</strong></td><td align="center"><em>Streamline Connectivity and Calibration.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac/test-patterns">Test Patterns</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/EjHaNdgCH1nSDIzYMB5w/Docs%20cover%20Test%20Patterns.png">Docs cover Test Patterns.png</a></td></tr><tr><td align="center"><strong>Video Monitor</strong></td><td align="center"><em>Your Window to NDI Signals.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor">Video Monitor</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/afyRl7it4aUoAHLU4agB/Docs%20cover%20Studio%20Monitor.png">Docs cover Studio Monitor.png</a></td></tr><tr><td align="center"><strong>Virtual Input</strong></td><td align="center"><em>Elevate Your Webcam Conferencing Experience.</em></td><td><a href="/all/using-ndi/ndi-tools/ndi-tools-for-mac/virtual-input">Virtual Input</a></td><td><a href="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/ofmG3CXI3NOlDS1lyfPK/Docs%20cover%20Webcam.png">Docs cover Webcam.png</a></td></tr><tr><td align="center"><strong>NDI Discovery</strong></td><td align="center"><em>Manage and Monitor Everything</em></td><td></td><td data-object-fit="contain"><a href="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FjVmCmO2ZWKUZ0Lcudyoa%2FNDI%20ICON%20-%20STUDIO%20MONITOR%20_%20VIDEO%20MONITOR.png?alt=media&amp;token=57d9ff3c-c525-4a8b-93b4-3417b82efceb">NDI ICON - STUDIO MONITOR _ VIDEO MONITOR.png</a></td></tr></tbody></table>

{% hint style="success" %}
If you're unsure about a process for Mac check out the [support page on the Apple website](https://support.apple.com/mac). You can also check out our [**FAQ** ](/all/faq/troubleshooting-guides)and our [community forums](https://community.ndi.video/course/view.php?id=22) for common questions and troubleshooting guides
{% endhint %}

{% hint style="warning" %}

### System Minimum Requirements

**System:** Mac OS Ventura 13 or later

**Processor:** Intel CPUs • Apple M series Silicon CPUs

**GPU:** Apple M series, AMD Vega, 5000 or 6000 series, Intel UHD 630 or Intel Iris Plus

**Other:** 1Gbps Local Area Network
{% endhint %}

{% hint style="info" %}
You can find information on how to uninstall NDI Tools on the official [Mac support page](https://support.apple.com/en-us/102610)
{% endhint %}


# Access Manager

Streamline NDI Source Management.

N**DI Access Manager** is a tool designed to give you control over the visibility and discoverability of NDI sources within your network. This tool allows you to manage precisely who can see specific NDI sources through the utilization of [send and receive groups](/all/getting-started/white-paper/discovery-and-registration/ndi-groups). Ideal for enhancing content-sharing workflows, NDI Access Manager is available for free as part of the NDI Tools package.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Access Manager**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Access Manager from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Creating Groups**

First, select the `Receive Groups` or `Send Groups`tabs to determine if you are creating NDI groups that allow devices to send or receive specific NDI signals. Them, create a new NDI group by clicking `New.`

To configure a group, you should attribute it to a name. You can also add a small memo/note with additional information about the group.

By entering group names, you **restrict NDI sources to only those devices that have the corresponding Group in their Receive Groups list.**

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/Qa4qmYwi6iA9n5CLKP9J/image.png" alt="" width="563"><figcaption><p>Creating a new NDI Receive Group</p></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/QTuoYDRhua5IqhO07F2j/image.png" alt="" width="563"><figcaption><p>Creating a new NDI Send Group</p></figcaption></figure>

***

## Configuring **Devices**

{% hint style="info" %}
If you want to explore some examples of how to connect different devices to NDI Groups, check the [scenarios](/all/getting-started/white-paper/discovery-and-registration/ndi-groups#scenarios) in our White Paper.
{% endhint %}

***

## **External Sources**

* Use the **External Sources** tab to reach NDI-enabled devices on subnets that are not on your current network.
* Add external sources by specifying IP addresses, providing easily identifiable names, and managing settings.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/RanZGyeVzLLtpzYCukeL/image.png" alt="" width="563"><figcaption><p>FInd subnets through the External Sources tab.</p></figcaption></figure>

***

## Advanced Settings

Explore advanced settings in the "Advanced" tab to address specific network challenges:

* **Configure transport modes, multicast ranges, network mapping**, and more.
* To streamline the management of NDI signals, particularly in larger networks, **designate an NDI discovery server, set preferred** [**NICs**](#user-content-fn-1)[^1]**, and define device aliases**.&#x20;

<div data-full-width="true"><figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FatjMyQ7I80TVJ9Hcz86W%2Fimage.png?alt=media&amp;token=164183a4-f216-4910-8cf3-78a1c553a1a2" alt=""><figcaption></figcaption></figure></div>

NDI Access Manager settings are saved into a specific file in the computer's operating system. All NDI applications will look for this file when they first start to get the NDI configuration data.  If this file is updated while an NDI application is running, it will continue to use the previous information.   To refresh the settings for an NDI application, restart it again which will make it read the file and get the new settings.

The NDI Access Manager configuration file is stored in the following location:

**Mac**\
`$HOME/.ndi/ndi-config.v1.json`

**Linux**\
`$HOME/.ndi/ndi-config.v1.json`

{% hint style="warning" %}
Always ensure network configurations align with IT guidelines for better network compatibility and optimal performance. Consult with your IT department before configuring **NDI Access Manager**.
{% endhint %}

[^1]: A network interface controller (NIC, also known as a network interface card, network adapter, LAN adapter, or physical network interface, and by similar terms) is a computer hardware component that connects a computer to a computer network.


# Scan Converter

Share Your Desktop Seamlessly.

**NDI Scan Converter** is an application designed to effortlessly share your computer's desktop video and audio with any other device on your network through an NDI stream.&#x20;

Whether you're conducting broadcasts and presentations, collaborating on projects, creating tutorials, or engaging in media playback, Screen Capture provides a valuable solution.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Scan Converter**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Scan Converter from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Sharing Your Screen**

The tool will appear in your system tray with the NDI logo. Upon launch, your computer's desktop video and audio are viewable from any NDI-enabled device on your network.

***

## **Viewing on NDI-Enabled Devices**

View the output of Screen Capture on another NDI-enabled device using an application like [Video Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor)[.](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor)

**Right-click on the screen** and select the device name and corresponding NDI stream.

## Desktop or Application Selection:

* **On the `File` top level menu**, you can select which will be the source of your NDI stream. Select either `Desktop` to capture your entire desktop or choose a specific application window.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/chNe5NduHEEDGByLDUK0/2-1_SC_Menu.png" alt=""><figcaption></figcaption></figure>

## System Audio Input Configuration:

**You can mute audio capture** by clicking `Mute Audio`, which can be found on the `Settings` top-level menu.

Choose the **desired system audio input** for capturing sound along with your video in your MacOS `Sound` settings.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/kleVVHGQImuCCra0nFAB/3-3_SC_System_Prefs_Audio.png" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Scan Converter features are specific to the macOS.
{% endhint %}

If you want to share your Mac screen or a single app window as a standard high-bandwidth NDI source, use Scan Converter. It can send a selected application window, carry audio, and make the stream available to other NDI-enabled devices.


# Router

**NDI Router** is a tool that enables the routing of NDI video and audio streams to a diverse array of destinations. This tool enables users to:

* assign NDI sources to named router outputs quickly.
* create presets for recalling router layouts for different shows or sites with just one click.
* provide user-friendly controls for ease of use.&#x20;

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Router**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Router from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## Interface Overview

The NDI Router interface comprises four main components:

1. **Preview Pane:** Located in the center, it displays the source routed to the selected destination.
2. **Source Buttons:** On the left of the preview pane, these buttons can be easily assigned to any NDI stream.
3. **Destination Buttons:** To the right of source buttons, these identify router outputs.
4. **Preset Buttons:** Positioned at the far right, these buttons enable the effortless recall of complete router layouts.

***

## Routing Configuration

NDI Router can manage up to 64 sources and 64 destinations. To configure it, click on the gear icon in the upper right corner of the application to activate **configuration mode**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/xhear0La9Koal7SAHYfw/router%20img%201.PNG" alt=""><figcaption><p>Screenshot of NDI Router</p></figcaption></figure>

Once **configuration mode** is activated, sources, destinations, and preset buttons can be added by clicking on the icons highlighted below.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/uzXk7FiEoArcUyxaTxTZ/router%20img%202.PNG" alt=""><figcaption><p>Screenshot of NDI Router - configuration mode activated</p></figcaption></figure>

After exiting **configuration mode**, it is possible to define sources and destinations.&#x20;

{% hint style="info" %}
**NDI Router** creates virtual outputs, which are then used as sources for NDI receivers. By selecting the NDI sources, the NDI Router routes the NDI stream by directly connecting an NDI transmitter with a receiver without any stream passing through the NDI Router.
{% endhint %}

***

## Additional Configurations

**Sources** can be managed and configured by **right-clicking** over a Source button. In this configuration panel, you can select the NDI sources that will be routed to the destination and define some extra settings like the button label, the text, and the background color.

**Destinations** can be managed and configured by right-clicking over a Destination button. In this configuration panel, you can define the NDI Virtual Stream name that will be received by the destination and some extra settings like the button label, the text, and the background color.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/mtPBjZ1l4q0HfWiVE9DO/router%20img%203.PNG" alt=""><figcaption><p>Screenshot of NDI Router - Configure Source button</p></figcaption></figure>

***

## Routing Process

NDI receivers will be connected to the NDI Router's virtual output. Subsequently, in the NDI Router, select the destination button followed by the source button. The NDI stream will then be sent from the sources to the NDI receivers, which are virtually connected to the router.

***

{% hint style="info" %}
Was this helpful? Please let us know by rating this page; you can also leave a [review](https://forms.office.com/Pages/ResponsePage.aspx?id=pzs8xttADka98eY6AqOtWZeUcJXxBylLhfBY94EFe29UNjZRV0xTOFdHR09INzRaN1BDVFFWT0lNRi4u).
{% endhint %}


# Test Patterns

Streamline Connectivity and Calibration.

**NDI Test Patterns** is a tool designed to facilitate precise audio and video calibration on NDI-enabled devices within your network.&#x20;

With a range of test patterns and audio tones, this tool ensures accurate color properties and optimal sound levels.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Test Patterns**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Test Patterns from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Immediate NDI Signal Sharing**

Upon launching, NDI Test Patterns will instantly share an **NDI signal** across your network, viewable on other NDI-enabled devices using software like Studio Monitor.&#x20;

***

## **Viewing the NDI Signal**

To receive the signal from NDI Test Patterns, right-click on the [NDI Video Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) tool, select the device's name, and choose `Test Patterns`.

***

## **Test Pattern Variety**

Explore a variety of test patterns by scrolling down the page and selecting the one that best suits your calibration needs.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/TfusszMIPiuB1B4OfHjD/Test%20Patterns%20-%20Main%20UI.png" alt=""><figcaption><p>Test Patterns library </p></figcaption></figure>

***

## **Custom Image With Embedded Alpha**

Click the **plus button at the bottom of the screen** to add custom images to the list of patterns in NDI Test Patterns.

NDI Test Patterns supports images with embedded alpha[^1], allowing you to load most 32-bit image file formats and use them as sources for overlays in your program.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/z4QoEj1XNYS0hkQEdAHk/Test-Patterns-alpha.png" alt=""><figcaption></figcaption></figure>

***

## **Audio Calibration**

Enable a one-kilohertz tone accompanying the NDI test pattern signal to test your audio equipment. Choose from various decibel levels to suit your audio calibration requirements.

[^1]: The **alpha channel** is a color component that represents a color's degree of transparency or opacity (i.e., the red, green, and blue channels). It determines how a pixel is rendered when blended with another.


# Video Monitor

Your Window to NDI Signals.

**NDI Studio Monitor** is a tool that allows you to effortlessly view video and audio signals transmitted over your network through an NDI stream.&#x20;

Studio Monitor is a valuable tool for anyone involved in video monitoring, digital signage, KVM control, recording, PTZ operation, or more.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Studio Monitor**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) and run NDI Studio Monitor from the [NDI launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications list.

***

## **Remote Control and Navigation**

The application launches as a pop-up window, providing an IP address or QR code for remote control from another device on the same network.

***

## **Viewing NDI Sources**

Click on the `NDI` button on the top menu bar to browse a list of devices broadcasting over NDI. Then, you can select any channel to view the video and audio in real-time.

{% hint style="warning" %}
If your desired source is not listed, ensure that the equipment is on the correct network and configured properly.
{% endhint %}

***

## Settings and Customization

Explore the `Settings` tab to customize your viewing experience:

* **Low Bandwidth:** Optimize viewing NDI sources in low bandwidth contexts.
* **Mute:** Mute audio from the selected NDI source.
* **Set Record Path:** Specify the location where recorded files will be saved.
* **Allow Receiver Advertising:** Makes Video Monitor available for monitoring when using Discovery Server.

{% hint style="success" %}
Initiate recordings by clicking the red button in the top right corner of the application.
{% endhint %}

* **PTZ Control:** Take advantage of NDI Video Monitor's capability to **remotely control** [**PTZ**](#user-content-fn-1)[^1] **cameras**. Select the NDI camera source under the `NDI` tab and access PTZ Control under `Settings`. Manipulate camera movement and store preset positions for quick recall.
* **Device Web Page:** Access the web page of certain NDI-enabled cameras and devices for configuration changes.

***

{% hint style="info" %}
To open multiple instances of Video Monitor on Mac use the command `open -a "NDI Video Monitor.app" -n` on Terminal
{% endhint %}

[^1]: Pan-tilt-zoom (**PTZ**) cameras are built with mechanical parts that allow them to swivel left to right, tilt up and down, and zoom in and out of a scene.


# Virtual Input

Elevate Your Webcam Conferencing Experience.

{% hint style="warning" %}
As of the [6.1 update](/all/getting-started/release-notes) we are experiencing issues with Virtual input. If you also find you are having issues, please see the current [hotfix](/all/faq/common-issues/im-having-issues-with-virtual-input-for-macos).
{% endhint %}

**NDI Virtual Input** is a tool that enables you to use any NDI video and audio signal on your network as a webcam source.

This is particularly beneficial for enhancing your video conferencing experience on platforms like Zoom, Microsoft Teams, Skype, and more. By replacing your conventional webcam with professional video production NDI-enabled equipment and software, you can bring graphics, virtual sets, and other visual enhancements to your virtual meetings.

After [installing NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools), access NDI Virtual Input from the [NDI Launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications folder.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Setting up NDI Virtual Input for the first time**

While launching NDI Virtual Input for the first time, you will be prompted to install the NDI Virtual Camera extension before using the application. This is a needed step for macOS to recognize the application as a virtual camera you can access system-wide.

{% stepper %}
{% step %}

### Install NDI Virtual Input camera extension

<div align="left"><figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FH1EjSVSo9nEhiOXEjY6k%2FScreenshot%202024-12-23%20at%2018.52.18.png?alt=media&amp;token=43a6bf69-e0db-44d1-bf2a-ddabe28df203" alt=""><figcaption><p>The first step is to install NDI Virtual Camera extension</p></figcaption></figure></div>

{% hint style="danger" %}
**Important**

The system dialogue will prompt you with two options. Although the highlighted button is 'OK', you must click on '**Open System Settings**' to proceed to install the extension.

If the 'OK' button is clicked, **you must access the Camera Extension settings manually.** Find them in System Settings > General > Login Items & Extensions > Camera Extensions (click on *i* icon)
{% endhint %}
{% endstep %}

{% step %}

### Open System Settings

<div align="left"><figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FjPG4jLtBPuceITa4XEtp%2Fimage.png?alt=media&amp;token=887e776e-90c5-48a9-8178-fe2ec5538cfd" alt=""><figcaption><p>Click 'Open System Settings' to access Camera Extension toggle</p></figcaption></figure></div>

{% hint style="danger" %}
**Important**

If the 'OK' button is clicked on the previous step, **you must access the Camera Extension settings manually**. Find them in System Settings > General > Login Items & Extensions > Camera Extensions (click on 🛈 icon)
{% endhint %}

{% endstep %}

{% step %}

### Turn on NDI Virtual Input toggle

<div align="center"><figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F7ql5WUPhHOnpZw4CqeXo%2Fimage.png?alt=media&amp;token=454eafac-88f0-4d99-8bc2-3f7e582c6de5" alt="" width="563"><figcaption><p>Turn on NDI Virtual Input camera extension setting.</p></figcaption></figure></div>
{% endstep %}

{% step %}

### Restart NDI Virtual Camera

Once restarted, NDI Virtual Camera should start working normally.

<div align="left"><figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FNvx6k77TmbYJksyklPpe%2FScreenshot%202024-12-23%20at%2018.53.09.png?alt=media&amp;token=5ca7fe2c-dad3-4b12-bded-ecbd879589b6" alt=""><figcaption><p>Restart NDI Virtual Input to use the application.</p></figcaption></figure></div>
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
If NDI Virtual Camera still doesn't work after a correct install, you may be facing a known issue where macOS has multiple versions of the camera extension installed. We are actively working towards fixing this issue, [please read the hotfix we have in place](/all/faq/common-issues/im-having-issues-with-virtual-input-for-macos).
{% endhint %}

***

## **Source Selection**

**Hover** over each source to select any channel being sent from that device. Sources can be previewed on the area above the dropdown selector.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FoHdqMUrZvQI1506PZrbU%2FScreenshot%202024-12-23%20at%2018.53.29.png?alt=media&amp;token=8a5833c8-b9e4-4b70-972e-b958d28d5ae8" alt=""><figcaption></figcaption></figure>

## **Using it with Conferencing Applications:**

By selecting an NDI channel, it will become available as a source in conferencing applications. In your conferencing software's video input settings, choose **NDI Virtual Camera**, and you're ready to go.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FkOPube59cInz4NYQBXHF%2Fimage.png?alt=media&amp;token=b339f263-8bb2-47a7-8e27-6f9cfe9e7317" alt=""><figcaption></figcaption></figure>


# Discovery

Updated as of Version 6.2

**NDI Discovery** is a tool that enables you set up and manage Discovery Servers within workflows. We cover the capabilities of [Discovery Service](/all/getting-started/white-paper/discovery-and-registration/discovery-server) in depth in our [White Paper](/all/getting-started/white-paper).

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/discovery/).
{% endhint %}

***

{% hint style="info" %}
Looking for **Discovery Service?** Download it [here](https://ndi.video/tools/discovery-service/).
{% endhint %}

## **Accessing NDI Discovery**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools). After installing it, access NDI Discovery from the [NDI Launcher](/all/using-ndi/ndi-tools/ndi-tools-launcher) or your applications folder.

Once you've installed Discovery check out our [Getting Started with Discovery](broken://pages/C22wOmUSoeb4lHproN4j) guide. For  high level introduction on how Discovery works read [this guide](/all/developing-with-ndi/developer-guides/receiver-discoverability-monitoring-and-control-overview) on Receiver Discoverability, Monitoring, and Control.

***

## **Senders**

Displays all NDI sources (“senders”) that have registered with the Discovery Server. Each sender entry shows its device name/hostname, the network address, and port it is streaming from.  Devices appear grouped by hostname. This tab helps you quickly see which NDI devices are currently available to provide streams on your network.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2Fd6Q1OlITTFOPBOfbG5wK%2Fimage.png?alt=media&amp;token=3dc95e67-7666-4d70-b405-e73d38f390ea" alt=""><figcaption></figcaption></figure>

## **Receivers**

Shows all NDI receivers (endpoints listening for NDI streams) recognized by the Discovery Server. Devices are also grouped by hostname under receivers. This is especially useful when troubleshooting or confirming which machines are actively listening for NDI streams.

{% hint style="success" %}
From the dropdown carrot under **Receivers** you can specify the source for that receiver
{% endhint %}

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F4mwvpr35gGat8t4hHc7U%2Frecievers.PNG?alt=media&amp;token=a549ac21-1b3f-4f1d-a731-90389e9fe57d" alt=""><figcaption></figcaption></figure>

## **Settings**

You can configure or change the Discovery Server IP and port. You can also see whether the application is connected to a Discovery Server and at which IP/port.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FEJyYTF7uWAwP96iI0KGr%2Fsettings.PNG?alt=media&amp;token=5af54b27-7667-40ac-8914-47ae2533e48f" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
For first time set up, when using with [Video Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-mac/video-monitor) for the first time be sure to select the **Allow Receiver Advertising** and **Allow Receiver Control** from the settings
{% endhint %}

{% hint style="info" %}
Check out
{% endhint %}


# Getting Started with Discovery Service

This guide will explain how to get set up with NDI Tools application, Discovery Server and Studio Monitor on a Windows machine

{% stepper %}
{% step %}
**(Optional)** If you want to run the Discovery Server as a Windows Service then you'll need to install the stand alone Discovery Server package.

{% hint style="info" %}
The Discovery Service is only available for **Windows** and **Linux.** The screenshot below is the setup for Windows.
{% endhint %}

&#x20;Install the Discovery Server package. During installation, you must specify the IP address and port for the Discovery Service. &#x20;

* You can use **127.0.0.1 (localhost)** as the IP if you are only testing with receivers on the same machine. Otherwise, you must specify the IP address of the machine where the Discovery Server is running.
* The port can be left at the default value unless a different port is needed.&#x20;
* The Discovery Service will start automatically

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F2WWDem36d1cikO2mRt7N%2Fimage.png?alt=media&amp;token=7ced815e-8cc8-47d0-8f37-c4d3ddb0d1e3" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Install the [**NDI Tools package**](/all/using-ndi/ndi-tools/installing-ndi-tools).
{% endstep %}

{% step %}
Launch [NDI Tools](/all/using-ndi/ndi-tools) and complete the registration form (if not already done).&#x20;
{% endstep %}

{% step %}
Launch [Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager)&#x20;

1. In the **Advanced** tab under **Network Mapping** enable **Discovery Servers** &#x20;
2. Input the IP address of the Discovery Server and click **Apply**.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F07tHHNCoJ8FCLSI4Js4l%2Fimage.png?alt=media&amp;token=46213429-30ad-4860-b5b9-146d6c99575c" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Launch **Discovery** from [NDI Tools](/all/using-ndi/ndi-tools)

1. Go to the **Settings** tab.&#x20;
2. If you configured the Discovery Server IP in Access Manager in the previous step, then you should select and enable **Use Access Manager Setting**s.&#x20;
3. Otherwise, enter the IP address of the Discovery Server next to **Setup Discovery Server** and click **Connect**.&#x20;
4. Just above you should see a message in green saying, **Connected to Discovery Server at** and the IP address and port.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FKX71qFAAlCnFpp2NINjO%2Fimage.png?alt=media&amp;token=87038a3d-c375-4046-b1bb-26ab5dd1061f" alt=""><figcaption></figcaption></figure>

5. If the message is in yellow saying, **Attempting to Connect** then double check your IP settings again. If you think you might have made a mistake with the Discovery Server’s IP address or port, you will need to run the installer again to reconfigure the IP and port.&#x20;
6. Once done, click back to the **Receivers** tab.&#x20;
   {% endstep %}

{% step %}
Launch [Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor)

1. Click on the Menu button on the top left. Select **Settings**.
2. Click and enable **Allow Receiver Advertising**.
3. Click and enable **Allow Receiver Control.**

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FEpulVSYPhFpc3tfwzD3P%2Fimage.png?alt=media&amp;token=30dc0d07-1956-4371-95fc-1fe6a00b7849" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In the Discovery Application

1. You should now see the **Studio Monitor** receiver in the **Discovery** application.&#x20;
2. Receivers will be grouped by hostname first.&#x20;

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2FHM7xvBCmbQatjlz8fhbs%2Fimage.png?alt=media&amp;token=ab64e78c-ee6c-42e7-862c-f1569eeb94aa" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Launch Discovery Server using Command Line for MacOS

## On Mac

1. You will first need to insure that you have installed the [NDI SDK](/all/developing-with-ndi/sdk). By default it will install to Library
2. If you did not change the install location, open [Terminal ](https://support.apple.com/guide/terminal/welcome/mac)on MacOS and enter the following command:&#x20;

```
open -a "Terminal" "/Library/NDI SDK for Apple/bin/Application.Mac.NDI.DirectoryService"
```

3. A separate Terminal window will open with NDI Discovery Service running. If a different directory was chosen to install the NDI SDK to, replace 'Library' with your chosen directory path.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F8HPw1YE61l1KAIsNUU9f%2Fimage.png?alt=media&amp;token=71895459-024a-4cc1-a67c-a849e6bc1848" alt=""><figcaption></figcaption></figure>

3. On the NDI Sender, open [Access Manager](/all/using-ndi/ndi-tools/ndi-tools-for-windows/access-manager), and enter the IP address of your Mac and the **Port Number**

{% hint style="info" %}
If you choose not to use Access Manager you can still enter the IP address using the settings in the relevant section of the NDI device
{% endhint %}


# Plugins

NDI offers a range of plugins designed to integrate our powerful connectivity technology seamlessly into popular creative applications. These plugins include NDI for After Effects, Premiere Pro, Output for Final Cut Pro, NDI for VLC, and Audio Direct. Each plugin enhances the flexibility and efficiency of your production pipeline, bringing the power of NDI directly into the tools you use every day.

{% hint style="info" %}
Click on a card to discover more about the functions and features of each plugin.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>NDI for After Effects</strong></td><td><a href="/all/using-ndi/ndi-tools/plugins/ndi-for-after-effects">NDI for After Effects</a></td></tr><tr><td><strong>NDI for Premiere Pro</strong></td><td><a href="/all/using-ndi/ndi-tools/plugins/ndi-for-premiere-pro">NDI for Premiere Pro</a></td></tr><tr><td><strong>NDI Output for Final Cut Pro</strong></td><td><a href="/all/using-ndi/ndi-tools/plugins/ndi-output-for-final-cut-pro">NDI Output for Final Cut Pro</a></td></tr><tr><td><strong>NDI for VLC</strong></td><td><a href="/all/using-ndi/ndi-tools/plugins/ndi-for-vlc">NDI for VLC</a></td></tr><tr><td><strong>Audio Direct</strong></td><td><a href="/all/using-ndi/ndi-tools/plugins/audio-direct">Audio Direct</a></td></tr></tbody></table>


# NDI for After Effects

Enable real time, renderless playback and preview over IP.

**NDI for Adobe After Effects** is a groundbreaking plugin that seamlessly integrates your laptop or workstation into your live production workflow. (Available for **Windows** and **Mac**)

By enabling you to send an NDI stream directly from your After Effects timeline, it simplifies the review and approval process, streamlines collaboration between remote teams, and accelerates live-to-air editing workflows.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## Installation and setup

* Install [NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) on your machine.
* Open or start a new project in Adobe After Effects.
* On **Windows**, navigate to the top of the screen and select `Edit > Preferences > Video Preview` \
  **OR** \
  On a **Mac**, open `Video Preview Preferences` in After Effects and enable NDI in the `Video Preview` Section.
* Enable `Mercury Transmit` by checking the box.
* Select `NDI output` from the options.
* Click `OK` to apply the settings.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/y1S9CBc3X3Odi8a5Wyzq/02-01_After_Effects_Prefs.png" alt=""><figcaption></figcaption></figure>

***

## Real-time output

* Click play or scrub through your After Effects timeline.
* Your project's video and audio output will be displayed in real-time across your network.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/0adZ9LdUG5rzDDcxQgN1/03-01_Premiere.png" alt=""><figcaption><p>Your project's video and audio output will be displayed in real-time across your network</p></figcaption></figure>

***

## Viewing with NDI Studio Monitor

* Use NDI-enabled software, such as [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor), to view these sources.
* Right-click on [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor), choose the transmitting device's name and select `Adobe After Effects`.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/9GKkUT4Ln0DvOK3ydih4/03-02_Premiere_In_Studio_Monitor.png" alt=""><figcaption><p>Instantly view the output from your transmitting device in real time.</p></figcaption></figure>


# NDI for Premiere Pro

Seamless Integration for Live Production.

**NDI for Adobe Premiere Pro** is a powerful plugin that accelerates live-to-air editing workflows with real-time renderless playback and preview over your network via NDI. (Available for **Windows** and **Mac**)

By enabling you to send an NDI stream directly from your Premiere Pro timeline, it simplifies the review and approval process, streamlines collaboration between remote teams, and accelerates live-to-air editing workflows.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## Installation and setup

* Ensure that  Adobe Premiere Pro is installed on your machine.
* Install [NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) on your machine.
* Open or start a new project in Adobe Premiere Pro.
* Go to the top of the screen, select `Edit`, then navigate to `Preferences` and choose `Playback`.
* Enable `Mercury Transmit` by selecting the checkbox.
* Select `NDI output` and click `OK` to apply the settings.

***

## Real-time output

* Click play or scrub through your Premiere Pro timeline.
* Your project's video and audio output will be displayed in real-time across your network.

***

## Viewing with NDI Studio Monitor

* Use NDI-enabled software, such as [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor), to view these sources.
* Right-click on [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor), choose the transmitting device's name and select `Adobe After Effects`.


# NDI Output for Final Cut Pro

Quickly output video directly from your Final Cut Pro timeline.

**NDI Output for Final Cut Pro** is a groundbreaking plugin that seamlessly integrates your laptop or workstation into your live production workflow. (Available for **Mac** only)\
\
By enabling you to send an NDI stream directly from your Final Cut Pro timeline, it simplifies the review and approval process, streamlines collaboration between remote teams, and accelerates editing workflows.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## Installation

* Install [NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) on your machine.
* Open or start a new project in Final Cut Pro.

## Setup

1. **Configure Sound Preferences**

   * Go to `Sound` in `System Preferences` on your Mac.
   * Set `Sound Output` to `NDI Audio`.

   <figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/GcO2ogqBl2uqBR13guBg/1-2_OSX_FCP_Apple_Sound_Prefs.png" alt="" width="561"><figcaption></figcaption></figure>
2. **NDI Output Settings**

   * Open `NDI Output` in `System Preferences`.
   * Set the `Video Format` and `Frame Rate` to match your Final Cut Pro project settings.

   <figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/E7JIzNRKJQLCl0c3phPI/image.png" alt=""><figcaption></figcaption></figure>
3. **Match Final Cut Pro Project Settings**

   * Ensure that your Final Cut Pro project settings match the configurations you set in the `NDI Output` preferences.

   <figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/dvK1vsf5ITJnkbHv2Kyl/3-1_OSX_FCP_Project_Settings.png" alt=""><figcaption></figcaption></figure>
4. **Enable A/V Output in Final Cut Pro**

   * Open Final Cut Pro.
   * In the `Window` menu, enable `A/V Output`.

   <figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/IXIhY77CUKgupytH1gMH/3-4_OSX_FCP_Preferences_AV_Output.png" alt=""><figcaption></figcaption></figure>

***

## **Viewing with NDI Video Monitor:**

* Use NDI-enabled software, such as [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor), to view these sources.
* Right-click on [NDI Studio Monitor](/all/using-ndi/ndi-tools/ndi-tools-for-windows/studio-monitor), choose the transmitting device's name and select `Final Cut Pro`.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/lQ4NZTWZHPTrP9hku8I9/4-3_OSX_FCP_Video_Monitor_FCP_Output.png" alt=""><figcaption></figcaption></figure>

***

## See it in action&#x20;

{% embed url="<https://www.youtube.com/watch?v=aEvVNs562lo>" %}


# NDI for VLC

Transforming Your Windows Computer into an NDI Video Server.

The **NDI VLC Plugin** enables you to present video content and other supported multimedia to the network as IP sources directly from VLC Media Player. (Available for **Windows** and **Mac**)\
\
It encodes the output from each instance of the free player to NDI in real-time, making media files of virtually any format available for use in your live production.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## Installation and setup

* Install [NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools) on your machine.
* Launch VLC Media Player, an open-source media player that supports various sources and codecs.
* Click on `Tools` at the top of the window and select `Preferences`.
* Configure **video output** by clicking on the video icon under output and selecting `NDI Video Output`.
* Configure **audio output** by clicking on the audio icon on the output module and selecting `NDI Audio Output`.
* Go to the bottom of the `Preferences` menu and select `Save`.

## **Sharing Video:**

* Click on `Media` and choose from various options to start sharing your video.
* You can open multiple instances of VLC Media Player to share different sources simultaneously.

### **Playback on NDI-Enabled Devices:**

* Click `play` on VLC Media Player to start sharing a video across your network via NDI.
* You can view these sources on another NDI-enabled device using software like NDI Studio Monitor: Right-click anywhere on the screen, then select the broadcasting computer's name and choose VLC.

## Control Virtual PTZ Positioning

### **Setup PTZ Control PTZ:**

* Right-click on the screen, select `Settings`, and choose `PTZ Settings`.
* Check the box next to **`Show PTZ Controls`**.

### **Manipulate Virtual Positioning:**

* Use the controls on the right side to pan or zoom within your video.
* You can also create preset shots to recall as needed.

***

{% hint style="info" %}
Was this helpful? Please let us know by rating this page; you can also leave a [review](https://forms.office.com/Pages/ResponsePage.aspx?id=pzs8xttADka98eY6AqOtWZeUcJXxBylLhfBY94EFe29UNjZRV0xTOFdHR09INzRaN1BDVFFWT0lNRi4u).
{% endhint %}


# Audio Direct

Unleash High-Quality Audio Distribution.

**NDI Audio Direct** is a collection of VST audio plugins for MS Windows designed to integrate seamlessly with virtually any audio software application, allowing you to harness the power of NDI. (Available for **Windows** onl&#x79;**)**

This innovative tool empowers users to select, receive, and generate multichannel audio with exceptional quality and minimal latency.

It facilitates easy Audio over IP, supporting workflow both on-premises and in virtual or cloud environments, and it's compatible with any digital audio workstation through VST plugins.

{% hint style="info" %}
Download NDI Tools [here](https://ndi.video/tools/download/).
{% endhint %}

***

## **Accessing NDI Audio Direct**

[Install NDI Tools](/all/using-ndi/ndi-tools/installing-ndi-tools). After installing it, access NDI Audio Direct from any digital audio workstation program.

{% hint style="info" %}
By default, the NDI Audio Direct VST plugin is installed on C:\Program Files\Common Files\VST3. You can set your software's VST plugin location to this path or copy them to a folder of your choice.
{% endhint %}

***

## Using the NDI Plugin With DAW[^1]

In your DAW application, look for the VST plugin settings menu (the location is specific to each DAW) and check if the **VST3** path is correctly configured, then perform the plugin re-scan. This will load the NDI Plugin in the DAW application.

Here is the Plugin Management interface in Ardour:

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/0WnIUj4sm3p14mdAukEv/image.png" alt=""><figcaption><p>Screenshot of Plugin Management menu on Ardour DAW</p></figcaption></figure>

***

## **NDI Input settings**

When you load the NDI Input plugin in your DAW, you'll see a menu to configure the following settings:

* **NDI source**
* **Number and configuration of Audio Channels:** NDI Audio Direct supports up to 16 audio channels in different configurations.
* **Audio Level:** You can adjust the source level to match your DAW level setting.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/GYi88fCryAfKzbZCIpQ7/image.png" alt=""><figcaption><p>Screenshot of NDI Input settings menu (Windows)</p></figcaption></figure>

***

## **NDI Output settings**

When you load the NDI Output plugin in your DAW, you'll see a menu to configure the following settings:

* **The NDI Output**
* **Number and Audio Channels configuration**: NDI Audio Direct supports up to 16 audio channels in different configurations.
* **Audio Level:** You can adjust the source level to match your level destination.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/4ieSJ9lLXtTzxY8B5zcF/image.png" alt=""><figcaption><p>Screenshot of NDI Output settings menu (Windows)</p></figcaption></figure>

[^1]: Acronym for Digital Audio Worksation, a DAW is used for [recording](https://en.wikipedia.org/wiki/Sound_recording_and_reproduction), editing and producing [audio files](https://en.wikipedia.org/wiki/Audio_files). DAWs come in a wide variety of configurations from a single software program on a [laptop](https://en.wikipedia.org/wiki/Laptop), to an integrated stand-alone unit, all the way to a highly complex configuration of numerous components controlled by a central computer.


# OBS

Looking for NDI support in OBS Studio? NDI does not provide an official OBS plugin. The current third-party OBS plugin for NDI workflows is DistroAV, formerly known as OBS-NDI.\
\
DistroAV adds NDI input and output options to OBS Studio, including NDI Source, NDI Output, and NDI Filter. Because DistroAV is maintained separately from NDI Tools, always check the current DistroAV requirements before installing or troubleshooting. At the time of review, DistroAV lists **OBS Studio 31.1.1** or higher and **NDI Runtime 6.3** or higher as requirements.<br>

For setup steps, see [**Getting Started with OBS**](/all/using-ndi/obs-and-3rd-party-software/getting-started-with-ndi-in-obs-for-windows-or-mac)

{% hint style="warning" %}
If you previously installed OBS-NDI, remove the older plugin before installing DistroAV to avoid plugin conflicts.
{% endhint %}


# Utilities

**NDI Utilities** are standalone applications designed for specific purposes within NDI-based workflows or for integrating our technology into products. Unlike the NDI Tools, which feature a closed user interface (UI), these Utilities are meant for more flexible uses and exploration. Some of them may only be operated through a command-line terminal.

{% hint style="info" %}
Click on a card to discover more about the functions and features of each Utility.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Analysis</strong></td><td><a href="/all/using-ndi/utilities/analysis">Analysis</a></td></tr><tr><td><strong>Discovery Service</strong></td><td><a href="/all/using-ndi/utilities/discovery-service">Discovery Service</a></td></tr></tbody></table>

{% hint style="warning" %}
If you are looking for other **Utilities** such as the Unreal Engine SDK, NDI Free Audio or Bridge Service that are used for **Developing with NDI**, find them here: [Utilities](/all/developing-with-ndi/utilities)
{% endhint %}


# Analysis

Version 6.1

## Introduction

The **Analysis** tool enables expert users to analyze the performance of NDI network connections by providing key statistics that would otherwise be difficult to recover separately. It offers detailed information about the sources available on a network and their connection types, making it a valuable tool for debugging systems and identifying the root causes of potential issues.

{% hint style="warning" %}
Analysis is currently not available on the Tools Launcher. You can download it [**here from our main website**](https://ndi.video/tools/analysis/)
{% endhint %}

> "There are three kinds of lies: lies, damned lies, and statistics." (Mark Twain, Benjamin Disraeli, et al)&#x20;

*In general, if you don’t actually see a problem, you don’t need this tool.*

Analysis is capable of identifying deviations that are, for all practical purposes, meaningless. Much ado about (very, very slightly more than) nothing is effectively time and effort wasted. The Analysis tool is provided to help you better diagnose and understand network issues. While it produces a deluge of detail about network connections and NDI streams, the human eye is by far the **best** arbiter of video performance and quality.&#x20;

Ultimately your eye provides a superior real-time analysis, and one which is inherently more tolerant. In certain cases when subjective issues are visible, lower-level analysis of the root problem may be required to understand the underlying factors. While we would love to help every user with every problem, the sheer numbers of those populating ‘*the NDI nation*’ make this quite impossible. We do, however, offer professional services to those who need assistance in diagnosing issues or help with large scale, complex NDI networking issues.

{% hint style="info" %}
You can always [reach out to support here](https://ndi.video/resources/support/) or visit our [community forums here.](https://community.ndi.video/mod/forum/view.php?id=39)
{% endhint %}

## Finding All Sources on the Network

Analysis can be used in order to locate NDI sources on the local network. To achieve this you would run:&#x20;

`NDIAnalysis.exe /find`&#x20;

Because it might take a few seconds to locate all sources on a network, you can specify a timeout – i.e., how long Analysis should scan the network. The default timeout is 5 seconds, but you can specify any number you wish. The following example invokes a 10 second time out for locating sources:&#x20;

`NDIAnalysis.exe /find /time:10`&#x20;

{% hint style="success" %}
If you need to quit, press **CTRL+C** to cause Analysis to exit
{% endhint %}

By default Analysis will only only locate sources that are in the Public group. To find sources in other groups, one or more groups can be specified to locate sources in:&#x20;

`NDIAnalysis.exe /find:"Cameras"`&#x20;

`NDIAnalysis.exe /find:"Public,Studio 1"`

**Example output from the finder is outlined below.**&#x20;

<pre data-overflow="wrap"><code>NDI Analysis v6.0.0.0 (<a data-footnote-ref href="#user-content-fn-1">note 1</a>)
Copyright (C) 2023 Vizrt NDI AB. All rights reserved.

NDI version : 6.0.0.0 (<a data-footnote-ref href="#user-content-fn-2">note 2</a>)

Searching for NDI sources ... (4 found) (<a data-footnote-ref href="#user-content-fn-3">note 3</a>)
    1: name="IPC (Channel 1 - Virtual PTZ)" (<a data-footnote-ref href="#user-content-fn-4">note 4</a>)
       host="192.168.1.191" (<a data-footnote-ref href="#user-content-fn-5">note 5</a>
       )
       type="NDI|HX (Camera)" (<a data-footnote-ref href="#user-content-fn-6">note 6</a>)
    2: name="IPC (Channel 1)" host="192.168.1.191" type="NDI|HX (Camera)"
    3: name="QUASIRANDOM (FaceTime HD Camera (Built-in))" (<a data-footnote-ref href="#user-content-fn-7">note 7</a>)
       host="192.168.1.193" (<a data-footnote-ref href="#user-content-fn-8">note 8</a>)
       port="5962" (<a data-footnote-ref href="#user-content-fn-9">note 9</a>)
       type="NDI" (<a data-footnote-ref href="#user-content-fn-10">note 10</a>)
    4: name="QUASIRANDOM (NVIDIA GeForce GT 650M 1)" host="192.168.1.193" port="5961" type="NDI"
</code></pre>

## Getting Source Statistics

Analysis implements a special version of NDI that will receive all data from a source, and provide diagnosis on that data. It is important to know that Analysis does not decode any data. This means that the CPU performance of the host machine on does not significantly impact the results shown. Analysis can thus be considered to correctly measure stream details as they might be received in an ideal receive instance. That is, only up-stream CPU performance, network, network infra-structure and machine network performance have an impact on the results.

To perform an **analysis of a source** you could enter the following:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)"`&#x20;

Don't forget to press **CTRL+C** to exit quickly. Otherwise, to limit the duration of the analysis to just one minute, you could enter the following:

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /time:60`&#x20;

By default, Analysis will request the video stream to be in high bandwidth mode. **High bandwidth mode** is the full resolution and best quality mode for the video stream. If you wish to run analysis in low bandwidth mode, you could enter the following:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /lowQ`&#x20;

The Analysis tool also has a **frame checker** mode, by default this is disabled. This is mostly useful when there is a suspected corruption in the video bitstream. To enable the frame checker mode, you could enter the following:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /framecheck`&#x20;

Normally Analysis will output statistics about both the video and audio data from a source. It can be restricted to **video only** or **audio only**, for example:&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /videoonly`&#x20;

`NDIAnalysis.exe /source:"QUASIRANDOM (NVIDIA GeForce GT 650M 1)" /audiooonly`&#x20;

All of the above modes can be used together. The following is an example run of NDI analysis application with all of the fields described in the notes, along with comments on the meaning and interpretation of the information provided.

<pre data-overflow="wrap"><code>NDI Analysis v6.0.0.0 
Copyright (C) 2023 Vizrt NDI AB. All rights reserved.

NDI version : 6.0.0.0

21:15:19.257: Video receiver creation succeeded. (<a data-footnote-ref href="#user-content-fn-11">note 1</a>)
21:15:19.257: Audio receiver creation succeeded. (<a data-footnote-ref href="#user-content-fn-12">note 2</a>)
21:15:23.287: Audio connection opened. (<a data-footnote-ref href="#user-content-fn-13">note 3</a>)
21:15:23.287: Video connection opened. (<a data-footnote-ref href="#user-content-fn-14">note 4</a>)
21:15:23.295: Capabilities, Recordable=false (<a data-footnote-ref href="#user-content-fn-15">note 5</a>)
21:15:23.295: Capabilities, PTZ control=false 
21:15:23.295: Capabilities, KVM control=false 
21:15:23.295: Product, Long name=Scan Converter v2 (<a data-footnote-ref href="#user-content-fn-16">note 6</a>)
21:15:23.295: Product, Short name=Scan Converter v2 
21:15:23.295: Product, Model=Scan Converter v2 
21:15:23.295: Product, Version=2.0000.0000 
21:15:23.296: Product, Serial number=0000 
21:15:23.472: Audio format changed. 44100Hz, 2 channels. (<a data-footnote-ref href="#user-content-fn-17">note 7</a>)
21:15:24.756: Video format changed. 1920x1200, progressive, aspect ratio=1.60, frame rate=60.00, no alpha channel. (<a data-footnote-ref href="#user-content-fn-18">note 8</a>)
21:15:24.258: Audio data rate (MBps). Avg=1.43 (<a data-footnote-ref href="#user-content-fn-19">note 9</a>)
21:15:24.258: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 
21:15:24.259: Audio recv (mS). Min=29.05 Avg=33.16 +/- 2.96 Max=39.23 
21:15:24.259: Audio send (mS). Min=29.01 Avg=33.13 +/- 4.77 Max=42.53 
21:15:29.259: Video data rate (MBps). Avg=69.39 (<a data-footnote-ref href="#user-content-fn-20">note 10</a>)
21:15:29.259: Video size (kB). Min=289.90 Avg=292.33 +/- 8.09 Max=320.91 (<a data-footnote-ref href="#user-content-fn-21">note 11</a>)
21:47:48.216: Video recv (mS). Min=11.44 Avg=16.66 +/- 2.30 Max=24.73 (<a data-footnote-ref href="#user-content-fn-22">note 12</a>)
21:47:48.217: Video send (mS). Min=8.72 Avg=16.67 +/- 1.47 Max=24.70 (<a data-footnote-ref href="#user-content-fn-23">note 13</a>)
21:15:29.260: Audio data rate (MBps). Avg=1.42 
21:15:29.260: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 (<a data-footnote-ref href="#user-content-fn-24">note 14</a>)
21:15:29.260: Audio recv (mS). Min=30.58 Avg=33.33 +/- 2.80 Max=40.16 (<a data-footnote-ref href="#user-content-fn-25">note 15</a>)
21:15:29.261: Audio send (mS). Min=27.98 Avg=33.32 +/- 4.81 Max=42.53 (<a data-footnote-ref href="#user-content-fn-26">note 16</a>)
21:15:34.262: Video data rate (MBps). Avg=82.48
21:15:34.262: Video size (kB). Min=284.67 Avg=286.25 +/- 7.71 Max=334.25
21:15:34.263: Video recv (mS). Min=14.29 Avg=38.13 +/- 34.44 Max=387.31
21:15:34.264: Video send (mS). Min=6.58 Avg=38.13 +/- 34.81 Max=388.28
21:15:34.264: Audio data rate (MBps). Avg=1.42 
21:15:34.265: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 
21:15:34.265: Audio recv (mS). Min=30.55 Avg=33.37 +/- 2.74 Max=39.66 
21:15:34.266: Audio send (mS). Min=28.02 Avg=33.39 +/- 4.69 Max=42.04 
21:15:39.266: Video data rate (MBps). Avg=124.18 
21:15:39.266: Video size (kB). Min=281.54 Avg=297.39 +/- 8.12 Max=311.32 
21:15:39.266: Video recv (mS). Min=14.06 Avg=31.00 +/- 46.95 Max=315.53 
21:15:39.266: Video send (mS). Min=4.70 Avg=31.00 +/- 47.64 Max=317.90 
21:15:39.267: Audio data rate (MBps). Avg=1.42 
21:15:39.267: Audio size (kB). Min=5.89 Avg=5.89 +/- 0.00 Max=5.89 
21:15:39.267: Audio recv (mS). Min=30.53 Avg=33.32 +/- 2.60 Max=39.65 
21:15:39.268: Audio send (mS). Min=28.49 Avg=33.32 +/- 4.61 Max=42.05 
21:24:44.547: Video receiver destroyed. (<a data-footnote-ref href="#user-content-fn-27">note 17</a>) 
21:24:44.652: Audio receiver destroyed. (<a data-footnote-ref href="#user-content-fn-28">note 18</a>) 
</code></pre>

<details>

<summary>Note 12</summary>

This is one of the most important measures. and represents the frame rate of data actually received from the network. In this example we are watching 60 Hz video; the frame rate indicates an average frame time of 16.66 ms, which is expected. Because this is on a real network with computers that are doing other things, the variance is 2.3 ms, a value which is much smaller than a frame. If the variance number becomes too large there might be dropped frames.&#x20;

All NDI applications should be designed to support frames within the Nyquist sampling limit, which would mean that any frame variance in the range of half the average should be the lowest reliable limit that would not require additional buffering or latency to display smoothly. At 60 Hz, this would require that the maximum reliable zero latency transfer rates would be 16.68 ms +/- 8.34 ms.

\
The minimum and maximum times are important; thus the largest delivery time (which is 24 ms in the example) provides a very important diagnostic tool. If you see values that are over 150 ms or so, it is very likely that network frames were dropped, and you should take steps to ensure that there is no packet loss on the network. It is important to bear in mind that some NDI sources might not send video frames if there is no video change occurring. Indeed, the example listed above is from Scan Converter 2 which does not provide new frames when there is no activity on-screen (thus reducing CPU time, GPU time and bandwidth or network time).&#x20;

For advanced diagnosis of problems, the video receipt time can be combined with the video sending times described in the next note. It is important to observe these two values when looking at large maximum frame receipt times.&#x20;

Some key reference times related to video timing are listed below (in milliseconds):&#x20;

* 60 Hz = 16.66 ms&#x20;
* 59.97 Hz = 16.67 ms&#x20;
* 50 Hz = 20 ms&#x20;
* 30 Hz = 33.33 ms&#x20;
* 29.97 Hz = 33.36 ms&#x20;
* 25 Hz = 40 ms

</details>

## Source Color Information and HDR

In frame checker mode (see above), NDIAnalysis will also output any NDI color information if present. For example:

{% code overflow="wrap" %}

```
12:01:14.674: Color info changed. primaries=bt_709, transfer function=bt_709, matrix coefficients=bt_709
... 
12:01:18.573: Color info changed. primaries=bt_2100, transfer function=bt_2100_hlg, matrix coefficients=bt_2100 
...
12:01:23.165: Color info not found.
```

{% endcode %}

To reduce clutter in the output, color information is only shown when its status changes rather than on every frame.

If the source is HEVC compressed, then frame checker mode can be used to determine if the video uses 8-bit (SDR) or 10-bit (HDR) color values. NDIAnalysis will usually output this when a keyframe in an HEVC stream is received:

`12:16:39.748: HEVC frame with timecode 0 is a keyframe and indicates a bitdepth of 10 bits`&#x20;

but may also output the bitdepth on other frames where an SPS element is found with bitdepth information in it.

## Understanding Performance

Analysis now includes the ability to write out a **CSV file** that includes information about the timing of every video frame captured. This is enabled at the command line with the following example:

`NDIAnalysis.exe /source:"My Source (Channel 1)" /csvvideo:"my source.csv" /time:120`

This will then write out a file called “my source.csv” that will include a *huge list* of every video frame received, the time at which it was received and the details of every frame. An example of this output is illustrated below.&#x20;

**Audio frames** can also be captured, for example:&#x20;

`NDIAnalysis.exe /source:"My Source (Channel 1)" /csvaudio:"my source.csv" /time:120`

**Video and audio frames** can be captured together, as long as separate files are used:

`NDIAnalysis.exe /source:"My Source (Channel 1)" /csvvideo:"my video source.csv" /csvaudio:"my audio source.csv" /time:120`

The created files are text files in comma separated values format. They can be opened in any spreadsheet application, or inspected in a text editor.&#x20;

{% hint style="warning" %}
Beware that timestamp and timecode values may be very large whole numbers, so when opened in a spreadsheet a suitable number format should be chosen for those columns which does not lose precision or truncates the values.
{% endhint %}

<table data-full-width="true"><thead><tr><th width="158">System time (utc)</th><th width="114">Elapsed (ms)</th><th width="88" align="right">dTime (ms)</th><th width="162">Timestamp (100ns)</th><th width="151">dTimestamp (ms)</th><th width="143">Timecode (100ns)</th><th>dTimecode (ms)</th><th width="113">X resolution</th><th width="108">Y resolution</th><th width="109">Aspect ratio</th><th width="120">Frame type</th><th width="101">Codec</th><th width="99">Frame rate</th><th>Frame duration (ms)</th><th>Stream duration (ms)</th><th width="131">Data size (Bytes)</th><th width="227">Notes</th></tr></thead><tbody><tr><td>00:17:54.73<br>8</td><td>0</td><td align="right">0</td><td>17212618746625500</td><td>0</td><td>17212618746966600</td><td>0</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>41.71</td><td>237893</td><td>8 Mode 2</td></tr><tr><td>00:17:54.76<br>8</td><td>30.01</td><td align="right">30.01</td><td>17212618747035200</td><td>40.97</td><td>17212618747383700</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>83.42</td><td>248295</td><td>[dTime &#x3C; Prev frame duration] 8 Mode 2 Frame arrived early compared to intended frame rate.</td></tr><tr><td>00:17:54.80<br>9</td><td>70.98</td><td align="right">40.97</td><td>17212618747455500</td><td>42.03</td><td>17212618747800800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>125.12</td><td>248146</td><td>9 Mode 2</td></tr><tr><td>00:17:54.85<br>2</td><td>113.98</td><td align="right">43</td><td>17212618747875000</td><td>41.95</td><td>17212618748217800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>166.83</td><td>241047</td><td>2 Mode 2</td></tr><tr><td>00:17:54.89<br>4</td><td>155.99</td><td align="right">42.01</td><td>17212618748285100</td><td>41</td><td>17212618748634900</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>208.54</td><td>249379</td><td>4 Mode 2</td></tr><tr><td>00:17:54.93<br>5</td><td>196.92</td><td align="right">40.94</td><td>17212618748704800</td><td>41.97</td><td>17212618749052000</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>250.25</td><td>240985</td><td>5 Mode 2</td></tr><tr><td>00:17:54.97<br>7</td><td>238.92</td><td align="right">41.99</td><td>17212618749124400</td><td>41.97</td><td>17212618749469100</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>291.96</td><td>250443</td><td>7 Mode 2</td></tr><tr><td>00:17:55.01<br>9</td><td>280.91</td><td align="right">41.99</td><td>17212618749534700</td><td>41.03</td><td>17212618749886200</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>333.67</td><td>241389</td><td>9 Mode 2</td></tr><tr><td>00:17:55.06<br>0</td><td>321.88</td><td align="right">40.97</td><td>17212618749954300</td><td>41.96</td><td>17212618750303300</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>375.37</td><td>250595</td><td>0 Mode 2</td></tr><tr><td>00:17:55.10<br>2</td><td>363.91</td><td align="right">42.03</td><td>17212618750374500</td><td>42.02</td><td>17212618750720300</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>417.08</td><td>242025</td><td>2 Mode 2</td></tr><tr><td>00:17:55.14<br>4</td><td>405.88</td><td align="right">41.97</td><td>17212618750794300</td><td>41.98</td><td>17212618751137400</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>458.79</td><td>252542</td><td>4 Mode 2</td></tr><tr><td>00:17:55.18<br>6</td><td>447.87</td><td align="right">41.99</td><td>17212618751204300</td><td>41</td><td>17212618751554500</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>500.5</td><td>253334</td><td>6 Mode 2</td></tr><tr><td>00:17:55.22<br>7</td><td>488.84</td><td align="right">40.97</td><td>17212618751623900</td><td>41.96</td><td>17212618751971600</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>542.21</td><td>242861</td><td>7 Mode 2</td></tr><tr><td>00:17:55.26<br>9</td><td>530.81</td><td align="right">41.97</td><td>17212618752043800</td><td>41.99</td><td>17212618752388700</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>583.92</td><td>255295</td><td>9 Mode 2</td></tr><tr><td>00:17:55.31<br>1</td><td>572.8</td><td align="right">42</td><td>17212618752453700</td><td>40.99</td><td>17212618752805800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>625.62</td><td>243193</td><td>1 Mode 2</td></tr><tr><td>00:17:55.35<br>4</td><td>615.81</td><td align="right">43.01</td><td>17212618752873700</td><td>42</td><td>17212618753222800</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>667.33</td><td>254911</td><td>4 Mode 2</td></tr><tr><td>00:17:55.39<br>3</td><td>654.96</td><td align="right">39.15</td><td>17212618753293300</td><td>41.96</td><td>17212618753639900</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>709.04</td><td>244730</td><td>3 Mode 2</td></tr><tr><td>00:17:55.43<br>6</td><td>697.69</td><td align="right">42.72</td><td>17212618753714100</td><td>42.08</td><td>17212618754057000</td><td>41.71</td><td>1920</td><td>1040</td><td>1.85</td><td>progressive</td><td>SpeedHQ</td><td>23.98</td><td>41.71</td><td>750.75</td><td>253564</td><td>6 Mode 2</td></tr></tbody></table>

## Video CSV File&#x20;

The reason that this is very valuable is that if you wish to determine why you are seeing problems sending video over the network then you can dump the CSV data at two different locations on the network, for instance you can capture it on the sending machine and also on the receiving machine. You can now look at the “timestamp” data on each frame and locate frames that exactly match between different locations and verify whether any frames are dropped (the timestamp is present on the sender side but not on the receiver side) or if the frames are delivered late (measuring the dTime). Note that there is always some variability on most typical networks and so some level of jitter is to be expected but if there are large timing hits then there clearly is something on the network that is stopping the smooth flow of packets (e.g. congestion control on a router).&#x20;

**System time (utc)**: The local time in UTC at which the frame was received by NDI Analysis.&#x20;

**Elapsed time (ms)**: The number of milliseconds of system time elapsed in the current session. Notionally this is the time point at the start of this frame.&#x20;

**dTime (ms)**: The time difference in milliseconds between the receiving time of this frame and the previous frame. Ideally this should be equal to the frame rate, but usually varies depending on network conditions and fluctuations in frame generation.&#x20;

**Timestamp (100ns)**: The timestamp of the frame, as specified in the frame's header. This is typically set when the frame is submitted to NDI by the system creating the stream. It is in units of 100 nanoseconds. It is usually related to the originating system's clock, but the exact relationship (particularly when the zero time was) is undefined.&#x20;

**dTimestamp (ms)**: The difference in milliseconds between the timestamp of this frame and the previous frame. Typically this represents the rate at which the source is submitting the frames to NDI.&#x20;

**Timecode (100ns)**: The timecode of the frame, as specified in the frame's header, in units of 100 nanoseconds. Usually this is an ideal time mark for the frame, set by the source generating the frames.&#x20;

**dTimecode (ms)**: The difference in milliseconds between the timecodes of this frame and the previous frame. Usually this is equal to the duration of the frames as indicated by the frame rate.&#x20;

**X resolution, Y resolution**: The image resolution of the frame, in pixels.&#x20;

**Aspect ratio**: The aspect ratio of the frame, as specified in the frame's header.&#x20;

**Frame type**: Indicates if the frame is progressive, fielded, or interleaved.&#x20;

**Codec**: The codec used for the frame, plus if the frame includes an alpha channel or not.&#x20;

**Frame rate**: The frame rate of the frame, as specified in the frame's header.&#x20;

**Frame duration (ms)**: The frame duration in milliseconds. This is derived from the frame rate in the frame's header.&#x20;

**Stream duration (ms)**: The sum of the frame durations of all the frames received so far (including this one). As this uses the frame rate specified in the frame header, it is an ideal value. It should remain close to the elapsed time with some fixed offset.

**Data size (Bytes)**: The number of bytes of image data in the frame. If the frame is compressed then this is the size of the compressed data.&#x20;

**Notes**: NDI Analysis will report any potential issues here, such as a frame arriving significantly later than expected or the stream not providing sufficient frames to keep up with the intended frame rate. These can be starting points for further investigation.

## Audio CSV File

The audio CSV file is similar to the video CSV file and shares many of the same columns. Instead of the video frame specific columns it has these audio frame columns:&#x20;

**Sample rate**: The sample rate of the frame, as specified in the frame's header.&#x20;

**Num channels**: The number of channels in the audio frame, as specified in the frame's header.&#x20;

**Num Samples**: The number of samples in the audio frame.

[^1]: This indicates NDIAnalysis.exe’s version number. Newer versions will be required periodically as subsequent versions of NDI include new capabilities that qualify for analysis. NDI is, however, backwards and forwards compatible. So any version of Analysis will work with any version of NDI, whether a past or future release.&#x20;

[^2]: This indicates the exact version of NDI that this analysis tool was compiled against.&#x20;

[^3]: While searching for sources on the network, this line indicates how many seconds are left in the search and how many sources have already been detected.

[^4]: Sources are listed alphabetically with a number at the beginning of the line. The first entry for each source is its name. Entries are normally formatted as a machine name and a channel name set off by parentheses. (*In the example above, the machine name is “IPC” and the channel name is “Channel 1 – Virtual PTZ”*.)

[^5]: The remote IP address will be listed for all sources. It's possible for a source to exist on more than one network card, resulting in it technically having multiple IP addresses. In those cases, Analysis lists just one address – the one visible to the local host. This does not preclude NDI from using all source and destination NICs for transfer. NDI negotiates all connected IP addresses for any device (*both remotely on the sending machine and locally on receiving machines*), and spreads traffic across all available paths between them. Interestingly, when a source is actually on the local IP address, NDI does not use external network IPs at all. Rather, a direct loop-back connection is used for improved performance.&#x20;

[^6]: The source type is listed for all sources. There are currently two major types: the first being ‘true’ NDI sources, which are listed simply as “NDI” and “NDI|HX” sources. These use higher efficiency NDI modes and are commonly used on embedded devices. (*In this example, the device is an “NDI|HX” source.*)

[^7]: Another source, from a computer named “QUASIRANDOM” and having a channel name “FaceTime HD Camera (Built-in)”, is also listed. This example entry is from a version of NDI Scan Converter that is providing a web-cam source.&#x20;

[^8]: This is the IP address of the machine on which the (NDI Scan Converter) source is present.

[^9]: For NDI sources where it is applicable, the remote port address of the connection is displayed (*certain connection types do not provide this information, since they do not define listening port numbers*). Source types of “NDI” will almost always list the port number on which the connection is made. It is not uncommon, however, for the initial connection to be made on the port number specified while the actual data is transferred on one or more different ports. This is very common for connections using either unicast or multicast UDP modes.&#x20;

[^10]: This particular source is a full NDI source.&#x20;

[^11]: This entry indicates that the receiver for the video stream has been opened and is awaiting a connection. As will be apparent in all of the log items, the time when this event occurred is indicated at the beginning of the line. Time is formatted as hours, minutes, seconds and milliseconds. If the system clock is accurately synchronized to an external clock these values can be correlated with centrally clocked events that are known.&#x20;

[^12]: This indicates that the receiver for the audio stream has been opened and is awaiting a connection.

[^13]: This entry indicates that the audio connection has been opened and is ready to receive audio data. An open connection might not immediately receive data if extra data processing (e.g. adapting to network jitter) is required but the link has been communicated. If this is an UDP unicast or UDP multicast network this would indicate that the connection is fully configured, IP addresses and ports are known, and that all network paths from the sender to the receiver are likewise now known.&#x20;

[^14]: This entry indicates that the video connection has been opened and is ready to receive audio data. As in note 3, this indicates that all network settings are now known. However, it might still take a second or two before decoding of video data is actually ready to begin.&#x20;

[^15]: Once a connection is established, the capabilities of that connection are shared between senders and receivers. In this example the source supports record operations but neither PTZ control nor KVM control is available. A number of additional properties that can be reported and the set of capabilities can be extended in the future. Specifically, you can determine almost all the capabilities of a PTZ camera and whether these are provided virtually (e.g. virtual pan and scan) or in true physical form (e.g. servos controlling a position). Camera capabilities such as exposure control, iris control, etc., are also reported.&#x20;

[^16]: The product description is often supplied if it is provided by the sender. This may include the product name, who it is made by, unit serial number, and more. These entries are useful to get settings for the current session and how the product is being used.&#x20;

[^17]: This entry logs when the first audio packet is received, or each time the audio output format changes. The full audio format is provided, including the number of audio channels and the sample rate.&#x20;

[^18]: This entry logs when the first video packet is received, or each time that the video output format changes. This provides real-time feedback on the current format and video frames, and information about the resolution (xres, yres), fielding mode (interlaced or progressive), frame rate, and whether or not there is an alpha channel. The picture aspect ratio is provided as a single floating-point number comprising the frame width divided by height (e.g., a 16:9 image would return 1.78, while 4:3 would return 1.33).&#x20;

[^19]: The current audio data rate is provided in megabits per second. This value represents the current size of the audio stream in bits per second and reflects the current compression level for that stream. NDI uses a very high quality bitrate stream (often several megabits per second), while NDI|HX audio often involves heavier compression, at the expense of slightly higher CPU overhead (for instance, AAC audio). The bitrate reflects the measured bitrate (as opposed to a calculated bitrate). This means, for example, that if audio is interrupted for some reason (e.g. some packets are ‘silent’) this is reflected in the value shown.&#x20;

[^20]: The video data rate is likewise provided in megabits per second. This size represents the current size of the video stream in bits per second and is measured for the true data stream. The value will depend on the video format and frame rate used and will also vary slightly depending on video content. This is mainly in order to preserve best quality while avoiding unnecessary compression level changes unless warranted for multiple frames. The data rate is a measured value, so if frames are not sent repeatedly the value is correspondingly reduced. For instance, lower values would occur if a source does not provide all video frames – as sometimes can happen when successive frames are identical.&#x20;

[^21]: This represents the size of the frames that have been received in kilobytes, collected for a time period. In this example, the minimum frame size was 289.90 KB and the maximum was 320.91 KB. The average frame size in the period measured was 292.33 KB and the standard deviation was 8.09 KB. The standard deviation can be viewed as an indication of how stable the frame size was. A small value indicates that the size of the frames is very stable, while a large value indicates that frame sizes varied greatly. For relatively constant video, as presented in this example, the variance is very small – meaning that 68% of frames (one standard deviation) would be in the range 284.24 and 300.42 KB.

[^22]: See [**Note 12** ](#note-12)below

[^23]: This line describes time measured as time-stamps provided on the NDI sending operation. This provides a reasonable diagnosis of performance on the sender side before it arrives on the network. If the frame variance is high it is likely that the sender failed to process accurate frame rates onto the network. Since this value measures the rate at which frames are provided to the network high maximum times would be a clear indication of a sender side problem – even if the received video frames times indicate frame drops at the receiver. In contrast, reliable sending times but unreliable receipt times denote a problem that is most likely with the network infrastructure.

[^24]: This represents the average size in kilobytes of the audio frames received and is very similar to the corresponding video frames. Bear in mind is that the number of bytes taken by each audio packet will depend on the number of audio samples in each audio packet. For instance, sending 800 sample packets will on average result in audio packets that are half the size of sending 1600 sample packets.

[^25]: This value is similar to the way that the corresponding video value works. Bear in mind that for audio this is indicative of the number of audio samples in each packet.

[^26]: This value is also like the way that the corresponding video value works. Bear in mind that for audio this is indicative of the number of audio samples in each packet.

[^27]: This message is displayed when the video connection is closed.

[^28]: This message is displayed when the audio connection is closed.


# Discovery Service

## **Overview**

In modern networked media environments, efficient discovery and management of NDI® audio and video sources are essential for scalable, low-latency workflows.

The **NDI Discovery Service** is an OS-managed background process that runs the NDI Discovery Server the centralized registry for NDI sources and receivers and exposes its proprietary API for client access.

It provides a more predictable and scalable method for registering and locating NDI sources and receivers. It is especially valuable in networks where multicast traffic is restricted or discouraged, such as cloud-hosted or enterprise environments.

### **Why Use Discovery Service?**

Traditional NDI discovery uses mDNS, which works well on smaller networks but can cause congestion or fail in multicast-restricted environments. The Discovery Service introduces a centralized registry model that:

* Reduces unnecessary network chatter.
* Enables reliable operation across subnets and firewalled segments.
* Offers real-time updates and visibility into connected NDI sources and receivers.
* Supports enhanced monitoring and control features introduced in **NDI 6.2**.

### **Flexible Deployment**

Discovery Service is flexible. You can run it as a background **service** on Windows or Linux or run the Discovery Server as a standalone command-line **application.** All with minimal resource usage.&#x20;

Additionally, it can be run on a **local machine** or hosted remotely to serve multiple clients.

It supports both **32-bit and 64-bit** environments (64-bit recommended). Installation packages are available from [ndi.video](https://www.ndi.video/).

### **Client Configuration**

NDI clients, including senders, finders, and receivers, can be configured to use the Discovery Service in place of or alongside mDNS. This ensures broader compatibility across different segments of the network. It also means users will have greater control over which sources are visible to specific devices. As part of the 6.2 update, seamless integration using Access Manager or the new **NDI Discovery Tool**, are both included in the NDI Tools suite.

### **Developer Integration**

The NDI SDK includes new APIs that allow developers to query available NDI sources via the Discovery Service and subscribe to real-time updates. You can now also monitor and control receiver connections.

These capabilities unlock tighter integrations with third-party applications and more sophisticated media control workflows. For implementation details, see the SDK documentation under **NDI-Recv Discovery, Monitor, and Control**.

Click here to view the full [Discovery Service](/all/developing-with-ndi/sdk/command-line-tools#discovery-service) documentation in our SDK which includes instructions, configuration options, and command-line usage on both Windows and Linux.

## Discovery Server vs Discovery Service

The **NDI Discovery Service** is designed to allow you to replace the automatic discovery NDI uses [(mDNS) ](/all/getting-started/white-paper/discovery-and-registration/mdns)with a server that operates as a centralized registry of NDI sources.  The **NDI Discovery Server** is a command-line application available for Windows, macOS, and Linux which provides the NDI Discovery Service.  Multiple instances of the NDI Discovery Server can be used to provide redundancy.

This can be very helpful for installations where you wish to avoid having significant mDNS traffic for a large number of sources. It can also be useful when multicast is not possible or desirable. It is very common for cloud computing services not to allow multicast traffic. When using the Discovery Service NDI can operate entirely in unicast mode and thus in almost any installation. The Discovery Service supports all NDI functionality, including NDI groups. Clients should be configured to connect with the Discovery Server(s) instead of using mDNS to locate sources.

When the Discovery Service is available, NDI applications will use both mDNS and the Discovery Server(s) to find and receive sources on the local network that are not on machines configured to use discovery.

<br>


# Apps

NDI Apps bring the power of NDI technology directly to your everyday devices. From mobile phones and tablets to desktop computers, these applications make it possible to capture, send, and receive high-quality video and audio across standard networks without the need for specialized hardware.

Whether you’re streaming a live event, collaborating remotely, or extending the reach of your production setup, NDI Apps are designed to make professional-grade connectivity accessible anywhere. By turning consumer devices into fully functional NDI sources and receivers, these apps help bridge the gap between professional broadcast environments and everyday creative workflows.

[**Camera**](https://apps.apple.com/us/app/ndi-camera-easy-streaming/id1477266080)

**Capture** (coming soon)

### NDI HX Camera Release Notes 3.1&#xD;

#### Fixes&#xD;

* iPhone 17 startup crash
* Low quality NDI stream not restarting after format change
* iOS26 Liquid Glass UI fixes and updates
* Locked white balance controls on lenses that do not support it
* Various efficiency improvements

#### Features&#xD;

* Added PAL and Cinema frame rate support (24, 25, 48, and 50)
* Added video rotation override


# OBS & 3rd Party Software


# Getting Started with NDI in OBS for Windows or Mac

This guide explains how to use the DistroAV plugin to send and receive NDI sources in OBS Studio on Windows or macOS. DistroAV was formerly known as OBS-NDI. It is a third-party OBS plugin, so version requirements may change separately from NDI Tools.

1. Install OBS Studio version (**currently 31.1.1**) on all relevant machines from [https://obsproject.com](https://obsproject.com/).&#x20;
2. Install DistroAV (OBS plugin for NDI)
   1. Download the current DistroAV NDI plugin for OBS from the official DistroAV  release page [**here**](https://distroav.org/download)**.**&#x20;
   2. Before installing DistroAV, remove older OBS-NDI installations to prevent plugin conflicts.
   3. Install DistroAV **after** OBS Studio is installed or updated&#x20;
   4. Restart OBS Studio after installation.&#x20;
      1. *If the DistroAV menu or NDI Source option does not appear, restart the computer and confirm that OBS, DistroAV, and NDI Runtime versions match the current DistroAV requirements.*&#x20;
3. Download and install the latest NDI Runtime version later [**here**](https://github.com/DistroAV/DistroAV/releases/latest)**:**&#x20;
4. Enable NDI Output in OBS (on the source computer)&#x20;
   1. Open OBS Studio&#x20;
   2. Navigate to Tools > DistroAV NDI® Settings&#x20;
   3. Check Main Output and/or Preview Output&#x20;
   4. (Optional) Give the output a name (e.g., "OBS-StreamPC")&#x20;

### &#x20;Add an NDI source in OBS

1. On the receiving computer, open OBS Studio.
2. In the Sources panel, select +.
3. Select NDI Source.
4. Create a new source or choose an existing one.
5. In the Source name menu, select the NDI source you want to receive.
   1. *If the source does not appear, first confirm that the same source is visible in NDI Studio Monitor on Windows or NDI Video Monitor on macOS. If it is not visible there, troubleshoot NDI discovery or network configuration before troubleshooting OBS.Add an NDI source in OBS*

{% hint style="info" %}
If you'd like to help us improve our OBS docs please take this surveyIf you'd like to help us improve our OBS docs please take [**this survey**](/all/faq/troubleshooting-guides/obs-troubleshooting-survey)
{% endhint %}


# Using OBS Studio as a Commentary System

A Dr. NDI Tutorial

Recently, I was involved in a live sports video production where I needed to set up a commentary station. It was nothing unusual, as I have used many Dante commentary stations in my NDI productions. However, this time, I wanted to find a solution where a single device could offer the audio functionality of a commentary station and receive video feedback from the production, thus avoiding connecting two devices with two network cables.

I created this project using a small Windows computer and OBS Studio. In this tutorial, I will explain how to create your own NDI commentary station with these simple tools.

### What you need to complete this project:

#### Hardware

* A Windows computer. I used the **LattePanda 3 Delta**.
  * <https://www.lattepanda.com/lattepanda-3-delta>. This computer is compact, powerful, and very affordable.
* An audio interface with **Side Tone** functionality.&#x20;
  * This feature is essential in a commentary station, as it allows the commentator to hear themselves without delay, helping them avoid straining their voice in a noisy environment. I used the **Focusrite Vocaster Two** audio interface.
  * <https://focusrite.com/products/vocaster-two>
* A control surface to manage the commentary station functions. The **Elgato Stream Deck** is a great choice.
  * <https://www.elgato.com/it/en/p/stream-deck-plus-black>

#### Software:&#x20;

OBS Studio and the following plugins:

* Distro AV for NDI support
* OBS Mute Filter
* OBS-Asio

### Typical functions of a commentary station include:

* Transmitting the commentator's microphone signal to the production
* Sending and receiving talkback audio for coordination between the commentator and production
* Receiving and displaying the program video feed from the production with specific audio (usually international audio or an N-1 mix)

### Step-by-step guide to setting up your commentary station:

#### Step 1

Install the drivers for your audio interface on your Windows computer. ASIO driver support is preferable.

#### Step 2

Install NDI Tools.

#### Step 3

Download and install OBS Studio from this link: <https://obsproject.com/>

After the installation, OBS will prompt you with some options

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/5XzteoV1DtXN5Bj5kTPc/image.png" alt=""><figcaption></figcaption></figure>

No specific selections are necessary as we will not be streaming or recording. You can click **Cancel** and proceed.

#### Step 4

Set the video format in OBS to match the video production format, which in my case is **1080 P50**.&#x20;

Go to **Settings** and then **Video**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/gWsBnwCKD3RA56xDcKVj/image.png" alt=""><figcaption></figcaption></figure>

#### Step 5&#x20;

Download and install the necessary plugins:

* Distro AV to add NDI support to OBS Studio - <https://github.com/DistroAV/DistroAV/releases/download/6.0.0/distroav-6.0.0-windows-x64-Installer.exe>
* ASIO drivers support for OBS - <https://github.com/Andersama/obs-asio/releases/download/v3.2.1f/obs-asio-3.2.1-windows-x64-Installer.exe>
* OBS Mute Filter - <https://github.com/norihiro/obs-mute-filter/releases/download/0.3.0/obs-mute-filter-0.3.0-obs27-Windows.zip>

{% hint style="warning" %}
This plugin doesn’t have an installer, so you’ll need to install it manually in OBS Studio by following the developer’s instructions. - <https://github.com/norihiro/obs-color-monitor/wiki/Install-Windows>
{% endhint %}

#### Step 6&#x20;

Now that OBS Studio and the plugins are installed, configure the commentary station:

* Create the audio channel for live commentary:&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/H9UOgImG0UDUW2bQngtS/image.png" alt=""><figcaption></figcaption></figure>

* Select **Asio Input Capture** as the source and rename it to **MIC-LIVE**. Configure this source by selecting the **Focusrite USB Audio** in **MONO** mode with the **Host Microphone** as OBS **Channel 1**. Then, close the source panel.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/thRE4VoFReTiK6ql1rbB/image.png" alt=""><figcaption></figcaption></figure>

* Set up the talkback channel:&#x20;
  * Select **Asio Input Capture** again and rename it to **MIC-TALKBACK**. Configure this input the same way as **MIC-LIVE**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/1ugrVBReEAVn1pzw0V0C/image.png" alt=""><figcaption></figcaption></figure>

* Add the intercom (talkback) audio channel from the production:&#x20;
  * Select **NDI® Source** as the source and rename it **INTERCOM**. In the configuration panel, select the NDI source the director or production team will use to communicate with the commentator. In my case, this source is generated by a computer named **PRODUCTION-PC**, and the NDI stream is called **TALKBACK\_TO\_COMM**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/LU2KXvw8pGU4WnoBctq3/image.png" alt=""><figcaption></figcaption></figure>

* Add the NDI feed the commentator will view, called **PGM\_MIX\_MINUS**, also generated by **PRODUCTION-PC**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/8zvMUjPZLboYHK0A8tmJ/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/zBGlRayhKvC5WjQtrurU/image.png" alt=""><figcaption></figcaption></figure>

#### Step 7

Organize the audio workflow:

* Select the **MIC-LIVE** source and click on **Filters**.&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/N7vxjg9xrj6AxYzghALD/image.png" alt=""><figcaption></figcaption></figure>

Add the following filters:

* Discard Audio by UI&#x20;
* Dedicated NDI® output (Audio Only)

&#x20;Configure the NDI stream as **MIC-LIVE**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/zzuvzhpsBtMR5wFo7dcy/image.png" alt=""><figcaption></figcaption></figure>

* Repeat for **MIC-TALKBACK**, naming this stream **MIC-TALKBACK**.
* The **Discard Audio by UI** plugin lets users control the audio channel to broadcast commentary or talk with production. It ensures that muting the audio channel in the mixer also mutes the NDI output.

#### Step 8

Route the **PGM** and **INTERCOM NDI** sources to the commentator’s headphones:

* Ensure the Windows audio interface is the same as used in OBS.
* In OBS Audio Mixer, under **Advanced Audio Properties**, enable monitoring for the **PGM** and **INTERCOM** channels.&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/99JuFl51m15n7geyEllE/image.png" alt=""><figcaption></figcaption></figure>

#### Step 9&#x20;

Customize the OBS Studio interface:

* In the **Docks** menu, disable **Scenes**, **Sources**, **Scene Transitions**, and **Controls**.
* Hide the **Desktop Audio** source in the audio mixer as it’s not needed.&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/6ACZl5Dba45XTIdPHtRH/image.png" alt=""><figcaption></figcaption></figure>

Then, move the audio mixer to one side of the interface. Changing the layout direction gives more space to the preview window showing the **PGM** return feed.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/SpIxnZTXLxDoFlXBGmyD/image.png" alt=""><figcaption></figcaption></figure>

**Step 10**

Set up and configure the **Stream Deck** and **OBS Studio plugin** to manage the **LIVE**, **TALKBACK** channels, and **PGM** and **INTERCOM** levels.&#x20;

* Create a **TALKBACK** button that mutes **MIC-LIVE** and enables **MIC-TALKBACK**, using the **Multi Action Switch** function.&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/8FoouiJGGBBhJe1LEVyp/image.png" alt=""><figcaption></figcaption></figure>

First action disables **MIC-LIVE** and enables **MIC-TALKBACK**, and the second reverses the process.&#x20;

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/3Cb7ODT1jat776UM94Of/image.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/7BXVc3V0jUH2lu5iozlb/image.png" alt=""><figcaption></figcaption></figure>

* Add a **Push to Mute** button for the **MIC-LIVE** channel for a **cough button**.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/K51AKCHFcPC6UutG544a/image.png" alt=""><figcaption></figcaption></figure>

* Add a toggle mute button for **MIC-LIVE**.

<figure><img src="https://3444609009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDO9LSaUxLOBIgPjyrjR1%2Fuploads%2F0982mqUpItjTSr7WkXDe%2Fimage.png?alt=media&amp;token=6c970721-482c-4638-848a-041cb44ad0bb" alt=""><figcaption></figcaption></figure>

* Use two rotary controls to adjust the **PGM** and **INTERCOM** channel volumes.

<figure><img src="https://content.gitbook.com/content/DO9LSaUxLOBIgPjyrjR1/blobs/1jRRHy7Sp132LhdW0YmY/image.png" alt=""><figcaption></figcaption></figure>

And that’s it! You now have a fully functional commentary station with NDI.


# Use OBS video + audio in Zoom with macOS

This guide explains how to send OBS video and audio to Zoom, Google Meet, Microsoft Teams, or another conferencing app on macOS using DistroAV and NDI Virtual Input. You can use this when Scan Converter alone does not capture the audio source you need.

MacOS System Audio not Captured via NDI Scan Converter

* Install or update:
  1. OBS Studio 31 or newer
  2. DistroAV NDI plug‑in for OBS
  3. NDI Tools 6.1.1 for Mac

{% hint style="info" %}
*Be sure to check “Virtual Input” during setup and allow its Camera and Microphone extensions when macOS asks.*
{% endhint %}

* In OBS open Tools then DistroAV NDI Output Settings, enable Main Output, give it a name, and click OK. Use *Main Output* when you want to send the OBS program output to NDI. Only enable *Preview Output* if you also need the OBS preview to appear as a separate NDI source.
* Launch [**NDI Virtual Input** ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/virtual-input)from the NDI folder or NDI Launcher. From the macOS menu-bar icon, select the NDI source created by OBS. If you are launching Virtual Input for the first time, approve the required macOS camera extension when prompted, then restart NDI Virtual Input.
* Open Zoom, Google Meet, Microsoft Teams, or another conferencing app.
  1. Select the NDI virtual camera as the app’s camera/video source.
  2. Select the NDI audio input as the app’s microphone/audio source, if it appears as a separate audio device.

{% hint style="info" %}
*If the audio device does not appear, first confirm that macOS and the conferencing app have microphone permission, then restart the app. If the device is still missing, reinstall the current NDI Tools package and restart the computer.*
{% endhint %}

On macOS, [**Scan Converter** ](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter)audio depends on macOS audio input/routing behavior. If Scan Converter does not capture the audio source you need, such as system playback audio from OBS or another app, use OBS with DistroAV and NDI Virtual Input, or use a loopback/virtual audio routing tool as appropriate.

If you are trying to capture system playback audio directly, you may need a loopback tool that routes system output to an input that macOS and NDI can use. For system-audio routing, users commonly use loopback or virtual audio routing software, such as BlackHole or Loopback.

Before opening Zoom or another conferencing app, confirm that the OBS output appears as an NDI source in NDI Video Monitor on the same Mac. If the source does not appear in Video Monitor, troubleshoot OBS, DistroAV, NDI Runtime, or NDI discovery before troubleshooting Zoom.

After installation follow the tool’s instructions to route system output to a virtual input. Launch [**NDI Scan Converter**](/all/using-ndi/ndi-tools/ndi-tools-for-mac/scan-converter) and ensure audio is not muted in the Scan Converter menu.


# Using NDI Tools as a virtual camera in Mac

Apple has turned off a feature called "legacy camera support" however it can be re-enabled in Recovery Mode by following these steps from Apple:\
\
<https://support.apple.com/en-us/HT213969>

When you restore these legacy settings, the camera privacy indicator won't display in the menu bar while a camera with older software is in use.

1. Restart your Mac into Recovery Mode:
   * [Use macOS Recovery on a Mac with Apple silicon](https://support.apple.com/guide/mac-help/mchl82829c17/mac)
   * [Use macOS Recovery on an Intel-based Mac](https://support.apple.com/guide/mac-help/use-macos-recovery-on-an-intel-based-mac-mchl338cf9a8/mac)
2. Click the Options button, then click Continue.
3. From the Utilities menu, choose Terminal.
4. Enter this command:\
   `system-override legacy-camera-plugins-without-sw-camera-indication=on`
5. Press Return. Depending on your system configuration, you might be prompted to complete additional steps.
6. Quit Terminal.
7. From the Apple menu, choose Restart.

To change back to the default settings, follow the steps again and enter this command:

\
`system-override legacy-camera-plugins-without-sw-camera-indication=off`

{% hint style="info" %}
This work around has been testesd for NDI Tools 6.2 and the latest editions of Mac. We recommend you update to the latest versions of both NDI Tools and macOS for best results.
{% endhint %}


# Using NDI and Dante on the same Network

## Introduction&#x20;

Running Dante and NDI in different networks or VLANs is always the recommended choice but this sometimes requires complex network infrastructure that is not always feasible.

As IP-based audio and video solutions become standard in live production and broadcast environments, a common question arises:&#x20;

*Can NDI and Dante coexist on the same network?*&#x20;

The answer is **yes**, but only under the right conditions.&#x20;

## Understanding the Protocols: NDI vs Dante&#x20;

### NDI (Network Device Interface)&#x20;

NDI is a video-over-IP protocol optimized for ease of use and versatility. Its key characteristics include:&#x20;

* Uses various transport methods: TCP, UDP, Multi-TCP, and R-UDP.&#x20;
* No centralized synchronization mechanism.&#x20;
* Audio and video are embedded together and rely on best-effort delivery.&#x20;
* Can be bandwidth-intensive, especially full-bandwidth NDI (100–300 Mbps per stream).&#x20;

### Dante Audio&#x20;

Dante, developed by Audinate, is designed for professional, low-latency audio transport over IP. Its key characteristics include:&#x20;

* Ultra-low latency (typically <1 ms)&#x20;
* Uses PTP (Precision Time Protocol, IEEE 1588) for tight synchronization between all devices&#x20;
* Each audio stream is typically mono, point-to-point&#x20;
* Highly sensitive to jitter and network congestion&#x20;

### NDI and Dante on a 1G Network: Real-World Observations&#x20;

**Scenario 1**: A Single Computer Running NDI and Dante&#x20;

A single computer (e.g., running vMix or TriCaster) receives NDI streams and handles Dante audio via the same 1G NIC. As long as it only receives NDI streams, Dante works fine. Once the computer **transmits** NDI streams, Dante experiences:&#x20;

* Increased latency&#x20;
* Audio glitches&#x20;
* Eventually, Dante devices may mute audio completely due to PTP sync loss&#x20;

#### Why does this happen?&#x20;

NDI video streams can flood the NIC and switch buffers. Since Dante relies on highly predictable packet timing and synchronized clocks (via PTP), any jitter or delay in network delivery, especially in PTP packets, can cause the system to desynchronize, leading to audio dropouts.&#x20;

**Scenario 2**: 10G Backbone with 1G Endpoint&#x20;

The main NDI+Dante computer is connected via 10G to a core switch. A second switch, connected via 1G uplink, serves a Dante commentary station. Everything runs smoothly until an NDI decoder is added to the second switch and starts receiving a video stream from the main computer. Suddenly, the Dante commentary position experiences PTP errors and intermittent audio mute. Replacing the second switch with a 10G model and using a 10G uplink immediately resolves the issue.&#x20;

#### Why does this happen?&#x20;

Traffic from an NDI receiver saturates the uplink. Simply having an NDI transmitter alone doesn't cause this traffic surge. NDI streams are unicast and only begin flowing when a receiver connects. When the receiver is on the 1G switch and pulls full-bandwidth NDI from the 10G host, the 1G uplink becomes a bottleneck. This bottleneck causes latency and jitter, especially affecting:&#x20;

* PTP clock sync packets&#x20;
* Time-sensitive Dante audio packets&#x20;

Consequently, sync is lost and Dante audio mutes. By contrast, if the NDI transmitter is on the 1G switch without an active receiver, the traffic isn't triggered, and Dante remains unaffected.&#x20;

## NDI Transport Protocols and Network Behavior&#x20;

NDI supports multiple transport types, but not all are equally suitable in mixed environments.

| Protocol  | Suitable with Dante? | Notes                                                                                                 |
| --------- | -------------------- | ----------------------------------------------------------------------------------------------------- |
| TCP       | With care            | Requires proper flow control; can introduce delay under congestion                                    |
| UDP       | Better               | Predictable; ideal for real-time flows                                                                |
| R-UDP     | Recommended          | Reliable UDP; good compromise between speed and reliability                                           |
| Multi-TCP | Avoid                | <p>Creates multiple TCP streams with independent buffers; bad for real-time sync like Dante <br> </p> |

&#x20;\
*Flow Control must be enabled on all switches for stable coexistence.*&#x20;

#### Best Practices for NDI + Dante on the Same Network&#x20;

To make it work reliably: \
&#x20;\
1\. **Use a 10G network backbone** for any shared segments carrying both Dante and NDI. \
2\. **Avoid Multi-TCP mode** in NDI, especially in mixed Dante environments. \
3\. **Enable flow control** on all switch ports. \
4\. **Use managed switches** that support IEEE 802.1p traffic prioritization (to prioritize PTP and Dante audio) \
5\. **Monitor the Dante Clock** status and latency metrics on all endpoints. \
6\. **Avoid 1G uplinks** where video and audio traffic are mixed.&#x20;

#### Conclusion&#x20;

NDI and Dante can coexist on the same network, but only if the network is properly designed to handle their demands. Dante's strict timing requirements make it particularly vulnerable to congestion and jitter, while NDI’s high-bandwidth nature can easily monopolize links if not carefully managed.&#x20;

Proper switch configuration, bandwidth planning, and protocol awareness are essential to ensure stable, high-performance operation in mixed NDI + Dante environments.&#x20;

&#x20;




---

[Next Page](https://docs.ndi.video/all/llms-full.txt/1)

