1d23921b8Srainliu<h1 align="center"> 2f0a3362bSRusty Rain <a href="https://webrtc.rs"><img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/webrtc.rs.png" alt="WebRTC.rs"></a> 3d23921b8Srainliu <br> 4d23921b8Srainliu</h1> 5f5d0b956SRain Liu<p align="center"> 6f5d0b956SRain Liu <a href="https://github.com/webrtc-rs/webrtc/actions"> 79ade2992SRain Liu <img src="https://github.com/webrtc-rs/webrtc/workflows/webrtc/badge.svg?branch=master"> 8f5d0b956SRain Liu </a> 9c8a3a090SRain Liu <a href="https://codecov.io/gh/webrtc-rs/webrtc"> 10c8a3a090SRain Liu <img src="https://codecov.io/gh/webrtc-rs/webrtc/branch/master/graph/badge.svg"> 11c8a3a090SRain Liu </a> 12f3ca957cSRain Liu <a href="https://deps.rs/repo/github/webrtc-rs/webrtc"> 13f3ca957cSRain Liu <img src="https://deps.rs/repo/github/webrtc-rs/webrtc/status.svg"> 14f3ca957cSRain Liu </a> 15cbe8eb56SRain Liu <a href="https://crates.io/crates/webrtc"> 16cbe8eb56SRain Liu <img src="https://img.shields.io/crates/v/webrtc.svg"> 17081e6eb0SRain Liu </a> 18cbe8eb56SRain Liu <a href="https://docs.rs/webrtc"> 19cbe8eb56SRain Liu <img src="https://docs.rs/webrtc/badge.svg"> 201ba20911SRain Liu </a> 2172115b64SRain <a href="https://doc.rust-lang.org/1.6.0/complement-project-faq.html#why-dual-mitasl2-license"> 22096b5480SRain <img src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue" alt="License: MIT/Apache 2.0"> 23e0d8d264SRain </a> 24f4a40011SKonstantin Itskov <a href="https://discord.gg/4Ju8UHdXMs"> 25f4a40011SKonstantin Itskov <img src="https://img.shields.io/discord/800204819540869120?logo=discord" alt="Discord"> 26f4a40011SKonstantin Itskov </a> 272481a4efSRain Liu <a href="https://twitter.com/WebRTCrs"> 2884faa213SRain Liu <img src="https://img.shields.io/twitter/url/https/twitter.com/webrtcrs.svg?style=social&label=%40WebRTCrs" alt="Twitter"> 2987b564a9SRain Liu </a> 30f5d0b956SRain Liu</p> 31f5d0b956SRain Liu<p align="center"> 32feec9afcSrainliu A pure Rust implementation of WebRTC stack. Rewrite <a href="http://Pion.ly">Pion</a> WebRTC stack in Rust 33f5d0b956SRain Liu</p> 3484ce2192SRain Liu 35fd0b36aeSRain Liu<p align="center"> 36fd0b36aeSRain Liu<strong>Sponsored with by</strong><br> 37fd0b36aeSRain Liu</p> 38fd0b36aeSRain Liu<p align="center"> 39016b94c9SRain Liu<strong>Gold Sponsors:</strong><br> 40016b94c9SRain Liu<a href="https://www.parity.io/" target="_blank"> 41f0a3362bSRusty Rain<img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/parity.png" style="height:75px;" alt="Parity Technologies"> 42016b94c9SRain Liu</a><br> 43016b94c9SRain Liu<p align="center"> 4412964a18SRain Liu<strong>Silver Sponsors:</strong><br> 451834ab2dSNick Parsons<a href="https://getstream.io/?utm_source=https://github.com/webrtc-rs/webrtc&utm_medium=github&utm_content=developer&utm_term=webrtc" target="_blank"> 46fd0b36aeSRain Liu<img src="https://stream-blog-v2.imgix.net/blog/wp-content/uploads/f7401112f41742c4e173c30d4f318cb8/stream_logo_white.png?h=50" alt="Stream Chat"> 4712964a18SRain Liu</a><br> 4812964a18SRain Liu<strong>Bronze Sponsors:</strong><br> 49f0a3362bSRusty Rain<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> 5018eafa1aSRusty Rain<a href="https://github.com/AdrianEddy" target="_blank">AdrianEddy</a><br> 5148be92c0SJasper<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> 52fd0b36aeSRain Liu</p> 53fd0b36aeSRain Liu 543c106010SRain Liu<details> 553c106010SRain Liu<summary><b>Table of Content</b></summary> 563c106010SRain Liu 573c106010SRain Liu- [Overview](#overview) 583c106010SRain Liu- [Features](#features) 593c106010SRain Liu- [Building](#building) 60befb1e2cSVincent Esche - [Toolchain](#toolchain) 617590d07eSRain Liu - [Monorepo Setup](#monorepo-setup) 62e165600eSRain- [Open Source License](#open-source-license) 633c106010SRain Liu- [Contributing](#contributing) 643c106010SRain Liu 65befb1e2cSVincent Esche</details> 663c106010SRain Liu 673c106010SRain Liu## Overview 683c106010SRain Liu 69d9c1eca6SRusty RainWebRTC.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. 709b31d786SRain LiuThis 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. 71c526d2d1SJosé Mélançon[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. 723c106010SRain Liu 733c106010SRain Liu## Features 743c106010SRain Liu 752ac863f9Srainliu<p align="center"> 76f0a3362bSRusty Rain <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> 7712419ebeSRain Liu <br> 78f0a3362bSRusty Rain <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> 79f0a3362bSRusty Rain <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> 80f0a3362bSRusty Rain <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> 81bd12e9bfSrainliu <br> 82f0a3362bSRusty Rain <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> 83f0a3362bSRusty Rain <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> 84f0a3362bSRusty Rain <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> 85f0a3362bSRusty Rain <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> 86bd12e9bfSrainliu <br> 87f0a3362bSRusty Rain <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> 88bd12e9bfSrainliu <br> 89f0a3362bSRusty Rain <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> 90f0a3362bSRusty Rain <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> 91f0a3362bSRusty Rain <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> 92f0a3362bSRusty Rain <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> 93bd12e9bfSrainliu <br> 94f0a3362bSRusty Rain <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> 95f0a3362bSRusty Rain <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> 9629b75cb7Srainliu</p> 978ac9013eSrainliu<p align="center"> 98f0a3362bSRusty Rain <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/webrtc_crates_dep_graph.png" alt="WebRTC Crates Dependency Graph"> 998ac9013eSrainliu</p> 1008ac9013eSrainliu<p align="center"> 101f0a3362bSRusty Rain <img src="https://raw.githubusercontent.com/webrtc-rs/webrtc/master/doc/webrtc_stack.png" alt="WebRTC Stack"> 1028ac9013eSrainliu</p> 103feec9afcSrainliu 104fd0b36aeSRain Liu## Building 105feec9afcSrainliu 10663e58f0bSRain Liu### Toolchain 107feec9afcSrainliu 108*e2bbf745Syngrtc**Minimum Supported Rust Version:** `1.65.0` 109de6e781eSHugo Tunius 110de6e781eSHugo TuniusOur 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. 111de6e781eSHugo Tunius 112de6e781eSHugo Tunius**Note:** Changes to the minimum supported version are not consider breaking from a [semver](https://semver.org/) perspective. 113fd0b36aeSRain Liu 1147590d07eSRain Liu### Monorepo Setup 115fd0b36aeSRain Liu 11624564367SHugo TuniusAll webrtc dependent crates and examples are included in this repository at the top level in a Cargo workspace. 11715c0313fSrainliu 1182ad408f4SRain LiuTo build all webrtc examples: 1192ad408f4SRain Liu 12023f41ab9SVincent Esche```shell 12124564367SHugo Tuniuscd examples 122ee7d088eSRain Liucargo test # build all examples (maybe very slow) 123ee7d088eSRain Liu#[ or just build single example (much faster) 124c602242fSPete Dohertycargo build --example play-from-disk-vpx # build play-from-disk-vpx example only 125c602242fSPete Dohertycargo build --example play-from-disk-h264 # build play-from-disk-h264 example only 1262ad408f4SRain Liu#... 1272ad408f4SRain Liu#] 1282ad408f4SRain Liu``` 1292ad408f4SRain Liu 13015c0313fSrainliuTo build webrtc crate: 13115c0313fSrainliu 13223f41ab9SVincent Esche```shell 13315c0313fSrainliucargo build [or clippy or test or fmt] 13415c0313fSrainliu``` 13515c0313fSrainliu 136e165600eSRain## Open Source License 137c42a0029SRain 1384d116d44SVincent EscheDual 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. 139953a5085SRain Liu 1403c106010SRain Liu## Contributing 1410186b0a5SVincent Esche 1423c106010SRain LiuContributors or Pull Requests are Welcome!!! 143