- Notifications
You must be signed in to change notification settings - Fork146
keijiro/KlakNDI
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
KlakNDI is a Unity plugin that allows for sending and receiving videostreams between multiple devices usingNDI®.
NDI® (Network Device Interface) is a standard developed byVizrt thatenables applications to deliver video streams over a local area network. Pleaserefer tondi.video for more information about the technology.
- Unity 2022.3 or later
Desktop platforms:
- Windows: x64, D3D11/D3D12
- macOS: x64 or arm64 (M1), Metal
- Linux: x64, Vulkan
Mobile platforms:
- iOS: arm64, Metal
- Android: arm64, Vulkan/OpenGL ES 3.x
KlakNDI runs without the NDI SDK on most supported platforms, but the iOSplatform requires the SDK for building with Xcode. Please download and installthe NDI SDK for iOS in advance of building.
KlakNDI requires network permissions on Android. Please follow the instructioninAndroid Support section.
The NDI library files are provided under the terms of theNDI SDK license.Please review it before using the package in your project.
Dimensions of frame images should be multiples of 16x8. This limitation causesglitches on several mobile devices when using the Game View capture method.
KlakNDI doesn't support audio streaming. There are several technicaldifficulties to implement without perceptible noise or delay, so there are noplans to implement it.
The KlakNDI package (jp.keijiro.klak.ndi
) can be installed via the "Keijiro"scoped registry using Package Manager. To add the registry to your project,please followthese instructions.
TheNDI Sender component (NdiSender
) sends a video stream from a givenvideo source.
NDI Name - Specify the name of the NDI endpoint (only available in theCamera/Texture capture method).
Keep Alpha - Enable this checkbox to make the stream contain the alphachannel. You can disable it to reduce the bandwidth.
Capture Method - Specify how to capture the video source from the followingoptions:
- Game View - The sender captures frames from the Game View.
- Camera - The sender captures frames from a given camera. This method onlysupports URP and HDRP.
- Texture - The sender captures frames from a texture asset. You can also usea render texture with this option.
You can attach metadata using the C#.metadata
property.
TheNDI Receiver component (NdiReceiver
) receives a video stream andfeeds it to a renderer object or a render texture asset.
NDI Name - Specify the name of the NDI source. You can edit the text fieldor use the selector to choose a name from currently available NDI sources.
Target Texture - The receiver copies the received frames into this rendertexture asset.
Target Renderer - The receiver overrides a texture property of the givenrenderer.
You can extract metadata using the C#.metadata
property.
You can enumerate currently available NDI sources using the NDI Finder class(NdiFinder
). See theSource Selector example for usage.
You can instantiate the NDI Sender/Receiver component from a script but atthe same time, you have to set an NDI Resources asset (NdiResources.asset
).See theSender Benchmark/Receiver Benchmark examples for details.
KlakNDI requires the following permissions when running on Android:
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.CHANGE_WIFI_MULTICAST_STATE
You can add them byoverriding the App Manifest. Please refer to theAndroidManifest file contained in the URP sample.
About
NDI® plugin for Unity