/webrtc

A pure Rust implementation of WebRTC

Primary LanguageRustApache License 2.0Apache-2.0

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

Silver Sponsors:
Stream Chat
Bronze Sponsors:
embark
AdrianEddy

Table of Content

Overview

WebRTC.rs is a pure Rust implementation of WebRTC stack, which rewrites Pion stack in Rust.

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.52.1+ to build.

Monorepo Setup

All webrtc dependent crates are added as submodules of this repository under /crates/.

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 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!!!