# webrtc-rs/webrtc

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/webrtc-rs-webrtc).**

4,947 stars · 462 forks · Rust · apache-2.0

## Links

- GitHub: https://github.com/webrtc-rs/webrtc
- Homepage: https://webrtc.rs
- awesome-repositories: https://awesome-repositories.com/repository/webrtc-rs-webrtc.md

## Topics

`async` `rtc` `rust` `webrtc`

## Description

This library provides a complete implementation of the WebRTC protocol suite in Rust, enabling peer-to-peer audio, video, and data channels with an asynchronous, Rust-native stack. Its architecture separates protocol logic from I/O, giving developers control over threading and scheduling while the library manages the protocol state. The stack is built to be modular, supporting data channel multiplexing over a single SCTP association, an event-driven callback interface for responding to connection changes, and an interceptor pipeline for processing media packets without altering core protocol code.

What distinguishes this library is its emphasis on extensibility and privacy-aware design. Media streams can carry multiple simulcast or SVC encodings per track, allowing receivers to select quality based on network conditions, and the interceptor framework lets applications inspect, modify, or redirect media packets mid-stream. During peer connection establishment, the library uses mDNS to replace local IP addresses with `.local` hostnames, preventing address leakage. Connection statistics such as packet loss, bandwidth, and round-trip time are collected in real time for monitoring and feedback, while RTCP signals inform adaptive bitrate adjustments.

The library manages the full WebRTC protocol stack, from ICE-based peer connection establishment to server-side media relay via a selective forwarding unit for multi-participant calls. Its event handling uses structured traits rather than raw callbacks, and non-blocking I/O supports many simultaneous connections. To simplify testing, the architectural decoupling of protocol logic from transport lets developers run deterministic tests using virtual time, independent of real network I/O.

## Tags

### Networking & Communication

- [ICE-Based Peer Connection Managers](https://awesome-repositories.com/f/networking-communication/webrtc-media-orchestration/peer-connectivity/ice-based-peer-connection-managers.md) — Establishes peer-to-peer connections using ICE with firewall traversal, signaling control, and threading management.
- [Custom Data Channels](https://awesome-repositories.com/f/networking-communication/custom-data-channels.md) — Exchanges arbitrary binary or text messages between peers over reliable or unreliable data channels in real time.
- [WebRTC Protocol Stack Management](https://awesome-repositories.com/f/networking-communication/multi-protocol-connection-managers/radio-stack-managers/webrtc-protocol-stack-management.md) — Manages the full protocol stack for peer-to-peer media and data transport over real-time connections. ([source](https://webrtc.rs/blog/2026/01/31/async-friendly-webrtc-architecture.html))
- [Data Channel Establishment](https://awesome-repositories.com/f/networking-communication/peer-to-peer-data-exchange/data-channel-establishment.md) — Implements the SCTP-based data channel establishment protocol for peer-to-peer communication. ([source](https://cdn.jsdelivr.net/gh/webrtc-rs/webrtc@master/README.md))
- [Peer-to-Peer Media Libraries](https://awesome-repositories.com/f/networking-communication/peer-to-peer-tunneling/peer-to-peer-media-libraries.md) — Enables direct peer-to-peer audio, video, and data channels between browsers and native applications.
- [Real-Time Communication APIs](https://awesome-repositories.com/f/networking-communication/real-time-communication-apis.md) — Provides standard WebRTC APIs that let applications interface with real-time communication via familiar patterns. ([source](https://webrtc.rs/blog/2026/01/31/async-friendly-webrtc-architecture.html))
- [SCTP](https://awesome-repositories.com/f/networking-communication/stream-multiplexers/sctp.md) — Provides SCTP-based multiplexing of multiple data channels over a single association for WebRTC peer connections.
- [Peer Connectivity](https://awesome-repositories.com/f/networking-communication/webrtc-media-orchestration/peer-connectivity.md) — Provides ICE-based peer connectivity for traversing firewalls and establishing direct links. ([source](https://docs.rs/webrtc))
- [Privacy-Preserving mDNS Resolvers](https://awesome-repositories.com/f/networking-communication/host-networking-services/network-service-advertisers/mdns-implementation-configuration/privacy-preserving-mdns-resolvers.md) — Uses mDNS to replace local IPs with .local hostnames during peer discovery to preserve device address privacy.
- [mDNS Privacy Resolvers](https://awesome-repositories.com/f/networking-communication/local-peer-discovery/mdns-privacy-resolvers.md) — Uses mDNS to replace local IPs with .local hostnames during ICE candidate exchange to prevent address leakage.
- [Media Relays](https://awesome-repositories.com/f/networking-communication/multi-protocol-engines/media-relays.md) — Relays media streams among multiple participants using a server-side selective forwarding unit for group calls. ([source](https://webrtc.rs/))
- [mDNS Private](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/mdns-private.md) — Uses mDNS to resolve IP addresses without exposing them, preserving privacy during peer discovery. ([source](https://webrtc.rs/blog/2026/01/31/async-friendly-webrtc-architecture.html))
- [Transport-Agnostic Protocol Testing](https://awesome-repositories.com/f/networking-communication/protocol-agnostic-transport-layers/transport-agnostic-protocol-testing.md) — Separates protocol logic from transport operations, enabling independent testing on different transports. ([source](https://webrtc.rs))
- [Stream Multiplexers](https://awesome-repositories.com/f/networking-communication/stream-multiplexers.md) — Multiplexes multiple logical data streams over a single SCTP association for efficient data channel communication. ([source](https://docs.rs/webrtc))

### Web Development

- [WebRTC Stack Construction](https://awesome-repositories.com/f/web-development/full-stack-frameworks/webrtc-stack-construction.md) — Builds a complete real-time communication stack from low-level protocols to media relay infrastructure. ([source](https://webrtc.rs))
- [WebRTC Configurations](https://awesome-repositories.com/f/web-development/webrtc-configurations.md) — Implements the full WebRTC protocol suite for peer-to-peer real-time communication and data exchange.
- [Async Protocol Stacks](https://awesome-repositories.com/f/web-development/webrtc-configurations/async-protocol-stacks.md) — Provides an asynchronous WebRTC stack that separates protocol logic from I/O for flexible threading and testability.
- [Rust WebRTC Implementations](https://awesome-repositories.com/f/web-development/webrtc-configurations/rust-webrtc-implementations.md) — Provides a complete Rust-native WebRTC implementation with async I/O and protocol/transport separation.

### Graphics & Multimedia

- [Simulcast and SVC Encodings](https://awesome-repositories.com/f/graphics-multimedia/image-format-specifications/quality-encoding/simulcast-and-svc-encodings.md) — Sends multiple simulcast or SVC encodings per track so receivers can select or switch quality based on network conditions. ([source](https://webrtc.rs/blog/index.html))
- [Real-Time Media Streaming](https://awesome-repositories.com/f/graphics-multimedia/real-time-media-streaming.md) — Sends and receives audio and video tracks with support for multiple encodings and adaptive bitrate adjustments.
- [Peer-to-Peer Streaming](https://awesome-repositories.com/f/graphics-multimedia/streaming-distribution/streaming-broadcasting/broadcasting-streaming/live-video-broadcasting/peer-to-peer-streaming.md) — Orchestrates peer-to-peer audio, video, and data exchange by managing the protocol stack and media transport. ([source](https://webrtc.rs/))
- [Customizable Media Packet Interceptors](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing/streaming-network-frameworks/media-stream-processing/media-stream-injection/customizable-media-packet-interceptors.md) — Provides a customizable interceptor framework for inspecting, modifying, or redirecting media packets mid-stream.

### Operating Systems & Systems Programming

- [Protocol-Transport Decoupling Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/transport-abstraction-layers/multi-protocol-i-o-abstraction-layers/protocol-transport-decoupling-layers.md) — Decouples WebRTC protocol logic from transport I/O, giving callers full control over threading and scheduling.

### Software Engineering & Architecture

- [Event-Driven Callbacks](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-callbacks.md) — Exposes structured typed callbacks for responding to connection state changes without coupling to internal state machines.
- [Protocol I/O Decoupling](https://awesome-repositories.com/f/software-engineering-architecture/file-i-o-decoupling-patterns/protocol-i-o-decoupling.md) — Runs all protocol logic internally while leaving I/O to the caller, enabling full control over threading and scheduling. ([source](https://webrtc.rs/blog/index.html))
- [Interceptor Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/domain-specific/media-plugin-architectures/interceptor-pipelines.md) — Passes media packets through a customizable interceptor pipeline for inspection, modification, or redirection.
- [Non-blocking I/O](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-task-execution/non-blocking-i-o.md) — Uses non-blocking I/O to manage many simultaneous WebRTC connections without blocking threads. ([source](https://webrtc.rs))

### Artificial Intelligence & ML

- [RTCP](https://awesome-repositories.com/f/artificial-intelligence-ml/feedback-loops/rtcp.md) — Adjusts streaming quality and recovers lost data using RTCP feedback signals from the network. ([source](https://webrtc.rs/blog/index.html))

### Business & Productivity Software

- [WebRTC Connection Statistics Monitors](https://awesome-repositories.com/f/business-productivity-software/real-time-monitoring/webrtc-connection-statistics-monitors.md) — Tracks real-time metrics like data volume and round-trip time during active WebRTC connections. ([source](https://docs.rs/webrtc))

### Security & Cryptography

- [mDNS IP Address Privacy](https://awesome-repositories.com/f/security-cryptography/privacy-preserving-utilities/mdns-ip-address-privacy.md) — Replaces local IP addresses with .local hostnames via mDNS to preserve privacy during peer connections. ([source](https://webrtc.rs/blog/index.html))

### System Administration & Monitoring

- [Per-Connection Traffic Metrics](https://awesome-repositories.com/f/system-administration-monitoring/system-statistics-collection/per-connection-traffic-metrics.md) — Collects real-time per-connection metrics on packet loss, bandwidth, and round-trip time for monitoring and feedback.

### Testing & Quality Assurance

- [Virtual Time Testing](https://awesome-repositories.com/f/testing-quality-assurance/virtual-time-testing.md) — Tests protocol components deterministically without real network I/O by using controlled virtual time. ([source](https://webrtc.rs/blog/2026/01/31/async-friendly-webrtc-architecture.html))

### User Interface & Experience

- [Trait-Based](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/event-handling/trait-based.md) — Provides trait-based event handling that replaces raw callbacks with structured interfaces for better testability. ([source](https://webrtc.rs/blog/index.html))
