rustrtc
A pure Rust implementation of WebRTC.
Features
- PeerConnection: The main entry point for WebRTC connections.
- Data Channels: Support for reliable and unreliable data channels.
- Media Support: RTP/SRTP handling for audio and video.
- ICE/STUN: Interactive Connectivity Establishment and STUN protocol support.
- DTLS: Datagram Transport Layer Security for secure communication.
- SDP: Session Description Protocol parsing and generation.
Usage
Here is a simple example of how to create a PeerConnection and handle an offer:
use ;
async
Configuration
rustrtc allows customizing the WebRTC session via RtcConfiguration:
- ice_servers: Configure STUN/TURN servers.
- ice_transport_policy: Control ICE candidate gathering (e.g.,
All,Relay). - ssrc_start: Set the starting SSRC value for local tracks.
- media_capabilities: Configure supported codecs (payload types, names) and SCTP ports.
use ;
let mut config = default;
// Configure ICE servers
config.ice_servers.push;
// Set ICE transport policy (optional)
config.ice_transport_policy = All;
config.ssrc_start = 10000;
// Customize media capabilities
let mut caps = default;
// ... configure audio/video/application caps ...
config.media_capabilities = Some;
let pc = new;
Examples
You can run the examples provided in the repository.
Echo Server
The echo server example demonstrates how to accept a WebRTC connection, receive data on a data channel, and echo it back. It also supports video playback if an IVF file is provided.
-
Run the server:
-
Open your browser and navigate to
http://127.0.0.1:3000.
RTP Example
The RTP example demonstrates how to create a PeerConnection, add an audio track, and send dummy audio frames.
- Run the example:
License
This project is licensed under the MIT License.