WolverinDEV / rust-webrtc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WebRTC-Rust

WebRTC-Rust is a WebRTC implementation in Rust, depending on libnice, srtp and usrsctp.

Features

  • Application channels (aka. Data Channels)
    • Dynamically open new channels
    • Dynamically close remote and local channels
    • Dynamically receive remote channels
  • Media streams (Audio and Video)
    • Outgoing (Send)
      • Create streams on the fly with an automatic negotiation algorithm
      • Automatically respond to retransmission request from the peer (Using nack)
    • Incoming (Receiving)
      • Receive audio and video data
      • Automatically request lost packets (via generic NACKs)
  • Full session renegotiation support
  • Full control of received and send data
  • No unwanted overhead (e.g. Video de/encoders)

Building

Windows (Currently notes only)

Install OpenSSL via vcpkg: vcpkg install openssl:x64-windows-static-md

Required libraries:

  • ffi-7.dll (in libnice)
  • gio-2.0-0.ddl (in libnice)
  • glib-2.0-0.dll (in libnice)
  • gmodule-2.0-0.dll (in libnice)
  • gobject-2.0-0.dll (in libnice)
  • intl.dll (in libnice)
  • nice-10.dll (in libnice)
  • srtp2-1.dll (in srtp2)
  • usrsctp-1.dll (in usrsctp)
  • z.dll (in libnice)

Todos

Application channels (DataChannel)

  • Allowing local channels to be created without a connected peer
  • Dynamically request more data channels when exceeding the initial requested amount
  • Proper handling in case of an SCTP shutdown

Usefully RFCs

  • rfc6458 Sockets API Extensions for the Stream Control Transmission Protocol (SCTP)
  • rfc5761 Multiplexing RTP Data and Control Packets on a Single Port
  • rfc4317 Session Description Protocol (SDP) Offer/Answer Examples
  • rfc3264 An Offer/Answer Model with the Session Description Protocol (SDP)
  • rfc4566 SDP: Session Description Protocol
  • rfc3550 RTP: A Transport Protocol for Real-Time Applications
  • rfc4585 Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)

Video

  • rfc7741 RTP Payload Format for VP8 Video

About


Languages

Language:Rust 91.5%Language:TypeScript 8.3%Language:JavaScript 0.2%