NDI网络设备接口技术简介(2021版)
作者:互联网
NDI(Network Device Interface)即网络设备接口,是由美国NewTek公司开发的版权免费的标准,可使兼容的视频产品以高质量、低延迟、精确到帧的方式通讯、传输和接收广播级质量的视频,非常适合在现场直播制作环境中进行切换。
内容:1、技术原理;2、与其他协议比较;3、发展历史;4、无线WiFi和广域网应用;5、基于云端的使用;6、CPU架构支持情况;7、NDI 规范的元数据和扩展;
1、技术原理
NDI设计为在千兆以太网上运行,NDI编解码器将以通常约为100Mbit/s 的可变比特率传输1080i格式的高清视频。
默认情况下,NDI 使用 mDNS(Bonjour / Zeroconf)发现机制在局域网上登记源信息,这样NDI接收设备可以自动发现并提供其自身信息反馈给这些源。另外其他两种发现模式,NDI 访问和NDI 发现服务器,允许跨子网操作,而无需 mDNS。在创建NDI源时,会在NDI发送主机上的一系列端口中选择任意一个TCP端口来进行创建。当源被请求时,会在一个适当的端口上建立一个NDI接收器到NDI发送器的TCP连接。NDI 3.x版本采用带有FEC(前向纠错)功能的UDP组播或单播来代替TCP,并且可以在不使用链路聚合的情况下跨多个网络接口对流进行负载均衡。NDI 4.0 引入了multi- TCP 连接。
NDI 携带视频、多通道未压缩音频和元数据。 元数据信息可以双向发送,允许发送方和接收方通过NDI连接以任意XML 格式的元数据相互发送消息。这种定向元数据系统提供了如返送给NDI源TALLY信息等功能,使NDI源了解到它在直播中是否处于PGM(节目播出)或PVW(预览)状态。 NDI 还允许发送方确定连接的接收方数量,因此当没有连接 NDI 接收方客户端时,发送端可以跳过不必要的处理和网络带宽使用。 NDI 接收器可以选择连接到各种流组合,以支持不需要视频的纯音频或纯元数据连接。
NDI软件开发工具包(SDK)可用于Windows、Linux和MacOS,还可以移植到iOS、TVOS、Android、Raspberry PI和FPGA平台。标准NDI SDK为免费的专利许可,NDI 高级SDK为设备制造商提供对于压缩数据和其他功能的直接访问,需要商业许可。
2、与其他协议比较
其它用于专业视频制作的IP视频协议(而非用于分发给最终用户的IP视频)包括SMPTE 2022,SMPTE2110,ASPEN(很大程度已被SMPTE2110取代)和索尼NMI。以下表格中列出了这些协议使用的技术所存在的一些明显差异。
对比项目 | NDI | NDI HX | NDI HX2 | SMPTE 2022-6 | SMPTE 2110 | ASPEN | NMI | CDI |
传输协议 | TCP/UDP/ Multi-TCP/Reliable UDP* | UDP (TCP) | TCP/UDP/ Multi-TCP/Reliable UDP* | UDP(RTP) | UDP(RTP) | UDP | UDP | UDP/SRD |
图像格式 | 不受限制的尺寸/宽高比 | 不受限制的尺寸/宽高比 | 不受限制的尺寸/宽高比 | 仅限SDI 格式 | 不受限制的尺寸/宽高比 | 不受限制的尺寸/宽高比 | ||
Tally | 支持 | 支持 | 支持 | 不支持 | 不支持** | 不支持 | 不支持 | |
双向设备控制 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | |
内置代理码率 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
内置Alpha 通道 | 支持 | 不支持 | 支持 | 不支持 | 支持 | 支持 | ||
压缩技术 | NDI 编码(SHQ 0/2/7) | NDI HX (H.264) | H.264/H.265 | 无压缩*** | SMPTE 2110-22规范.(JPEG XS,但不限于) | 无压缩 | 无压缩/ LLVC 编码 | 无压缩 |
连接 | 套接字, 单播/组播和前向纠错编码 | 单播/组播 | 套接字, 单播/组播和前向纠错编码 | 组播 | 组播 | 组播 | 组播/ ? | SRD |
高清格式(1080i)码率 | ~100 Mbit/s | 8-20 Mbit/s | ~1-50Mbit/s | >1.5 Gbit/s | >1.1 Gbit/s | >1.5 Gbit/s | >1.5 Gbit/s / 最高 14:1 | >1.5 Gbit/s |
数据包构成 | 离散音频,元数据和视频帧数据包,单一连接 | 修改的 RTSP/RTP 类型连接 | 离散音频,元数据和视频帧数据包,单一连接 | 封装的原始SDI比特流数据 | 不同协议的独立连接上的离散音频、视频和元数据 | 多个MPEG传输流 | 帧对齐的2022-6 / LLVC | SMPTE2110 格式的离散音频、视频和元数据 |
适用的基础设施 | 千兆/无线/负载均衡的多网卡/万兆 | 千兆/无线 | 千兆/无线 | 最低万兆 | 最低万兆 | 最低万兆 | 万兆/千兆 | 100GBit EFA / libFabric |
发现服务 | Bonjour (mDNS) , NDI 访问控制 (手动),发现服务器(NDI 4) | 通过HX驱动自动发现 | Bonjour (mDNS) , NDI 访问控制 (手动),发现服务器(NDI 4) | NMOS | AMWA IS-04 NMOS | JSON-RPC | 即插即用 (NDCP) | 无 |
API | 免费版权许可,适用于Win(x86)、Mac、Linux(x86和ARM)、iOS、FPGA的SDK | 硬件编码,通过 NDI 库解码 | 使用 NDI 高级 SDK 发送,使用 NDI 库接收 | SMPTE标准 | SMPTE标准 | SMPTE RDD | 开源 |
*NDI 的1.0版本仅支持TCP。更高版本支持具备FEC功能的UDP单播和组播选项,可酌情选择。NDI 4.0 添加了“Multi-TCP”传输,NDI 5.0 添加了“Reliable-UDP”传输。
**SMPTE 2110 的 Tally 依赖于外部数据源,使用建议的 AMWA IS 07。
***TICO RDD35编解码器可用于将UHD进行4:1压缩,因此TICO编码的4K视频流可以在符合SMPTE 2022-6标准的无压缩带宽的HD信道中传输。带有TR-03的SMPTE 2110也具备了使用TICO RDD35和JPEG XS的可能性,这需要专有的编码器和解码器,它们通常在终端通过芯片部署实现。
3、发展历史
NDI于2015年9月8日由美国NewTek公司首次公开发布,并于当周在阿姆斯特丹的IBC广播展上展示。展示的第一台使用NDI的设备是NewTek的TriCaster视频切换台,切换台的每个SDI输入可提供一个NDI信号,同时切换台4个输出也提供4路经过制作的NDI信号。TriCaster还可以从其他设备接收最多2个NDI源(在以后的版本中增加到12个,在NewTek的IP系列中增加到44个)。
NDI的前身是NewTek之前推出的了一个名为AirSend的技术,其可将外部设备的视频进行转换后输入到TriCaster产品。AirSend已经被许多CG设备制造商采用,包括VizRT和Chyron。为了快速将这些产品引入NDI系统,NewTek开发了一个新的驱动程序来替换现有的AirSend驱动程序,该驱动程序可以安装在现有的AirSend兼容设备上,立即将它们转换为NDI兼容设备,而无需CG设备厂商做出任何更改。
2016年底,NewTek推出了NDI 2.0版本,它增加了一些功能,包括支持跨子网的发现服务等。
2017年7月12日,NewTek发布NDI 3.0,增加了组播、NDI / HX高压缩编码和其它新功能,还增加了对配备H.264芯片组和更新固件的特定PTZ摄像机的支持。
在2018年4月的NAB展会上,微软宣布他们已经为Skype for Content Creators应用软件添加了对NDI的支持。NAB 2018上的其它重要公告还包括NDI 3.5的发布,以及包括EVS和Avid在内的厂商提供了对NDI新的支持。
FFmpeg 的 3.4 版增加了对 NDI 的输入和输出支持,使最终用户可以有选择地编译为非开源 NewTek 库。 然而, NewTek 后来被发现重新分发了 FFmpeg 的预编译二进制文件,其中包含了他们的非开放源代码库,这违反了 GNU 通用公共许证,导致 FFmpeg 项目在 2019 年 3 月从其代码库中删除了 对NDI 的支持。
2019 年 4 月,在 NAB 之前,NewTek 宣布将Multi- TCP 模式添加到 NDI 4.0,其利用芯片中存在的硬件 TCP 加速,帮助较低规格的处理器进行 NDI 传输。 NDI 4.0 于 2019 年 9 月发布,以配合 IBC 展览。
2021 年 7 月,NDI 5发布,增加了以下主要功能:可靠的 UDP 传输、冗余发现服务器支持、NDI 5 工具(NDI 桥、NDI 远程、NDI 音频直连、FCP-X 输出)
版本 | 发布时间 | 特性/增强功能 |
1.0 | 2016年4月 | 首次发布 |
2.0 | 2016年9月 | 通过 Access Manager 支持跨子网、支持ARM 编码、iOS SDK |
3.0 | 2017年7月 | 支持NDI-HX, 具有 FEC 和 PTZ 支持的组播传输选项。 |
3.5 | 2018年6月 | 默认使用具备FEC的单播UDP传输协议。 |
3.6 | 2018年7月 | 数据包级绑定改进。 |
3.7 | 2018年9月 | 发现功能改进。 |
3.8 | 2018年11月 | 性能增强,用于 FPGA 开发的 NDI 嵌入式 SDK。 |
4.0 | 2019年9月 | Multi-TCP传输模式、HDR 16 位支持、本地同步录制、发现服务器、NDI HX2 |
4.1 | 2019年11月 | 性能增强。 |
4.5 | 2020年3月 | 新的Multi-TCP实现、NDI-HX延迟降低、防火墙规则的端口号可预测、编解码器质量的改进。 |
4.6 | 2020年11月 | 可以在使用 NVENC 的 PC 上支持 NDI-HX2 编码。 |
5.0 | 2021年7月 | 可靠的 UDP 传输、冗余发现服务器支持、NDI 5 工具(桥接、远程、音频直连、FCP-X 输出) |
4、无线WiFi和广域网应用
NDI被设计为使用TCP和Bonjour(mDNS)技术在高质量的千兆局域网上工作。为了跨越mDNS无法通过的子网进行工作,NDI支持一种NDI Access访问机制,这种机制允许手动输入正在运行NDI源的其他子网上的计算机的IP地址。
已经有NDI设备使用者在长达15公里的长距离光纤链路上传输NDI信号,尽管由于带宽时延积和TCP数据包丢失恢复等因, 使用TCP协议的NDI技术其实不太适合这种长距离、高延迟的链路。 NDI 的后续版本引入了不同的传输协议,包括 UDP、MultiTCP 和可靠的 UDP (QUIC),它们提供了不同的网络特性。 NDI|HX 使用较低的数据速率,使其更易于在带宽受限的连接中使用。
5、基于云端的使用
NDI 还可用于基于云的制作系统,其压缩的视频和单播传输适用于 AWS 和 Azure 等基于云的服务。 在云环境中运行时,NDI 发现服务为云平台常见的组播限制提供了解决方案。
6、CPU架构支持情况
在x86架构上运行时,NDI需要包含SSSE3指令集的CPU。从2006年开始的大多数英特尔CPU设计都有这个指令集,AMD从2011年开始增加了对此指令集的支持。虽然不是必需的,但NDI将利用AVX(高级矢量扩展)和AVX2指令集来提高性能。
虽然NDI可以在32位或64位CPU架构上运行,但是使用64位时NDI性能将会提高。
NDI 4.x 及更早版本对 ARM 的支持有限,通常仅提供编码支持。 NDI 5的发布完全支持基于ARM的处理器(包括Neon指令)上的编码和解码。这包括苹果硅的芯片处理器。
NDI HX设备通常是仅发送的,并基于具有H.264编码器芯片的专有硬件平台。例如NDI HX PTZ摄像机和SDI到NDI HX转换器NDI Connect Spark。NDI流本身通过硬件平台特定的NDI HX驱动程序在流接收端形成,它向使用NDI源的应用软件提供相同的未压缩数据,与原始的HX源的硬件和压缩无关。NDI|HX2 是一种更单纯的实现,支持 H.264 或 HEVC 压缩,并允许额外的 NDI 功能。
在 NDI 4.0 中,NewTek 宣布增加了Multi-TCP传输模式。 这利用了芯片处理器中的硬件 TCP 加速,这有助于低规格处理器处理繁重的网络负载,而 UDP 无法从硬件加速中受益。
7、NDI 规范的元数据和扩展
NDI 支持任意元数据作为 XML 块嵌入到视频和音频帧中,也可以是独立的元数据帧。 这些元数据块的内容分为三类。
①NDI 不可见地使用的内部元数据。 这些消息用于连接和一些其他基本任务,如 Tally。 它们通常对 NDI 客户端不可见。
②定义的公共元数据。 这些消息包括 NDI PTZ 协议等内容。 它们由 NewTek 定义为 NDI SDK 的一部分。
③第三方元数据模式。 这些消息的实现方式与定义的 NDI 元数据相同,但内容基于第三方设计。
www.ubschina.com
标签:NDI,UDP,组播,接口技术,支持,NewTek,TCP,2021 来源: https://blog.csdn.net/TriCaster_NDI/article/details/121291587