xref: /webrtc/README.md (revision d7232c2b)
1<h1 align="center">
2 <a href="https://webrtc.rs"><img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/webrtc.rs.png" alt="WebRTC.rs"></a>
3 <br>
4</h1>
5<p align="center">
6 <a href="https://github.com/webrtc-rs/webrtc/actions">
7  <img src="https://github.com/webrtc-rs/webrtc/workflows/webrtc/badge.svg?branch=master">
8 </a>
9 <a href="https://codecov.io/gh/webrtc-rs/webrtc">
10  <img src="https://codecov.io/gh/webrtc-rs/webrtc/branch/master/graph/badge.svg">
11 </a>
12 <a href="https://deps.rs/repo/github/webrtc-rs/webrtc">
13  <img src="https://deps.rs/repo/github/webrtc-rs/webrtc/status.svg">
14 </a>
15 <a href="https://crates.io/crates/webrtc">
16  <img src="https://img.shields.io/crates/v/webrtc.svg">
17 </a>
18 <a href="https://docs.rs/webrtc">
19  <img src="https://docs.rs/webrtc/badge.svg">
20 </a>
21 <a href="https://doc.rust-lang.org/1.6.0/complement-project-faq.html#why-dual-mitasl2-license">
22  <img src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue" alt="License: MIT/Apache 2.0">
23 </a>
24 <a href="https://discord.gg/4Ju8UHdXMs">
25  <img src="https://img.shields.io/discord/800204819540869120?logo=discord" alt="Discord">
26 </a>
27 <a href="https://twitter.com/WebRTCrs">
28  <img src="https://img.shields.io/twitter/url/https/twitter.com/webrtcrs.svg?style=social&label=%40WebRTCrs" alt="Twitter">
29 </a>
30</p>
31<p align="center">
32 A pure Rust implementation of WebRTC stack. Rewrite <a href="http://Pion.ly">Pion</a> WebRTC stack in Rust
33</p>
34
35<p align="center">
36<strong>Sponsored with �� by</strong><br>
37</p>
38<p align="center">
39<strong>Gold Sponsors:</strong><br>
40<a href="https://www.parity.io/" target="_blank">
41<img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/parity.png" style="height:75px;" alt="Parity Technologies">
42</a><br>
43<p align="center">
44<strong>Silver Sponsors:</strong><br>
45<a href="https://getstream.io/?utm_source=https://github.com/webrtc-rs/webrtc&utm_medium=github&utm_content=developer&utm_term=webrtc" target="_blank">
46<img src="https://stream-blog-v2.imgix.net/blog/wp-content/uploads/f7401112f41742c4e173c30d4f318cb8/stream_logo_white.png?h=50" alt="Stream Chat">
47</a><br>
48<strong>Bronze Sponsors:</strong><br>
49<a href="https://www.embark-studios.com/" target="_blank"><img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/embark.jpg" alt="embark"></a><br>
50<a href="https://github.com/AdrianEddy" target="_blank">AdrianEddy</a><br>
51<a href="https://avstack.io/?utm_medium=social&utm_source=github&utm_campaign=webrtc-rs-sponsorship" target="_blank"><img src="https://avstack.io/assets/logo-full-lightbg.b880ab9e.svg" alt="AVStack" style="width:12rem"></a>
52</p>
53
54#
55
56<details>
57<summary><b>Table of Content</b></summary>
58
59- [Overview](#overview)
60- [Features](#features)
61- [Building](#building)
62  - [Toolchain(MSRV)](#toolchain)
63  - [Monorepo Setup](#monorepo-setup)
64  - [Testing with Local Dependencies](#testing-with-local-dependencies)
65- [Open Source License](#open-source-license)
66- [Contributing](#contributing)
67</details>
68
69#
70
71## Overview
72
73WebRTC.rs is a pure Rust implementation of WebRTC stack, which rewrites <a href="https://github.com/pion/webrtc/releases/tag/v3.1.5">Pion</a> stack in Rust.
74This 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.
75[Examples](https://github.com/webrtc-rs/webrtc/blob/master/examples/examples/README.md) provide code samples to show how to use webrtc-rs to build media and data channel applications.
76
77## Features
78
79<p align="center">
80    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">WebRTC<a href="https://crates.io/crates/webrtc"><img src="https://img.shields.io/crates/v/webrtc.svg"></a>
81    <br>
82    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">Media<a href="https://crates.io/crates/webrtc-media"><img src="https://img.shields.io/crates/v/webrtc-media.svg"></a>
83    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">Interceptor<a href="https://crates.io/crates/interceptor"><img src="https://img.shields.io/crates/v/interceptor.svg"></a>
84    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">Data<a href="https://crates.io/crates/webrtc-data"><img src="https://img.shields.io/crates/v/webrtc-data.svg"></a>
85    <br>
86    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">RTP<a href="https://crates.io/crates/rtp"><img src="https://img.shields.io/crates/v/rtp.svg"></a>
87    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">RTCP<a href="https://crates.io/crates/rtcp"><img src="https://img.shields.io/crates/v/rtcp.svg"></a>
88    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">SRTP<a href="https://crates.io/crates/webrtc-srtp"><img src="https://img.shields.io/crates/v/webrtc-srtp.svg"></a>
89    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">SCTP<a href="https://crates.io/crates/webrtc-sctp"><img src="https://img.shields.io/crates/v/webrtc-sctp.svg"></a>
90    <br>
91    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">DTLS<a href="https://crates.io/crates/webrtc-dtls"><img src="https://img.shields.io/crates/v/webrtc-dtls.svg"></a>
92    <br>
93    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">mDNS<a href="https://crates.io/crates/webrtc-mdns"><img src="https://img.shields.io/crates/v/webrtc-mdns.svg"></a>
94    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">STUN<a href="https://crates.io/crates/stun"><img src="https://img.shields.io/crates/v/stun.svg"></a>
95    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">TURN<a href="https://crates.io/crates/turn"><img src="https://img.shields.io/crates/v/turn.svg"></a>
96    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">ICE<a href="https://crates.io/crates/webrtc-ice"><img src="https://img.shields.io/crates/v/webrtc-ice.svg"></a>
97    <br>
98    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">SDP<a href="https://crates.io/crates/sdp"><img src="https://img.shields.io/crates/v/sdp.svg"></a>
99    <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/check.png">Util<a href="https://crates.io/crates/webrtc-util"><img src="https://img.shields.io/crates/v/webrtc-util.svg"></a>
100</p>
101<p align="center">
102 <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/webrtc_crates_dep_graph.png" alt="WebRTC Crates Dependency Graph">
103</p>
104<p align="center">
105 <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/webrtc_stack.png" alt="WebRTC Stack">
106</p>
107
108## Building
109
110### Toolchain
111
112**Minimum Supported Rust Version:** `1.60.0`
113
114Our minimum supported rust version(MSRV) policy is to support versions of the compiler released within the last six months. We don't eagerly bump the minimum version we support, instead the minimum will be bumped on a needed by needed basis, usually because downstream dependencies force us to.
115
116**Note:** Changes to the minimum supported version are not consider breaking from a [semver](https://semver.org/) perspective.
117
118### Monorepo Setup
119
120All webrtc dependent crates and examples are included in this repository at the top level in a Cargo workspace.
121
122To build all webrtc examples:
123
124```
125cd examples
126cargo test # build all examples (maybe very slow)
127#[ or just build single example (much faster)
128cargo build --example play-from-disk-vpx # build play-from-disk-vpx example only
129cargo build --example play-from-disk-h264 # build play-from-disk-h264 example only
130#...
131#]
132```
133
134To build webrtc crate:
135
136```
137cargo build [or clippy or test or fmt]
138```
139
140## Open Source License
141Dual 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.
142
143
144## Contributing
145Contributors or Pull Requests are Welcome!!!
146