-
Notifications
You must be signed in to change notification settings - Fork 53
Syphon, Spout and NDI
Since UltraGrid version 1.7.2, binary builds include NDI®. NDI library is dynamically loaded, therefore you need to have the NDI runtime installed:
- macOS: http://new.tk/NDIRedistV5Apple
- Windows: http://new.tk/NDIRedistV5
- Linux - NewTek doesn't provide redistributable version so you need to download the SDK and follow the installation instructions below
Basic usage is simply:
uv -t ndi -c <compression> [-s embedded --audio-codec <ac>] <receiver>
The above command picks first source found on a local network and sends the data to the receiver.
You may also specify name and/or URL (either in form ip_addr or ip_addr:port, exact URL format may change with future NDI releases) to capture from, eg.:
uv -t "ndi:name=HD10 (DeckLink 4K Extreme)" -c JPEG ultragrid-receiver.example.net
uv -t ndi:url=192.0.2.15 -c JPEG ultragrid-receiver.example.net
uv -t ndi:url=192.0.2.15:5961 -c JPEG ultragrid-receiver.example.net
(Note that the apostrophes in the first command are because the resource name contains spaces.)
You can also let UltraGrid discover available sources on a local network:
uv -t ndi:help
(The list doesn't need to be complete - UltraGrid waits only limited amount of time to response.)
If you want to capture including alpha channel, select a mode that captures RGBA (alpha is currently stripped from YCbCr formats):
uv -t ndi:color=0 # BGRX_BGRA; 1 (UYVY_BGRA), 2 (RGBX_RGBA), 3 (UYVY_RGBA) are also ok; default is however 100 (best)
Note: Very few of compressions support alpha-channel compression, one exception is GPUJPEG.
NDI video capture is capable of capturing video alongside with audio as usual:
uv -t ndi -s embedded -c libavcodec --audio-codec OPUS ultragrid-receiver.example.net
If the NDI source is audio only, it is possible to capture the audio with the NDI vidcap module even in the absence of video signal:
uv -t ndi:name=mic -s embedded --audio-codec OPUS ultragrid-receiver.example.net # if "mic" is audio only NDI source, no video is sent
Basic usage is quite usual:
uv -d ndi[:name=<n>] [-r embedded] <sender>
Analogically to the capture, the NDI display can also playback the audio without a video.
This step is required to add run-time dependency, for compilation see here.
Installation steps:
-
download and extract the installer:
tar xaf Install_NDI_SDK_v6_Linux.tar.gz
-
install the NDI
./Install_NDI_SDK_v6_Linux.sh
-
this creates directory
"NDI SDK for Linux"
directory in current path -
make the contained library
libndi.so.6
visible to UltraGrid, this can be done in two ways:-
copy (as root) libraries to
/usr/local/lib
:cp -a NDI\ SDK\ for\ Linux/lib/x86_64-linux-gnu/lib* /usr/local/lib/ cp -a NDI\ SDK\ for\ Linux/include/* /usr/local/include/ # (headers optional, can be omitted)
-
or export path to the library before running UG (or to system environment):
export NDI_RUNTIME_DIR_V6=<NDI_SDK_root>/lib/x86_64-linux-gnu/lib/ ./UltraGrid*AppImage [...]
-
Currently there is only Spout server support.
Use following command to create Spout sender:
uv -d gl:spout # or
uv -d spout # wraps GL display, equivalent to `-d gl:spout:hide_window`
Similarly to Syphon, you can specify server name:
uv -d gl:spout=<name>
You can use Spout capturer by running:
uv -t spout[:name=<srv_name>][:fps=<fps>]
Syphon support is added to UltraGrid OpenGL display. You can run it with following command:
uv -d gl:syphon # or
uv -d syphon # wraps GL display, equivalent to `-d gl:syphon:hide_window`
Alternatively, you can specify server name (instead of default UltraGrid):
uv -d gl:syphon=<another_name>
Syphon clinet can be simply run as a normal capturer:
uv -t syphon -c <compression> <receiver_addr>
[1] NDI® is a registered trademark of NewTek, Inc.
[2] NDI® is available at http://ndi.tv/
If you have any technical or non-technical question or suggestion please feel free to contact us at