8 releases (stable)
new 1.1.3 | Mar 29, 2025 |
---|---|
1.1.2 | Mar 28, 2025 |
0.1.1 | Mar 25, 2025 |
#1951 in Network programming
557 downloads per month
Used in videocall-ui
345KB
7K
SLoC
videocall-client
A Rust client library for the videocall.rs project that handles client-side browser media I/O for video calls.
This crate provides:
- Media encoding for local camera, microphone, and screen sharing
- Rendering of remote peers' media
- Media device enumeration and access management
Currently supports Chromium based browsers only, including Chrome, Edge, and Brave.
Quick Start
Client creation and connection:
let options = VideoCallClientOptions {...}; // set parameters and callbacks for various events
let client = VideoCallClient::new(options);
client.connect();
Encoder creation:
let camera = CameraEncoder.new(client, video_element_id);
let microphone = MicrophoneEncoder.new(client);
let screen = ScreenEncoder.new(client);
camera.select(video_device);
camera.start();
camera.stop();
microphone.select(video_device);
microphone.start();
microphone.stop();
screen.start();
screen.stop();
Device access permission:
let media_device_access = MediaDeviceAccess::new();
media_device_access.on_granted = ...; // callback
media_device_access.on_denied = ...; // callback
media_device_access.request();
Device query and listing:
let media_device_list = MediaDeviceList::new();
media_device_list.audio_inputs.on_selected = ...; // callback
media_device_access.video_inputs.on_selected = ...; // callback
media_device_list.load();
let microphones = media_device_list.audio_inputs.devices();
let cameras = media_device_list.video_inputs.devices();
media_device_list.audio_inputs.select(µphones[i].device_id);
media_device_list.video_inputs.select(&cameras[i].device_id);
Dependencies
~18–28MB
~405K SLoC