VideoStream Library for Rust
Safe Rust bindings for the VideoStream Library, providing zero-copy video frame management and distribution across processes and containers.
The VideoStream Library enables efficient frame sharing through DMA buffers or shared-memory with signaling over UNIX Domain Sockets, optimized for edge AI and computer vision applications on resource-constrained embedded devices.
Quick Start
Publishing Frames (Host)
use videostream::host::Host;
use videostream::frame::Frame;
let host = Host::new("/tmp/video.sock")?;
let frame = Frame::new(1920, 1080, 1920 * 2, "YUYV")?;
frame.alloc(None)?;
// Register and publish frame to clients
# Ok::<(), Box<dyn std::error::Error>>(())
Subscribing to Frames (Client)
use videostream::client::Client;
use videostream::frame::Frame;
let client = Client::new("/tmp/video.sock", true)?;
let frame = Frame::wait(&client, 1000)?;
// Process the frame here
println!("Received frame: {}x{}", frame.width()?, frame.height()?);
# Ok::<(), Box<dyn std::error::Error>>(())
Features
- Zero-copy frame sharing across process boundaries
- DMA buffer support for hardware-accelerated access
- Hardware video encoding/decoding (H.264, H.265)
- V4L2 camera capture integration
- Multi-subscriber support (one publisher, many subscribers)
Support
For questions and support:
- Documentation: https://docs.rs/videostream
- Repository: https://github.com/EdgeFirstAI/videostream
- Professional support: support@au-zone.com