Async-friendly WebRTC implementation in Rust
Sponsored with đź’– by
Silver Sponsors:
Bronze Sponsors:
AdrianEddy
Table of Content
WebRTC.rs is an async-friendly WebRTC implementation in Rust, originally inspired by and largely rewriting the Pion stack. The project is under active development and should be considered early stage; please refer to the Roadmap for planned milestones and releases. The Examples demonstrate how to build media and data-channel applications using webrtc-rs.
The project is shifting its focus toward a Sans-IO WebRTC implementation in Rust. Going forward, the webrtc-rs/webrtc crate will be built on top of the webrtc-rs/rtc crate, which provides a clean, protocol-centric Sans-IO core. This architecture enables a fully async-friendly WebRTC implementation in Rust.
WebRTC
Media
Interceptor
Data
RTP
RTCP
SRTP
SCTP
DTLS
mDNS
STUN
TURN
ICE
SDP
Util
All webrtc dependent crates and examples are included in this repository at the top level in a Cargo workspace.
To build all webrtc examples:
cd examples
cargo test # build all examples (maybe very slow)
#[ or just build single example (much faster)
cargo build --example play-from-disk-vpx # build play-from-disk-vpx example only
cargo build --example play-from-disk-h264 # build play-from-disk-h264 example only
#...
#]To build webrtc crate:
cargo build [or clippy or test or fmt]Dual licensing under both MIT and Apache-2.0 is the currently accepted standard by the Rust language community and has been used for both the compiler and many public libraries since ( see https://doc.rust-lang.org/1.6.0/complement-project-faq.html#why-dual-mitasl2-license). In order to match the community standards, webrtc-rs is using the dual MIT+Apache-2.0 license.
Contributors or Pull Requests are Welcome!!!