vidrs: a playground for exploring media capture, processing and publishing with rust
How to use
On a MacOS system with an attached camera you can call cargo run
and go to the mentioned server address http://localhost:8080.
Features
- bindings for camera capturing on MacOS using madsmtm/objc2
- encoding of 4:2:0 camera frames into VP8 frames using astraw/env-libvpx-sys
- sending VP8 frames via WebRTC to a browser test app using webrtc-rs/webrtc
- handling WebRTC offer/answer exchange with tokio, hyper and serde
- miniquad egui view of local camera stream with YUV decoding shader
Ideas for feature work
- receive VP8 video via WebRTC, decode and write or display it
- add support for Linux and Windows camera capturing using raymanfx/eye-rs and l1npengtul/nokhwa
- add camera device selection
- better way of figuring out which frame pixel format is preferred for the use case
- use algesten/str0m for handling WebRTC
- spin off some crates
- some dependencies use
objc
instead ofobjc2
, so MacOS bindings could be implemented in different binding ecosystems - use some GUI to show video too, like egui, iced or tauri