gst-plugins-rs/net/ndi
François Laignel 7ba0073052 use Pad builders for optional name definition
Also, apply auto-naming in the following cases

* When building from a non wildcard-named template, the name of the template is
  automatically assigned to the Pad. User can override with a specific name by
  calling `name()` on the `PadBuilder`.
* When building with a target and no name was provided via the above, the
  GhostPad is named after the target.

See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/448
Auto-naming discussion: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1255#note_1891181

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1197>
2023-05-12 12:55:31 +02:00
..
src use Pad builders for optional name definition 2023-05-12 12:55:31 +02:00
build.rs Move everything to net/ndi for preparing to merge into gst-plugins-rs 2022-10-12 19:25:32 +03:00
Cargo.toml net: ndi: Update to libloading 0.8 2023-04-12 11:03:05 +03:00
LICENSE-MPL-2.0 git: replace LICENSE file symlinks with copies 2023-04-04 14:26:37 +01:00
README.md ndi: Implement dynamic loading of the NDI SDK 2022-10-12 22:09:53 +03:00

GStreamer NDI Plugin

Compatible with NDI SDK 5.x

This is a plugin for the GStreamer multimedia framework that allows GStreamer to receive or send an NDI stream.

This plugin has been initially developed by Teltek and was funded by the University of the Arts London and The University of Manchester.

Currently the plugin has a source element for receiving from NDI sources, a sink element to provide an NDI source and a device provider for discovering NDI sources on the network.

The plugin is loading the NDI SDK at runtime, either from the default library path or, if set, from the directory given by the NDI_RUNTIME_DIR_V5 environment variable.

Some examples of how to use these elements from the command line:

# Information about the elements
$ gst-inspect-1.0 ndi
$ gst-inspect-1.0 ndisrc
$ gst-inspect-1.0 ndisink

# Discover all NDI sources on the network
$ gst-device-monitor-1.0 -f Source/Network:application/x-ndi

# Audio/Video source pipeline
$ gst-launch-1.0 ndisrc ndi-name="GC-DEV2 (OBS)" ! ndisrcdemux name=demux   demux.video ! queue ! videoconvert ! autovideosink  demux.audio ! queue ! audioconvert ! autoaudiosink

# Audio/Video sink pipeline
$ gst-launch-1.0 videotestsrc is-live=true ! video/x-raw,format=UYVY ! ndisinkcombiner name=combiner ! ndisink ndi-name="My NDI source"  audiotestsrc is-live=true ! combiner.audio

Feel free to contribute to this project. Some ways you can contribute are:

  • Testing with more hardware and software and reporting bugs
  • Doing pull requests.

License

This plugin is licensed under the MPL-2 - see the LICENSE file for details

Acknowledgments

  • University of the Arts London and The University of Manchester.
  • Sebastian Dröge (@sdroege).