WebRTC.rs

License: MIT/Apache 2.0 Discord Twitter

A pure Rust implementation of WebRTC stack. Rewrite Pion WebRTC stack in Rust

Sponsored with 💖 by

Gold Sponsors:
Parity Technologies

Silver Sponsors:
Stream Chat
Bronze Sponsors:
embark
AdrianEddy

#
Table of Content - [Overview](#overview) - [Features](#features) - [Building](#building) - [Toolchain](#toolchain) - [Monorepo Setup](#monorepo-setup) - [Testing with Local Dependencies](#testing-with-local-dependencies) - [Open Source License](#open-source-license) - [Contributing](#contributing)
# ## Overview WebRTC.rs is a pure Rust implementation of WebRTC stack, which rewrites Pion stack in Rust. This project is still in active and early development stage, please refer to the [Roadmap](https://github.com/webrtc-rs/webrtc/issues/1) to track the major milestones and releases. [Examples](https://github.com/webrtc-rs/examples/blob/main/examples/README.md) provide code samples to show how to use webrtc-rs to build media and data channel applications. ## Features

WebRTC
Media Interceptor Data
RTP RTCP SRTP SCTP
DTLS
mDNS STUN TURN ICE
SDP Util

WebRTC Crates Dependency Graph

WebRTC Stack

## Building ### Toolchain webrtc-rs currently requires Rust 1.57.0+ to build. ### Monorepo Setup All webrtc dependent crates and examples are added as [submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) of this repository under /crates/ or /examples/. ``` git clone https://github.com/webrtc-rs/webrtc cd webrtc git submodule update --init --recursive ``` To build all webrtc dependent crates: ``` cd webrtc/crates cargo build [or clippy or test or fmt] ``` To build all webrtc examples: ``` cd webrtc/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: ``` cd webrtc cargo build [or clippy or test or fmt] ``` ### Testing with Local Dependencies Follows this instruction about how to replace dependencies with patch for local testing: https://doc.rust-lang.org/edition-guide/rust-2018/cargo-and-crates-io/replacing-dependencies-with-patch.html ## 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!!!