11 resources that will help you start with WebRTC

Michał ŚledźJun 26, 20244 min read

Hi, I am Michał and for the past 4 years, I have been working with the Membrane Team creating WebRTC dev solutions, including Fishjam Media Server and Fishjam Cloud. Currently, I am focused on Elixir WebRTC — a W3C-compliant WebRTC implementation written almost entirely in pure Elixir.

Throughout my journey, I collected a list of resources that may help you understand WebRTC in more detail, and I’d love to share them with you. Let’s see what I’ve found!

  1. WebRTC samples — from the website — are a collection of small samples demonstrating various parts of the WebRTC APIs. Among others, you can find there how to obtain access to your audio and video devices, enumerate and switch between them, establish a basic P2P connection between two web browser tabs, or exchange arbitrary data using data channels. It’s a must-read link for every WebRTC developer.
  2. WebRTC For The Curious — a technical book focused on collecting undocumented WebRTC knowledge and summarizing RFC documents. Good for more advanced WebRTC users who are “looking for more”. Initiated by Pion’s creator — Sean DuBois.
  3. Mastering Transceivers — this one I wrote myself. When working on Elixir WebRTC, together with Łukasz Wala, we spent days and nights reading W3C specifications. This guide aims to share our knowledge on everything you can achieve with the Transceivers API. It consists of a collection of examples, where each example has a dedicated fiddle.js code snippet as well as its counterpart in Elixir.
  4. WebRTC MDN tutorial — a good entry point to WebRTC and its JavaScript API. Look at this complicated diagram!
  5. webrtc.org — official WebRTC page. You can find there the GUIDES tab with a couple of helpful examples, straight from WebRTC developers.
  6. webrtcH4cKS — the best WebRTC blog I have ever seen. News, experiments, and learning resources. Perfect for your coffee, bed, or breakfast. Definitely take a look at the article on the bandwidth probing in WebRTC. Not everything in the WebRTC world is standardized. In the case of bandwidth estimation (BWE), there is a very old GCC (Google Congestion Control) draft RFC that has never been finished. As far as I know, a lot of WebRTC implementations come with their own CC solutions. Some time ago, Lorenzo Miniero gave a great talk at RTC.ON explaining BWE in Janus WebRTC Server. You can see it here and the accompanying blog post here.
  7. Advancing WebRTC — the second-best WebRTC blog. Although some articles are pretty old, they explain very important concepts in detail. Blog posts are very often written by WebRTC spec editors. The two that I recommend in particular are Exploring RTCRtpTransceiver and The Evolution of WebRTC 1.0. Definitely must-read positions if you want to understand design decisions that stay behind WebRTC API.
  8. ”Unified Plan” Transition Guide — anything that is not an RFC or W3C document can’t be taken as something that you can rely on. Even RFCs can sometimes conflict with each other. A good example here is JSEP and BUNDLE specs (link). However, to have some background or context on the differences between SDP “Plan B” and “Unified Plan”, I really recommend taking a look at this document. It’s a good complement to the mentioned Evolution of WebRTC 1.0.
  9. WebRTC Experiments — a couple of webRTC experiments and live demos. Check out the one that allows for creating client-side WebRTC recordings — RecordRTC.
  10. Real-time communication with WebRTC and WebRTC: Real-time Audio/Video and P2P in HTML5 — two great videos from Justin Uberti and Sam Dutton explaining what WebRTC really is. A good choice for those who prefer listening rather than reading :)
  11. kSimulcastFormats* — a very useful table describing possible simulcast layers configurations i.e. how many different video resolutions you can send and at what bitrates.

Real-time communication is a really complex topic. In the beginning, you might feel overwhelmed by the number of different acronyms, protocols, and terms. Don’t try to understand all of them at once and what’s more important, don’t hesitate to ask any questions you have. Join us at video-dev slack (channel #webrtc), Gmail group discuss-webrtc, or Software Mansion Discord (Membrane section) where we talk about WebRTC, streaming, and multimedia development in general.

Happy streaming!