On a MacOS system with an attached camera you can do the following steps:
brew install pkg-config libvpx
cargo run
- open the displayed address http://localhost:8080
- 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
- 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