pd_ndi is a Pure Data extensions that enables video transmission through NDI.
Newtek NDI (Network Device Interface) is a software standard for broadcasting high quality video and audio over network with low latency.
Gem Graphics Environment for Multimedia for Pure Data
- Building process of pd_ndi is managed by CMake
- Pd_ndi depends on Newtek NDI SDK which can be downloaded for free form here
- Gem library is now required for compilation
- Execute following commands in root directory of pd_ndi:
mkdir build cd build cmake ../ make
- You can specify non-default pd Gem's and NDI SDK installation directories by providing
PD_INSTALL_DIR
,GEM_EXTERN_DIR
and - on linux and mac -NDI_INSTALL_DIR
options to CMake
cmake ../ -DPD_INSTALL_DIR=path/to/pd -DGEM_EXTERN_DIR=path/to/gem
- On Linux
gem-dev
package is required for compilation as it contains Gem header files.
Precompiled Windows, Mac and Linux binaries can be downloaded from github's releases tab.
- Copy pd_ndi file from bin directory to your externals directory where all tour externals are located
- Add pd_ndi to the list of libraries loaded by Pure Data at startup (File menu -> preferences -> startup -> new -> type pd_ndi -> ok -> ok -> DONE)
- NDI library file must be visible for pd_ndi also after compilation. Easiest way to make it so is to copy it to the installation folder of pd_ndi.
- Gem has to be added to the library list before pd_ndi
-
[ndisender] connected to [gemhead] will transmit what's before it in Gem's render chain. In case you are familiar with syphonserver for Gem, ndisender will work the same way.
-
Passes data received from NDI source as pix data. Works similarly to e.g. [pix_image]
-
Simple object that will search for available NDI sources after receiving bang. Results are printed in console.
-
To use [gl_ndisender] object with Gem just connect right outlet of [gemframebuffer] to the left inlet of [gl_ndisender].
(Note: gl_ndisender's main purpose is to be used with Gem's [gemframebuffer] object, but implementation doesn't depend on Gem, so it should also work with other OpenGL wrapping objects that can bang [gl_ndisender] object with GL_TEXTURE_2D as [gemframebuffer] does)
-
You can also set desired framerate of NDI broadcast by sending [fps $1 ( to [ndisender] or [gl_ndisender] (30 fps by default).
- provide more NDI configuration options to PD object
- implement sender as Gem's record plugin
- implement audio transmission