A cross-platform camera library for Rust, plus first-class UI-framework integrations.
Recording.2026-04-15.051232.mp4
| Crate | crates.io | docs.rs | Purpose |
|---|---|---|---|
cameras |
Enumerate, probe, open, and stream cameras. macOS (AVFoundation), Windows (Media Foundation), Linux (V4L2). Optional RTSP. | ||
dioxus-cameras |
Hooks + components for using cameras inside a Dioxus desktop app. WebGL2 preview rendering. | ||
egui-cameras |
Helpers for using cameras inside an egui / eframe app. Frame-to-texture conversion. |
Each integration crate is thin; almost everything lives in cameras itself (cameras::pump, cameras::source, cameras::monitor, etc.). The integration crates just bridge a running cameras::pump::Pump to the target UI framework's texture / canvas model.
cameras/
βββ crates/
β βββ cameras/ β the core library
β βββ dioxus-cameras/ β Dioxus integration
β βββ egui-cameras/ β egui integration
βββ apps/
βββ dioxus-demo/ β multi-stream grid, USB + RTSP sources
βββ egui-demo/ β single-stream viewer with pause / snapshot
just run-dioxus # Dioxus desktop app: multi-stream grid, USB + RTSP
just run-egui # egui / eframe app: single-stream viewer + snapshotAll three crates ship in lockstep on the same major + minor version. Use matching minor versions across your Cargo.toml when depending on them.
just publish # cameras
just publish-dx # dioxus-cameras
just publish-egui # egui-camerasDual-licensed under either of
at your option.