Usage Guide
GStreamer plugin (nmos) providing the nmossrc, nmossink, and
nmosaudiochannelmap elements. They talk to the nvnmosd NMOS daemon over
gRPC. See the
Daemon design record
and the
Rust workspace quick start.
The Core NvNmos Concepts guide explains the transport file, activation direction, and identity model shared by the GStreamer elements, C API, and daemon.
Quick Start
The workspace quick start
covers prerequisites and builds libnvnmos, nvnmosd, and this plugin. It
then runs an RTP/UDP Sender and Receiver in three terminals:
# Terminal 1, from rust/
cargo run --bin nvnmosd
# Terminal 2, from rust/gst-nmos-rs/
./scripts/example-pipelines/1080p25-sender-udp.sh
# Terminal 3, from rust/gst-nmos-rs/
./scripts/example-pipelines/1080p25-receiver-udp.sh
The example uses transport=udp, so its transport path uses
gst-plugins-good, and auto-activate=true, so video starts without an NMOS
Controller. The full quick start shows the required NVNMOS_LIB_DIR,
LD_LIBRARY_PATH, and GST_PLUGIN_PATH settings.
Building
cd /path/to/nvnmos/rust
cargo build -p gst-nmos-rs
Build output is target/debug/libgstnmos.so (or target/release/...).
Loading the Plugin
export GST_PLUGIN_PATH=/path/to/nvnmos/rust/target/debug
gst-inspect-1.0 nmos
gst-inspect-1.0 nmos prints the plugin metadata;
gst-inspect-1.0 nmossink, gst-inspect-1.0 nmossrc, and
gst-inspect-1.0 nmosaudiochannelmap list the exact property reference.
Pipeline Examples
The pipeline examples
provide copy-paste
gst-launch-1.0 recipes for MXL, RTP/UDP, and DeepStream Rivermax, plus an
interactive three-Node IS-05 demo. Static scripts are under
scripts/example-pipelines/.
Troubleshooting
-
Plugin not found: confirm
libgstnmos.sois onGST_PLUGIN_PATHandlibnvnmos.sois onLD_LIBRARY_PATH, then rungst-inspect-1.0 nmos. -
Cannot connect to the daemon: start
nvnmosdand check thatdaemon-urinames the same Unix socket. -
Node has no Sender: an
nmossinkwithoutcapsortransport-file*waits until READY→PAUSED to query upstream caps. Move the pipeline to PAUSED or PLAYING and ensure upstream offers fixed, supported caps. -
Node has no Receiver:
nmossrcdoes not defer configuration; setcapsortransport-file*before READY. -
Sender or Receiver is visible but media is not flowing: either activate
it through IS-05 or set
auto-activate=truefor a self-starting pipeline. - Caps negotiation fails: compare the configured or negotiated caps with the supported essence shapes.
-
Node does not appear in the Registry: check
domain,registration-url, and the DNS-SD service used by the host. - MXL or DeepStream transport setup fails: check the MXL environment in the workspace quick start or the DeepStream/Rivermax prerequisites.
Further Guidance
- Configuration — activation policy, transport-file sources, property groups, caps, and lifecycle timing.
-
Audio Channel Mapping
— configure
nmosaudiochannelmapfor IS-08 routing. - Pipeline Examples — complete transport-specific recipes and the interactive demo.
- Element reference — exact element and pad properties.
- Integration testing — end-to-end sync-test setup and commands.
The results of the search are