gst-plugin-zenoh
A GStreamer plugin for distributed media streaming using Zenoh.
Elements
| Element | Description | Documentation |
|---|---|---|
| zenohsink | Publishes GStreamer buffers to Zenoh | README |
| zenohsrc | Subscribes to Zenoh and delivers to pipelines | README |
| zenohdemux | Demultiplexes streams by key expression | README |
Quick Start
Installation
# Ubuntu/Debian
# Fedora
# Build
# With compression support
Basic Usage
# Set plugin path
# Sender
# Receiver
Features
- QoS Control: Reliability modes, congestion control, priority levels (1-7)
- Low Latency: Express mode, zero-copy paths, efficient session management
- Session Sharing: Share Zenoh sessions across elements to reduce overhead
- Compression: Optional Zstandard, LZ4, or Gzip (compile-time features)
- Buffer Metadata: PTS, DTS, duration, flags preserved for A/V sync
- Caps Transmission: Automatic format negotiation between sender/receiver
- URI Handler: Configure via
zenoh:key-expr?priority=2&reliability=reliable - Statistics: Real-time monitoring of bytes, messages, errors, dropped packets
Rust API
use ;
// Simple constructor
let sink = new;
// Builder pattern
let sink = builder
.reliability
.priority
.express
.build;
// Typed getters
println!;
See docs.rs for full API documentation.
Compression
Build with compression features:
Usage:
# Sender with compression
# Receiver (auto-decompresses)
Feature Compatibility
| Sender | Receiver | Result |
|---|---|---|
compression=none |
Any build | Works |
compression=zstd |
Built with compression-zstd |
Works |
compression=zstd |
Built without compression | Error logged, raw compressed bytes delivered |
Recommendation: Build both sender and receiver with the same compression features, or use --features compression for full compatibility.
Requirements
- Rust 1.85+ (edition 2024)
- GStreamer 1.20+
License
Mozilla Public License 2.0 - see LICENSE.