webrtc 0.17.1

A pure Rust implementation of WebRTC API
Documentation

Overview

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.

🚨 Important Notice: v0.17.x Release and Future Direction

v0.17.x is the final feature release of the Tokio-coupled async WebRTC implementation.

  • v0.17.x branch: A dedicated branch will be created for v0.17.x that will receive bug fixes only (no new features).
  • Master branch: Will transition to a new Sans-IO based architecture built on top of webrtc-rs/rtc.

Why this change?

The project is shifting toward a Sans-IO WebRTC implementation that decouples the protocol logic from any specific async runtime. This new architecture will:

  • ✅ Support multiple async runtimes (Tokio, smol, async-std, etc.)
  • ✅ Provide a clean, protocol-centric Sans-IO core via webrtc-rs/rtc
  • ✅ Enable a truly runtime-agnostic, async-friendly WebRTC implementation in Rust

If you need Tokio-specific stability, please use the v0.17.x branch. If you want to adopt the new runtime-agnostic approach, follow development on the master branch.

Features

Building

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]

Open Source License

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.

Contributing

Contributors or Pull Requests are Welcome!!!