On June 15, 2022, Arin welcomed Sean DuBois back to WebRTC Live for another appearance on the show. Sean has become a leading advocate for open source in the WebRTC community through his work as the creator of Pion and other WebRTC knowledge sharing projects. He currently works as a Developer at Twitch. He has also worked as a Developer at Apple, Amazon Web Services (AWS), and Lightstream, all in different types of real-time communications roles.
Sean shared that he started Pion.ly about 5 years ago after asking the questions, “How can we make WebRTC easier and more accessible?” and, “How can I unblock people doing interesting things?” When he started writing this WebRTC implementation in the Go programming language, he really had nothing particular in mind. His guiding use case was, “I don’t know your problem.” He looked at it more as a general purpose WebRTC implementation that could be used in a wide variety of use cases.
WebRTC For the Curious
WebRTCForTheCurious.com is another of Sean’s projects he started because of the lack of well-maintained documentation on WebRTC. In addition to information on WebRTC, the site now includes interviews with some of the founders of the different protocols used. Sean hopes to see the site also grow to include more “real world” implementation advice since so much of that experiential knowledge tends to stay within the private companies building their own APIs and is not shared publicly.
WebRTCWork.com was founded to help demonstrate the wide range of projects and companies working in this space, which will make WebRTC more accessible for employers, job seekers, and those generally searching for information. It allows people to see the landscape of what is happening in the WebRTC community.
Sean recently joined Twitch where he is helping implement and problem-solve many projects using their existing Pion implementation. A notable one involves massively-scaled Go ingesting RTMP traffic and adding WebRTC to these servers. Also augmenting existing technology with WebRTC.
He talked about many WebRTC use cases, specifically mentioning Livekit, an open source WebRTC infrastructure project. He also talked about use cases in robotics, hospitals, agriculture. Other use cases are data channel specific like the Tor Project and WebTorrent. Although we didn’t discuss it in the episode, if you’re interested in seeing more WebRTC use cases and Pion specific examples, Sean gave a very interesting Pion presentation at GoLang 2021 that shows many use cases.
Sean also discussed a Matrix SFU to SFU project (cascaded distributed SFUs). It’s hard to scale and manage SFUs so he is excited to participate in this project to build a way to cluster SFUs across different WebRTC implementations.
A ton of questions for Sean!
Arin – and our viewers – had a whole host of questions for Sean as listed below, Some we’ve added the answers, for the rest we encourage you to watch the episode! Also visit github.com/pion/awesome-pion!
- What makes the most difference in WebRTC performance?
- Careful attention to cryptography primitives you are using (hardware-acceleration encryption, for example)
- Don’t copy data or streams around in your code needlessly
- Better use of networking primitives
- Misconfigured networking issues leading to connectivity problems
- Is Twitch using OBS for streaming gamers and gameplay? Chrome screen share isn’t steady/reliable for gameplay at 1080p/30fps. Sean noted OBS is getting native WebRTC support via WHIP, which can cut out the Chrome dependency.
- What do you think about the Web Codecs API?
- Do you have any recommendations for a developer who wants to start a similar journey to Pion, implementing the WebRTC stack from scratch, but in another language?
- What do you tell people who say WebRTC is too challenging to work with?
- Now that Pion has been around awhile, what are some of the best practices you have learned about maintaining a WebRTC application? How do you go about maintaining Pion and the community and has that gotten more complex as it has gotten bigger?
- Given the lack of any native a/v library in Go, what would you suggest to use in order to implement an A/V transcoding solution (eg. MCU, recording)?
- How do you see teams running the Pion project with Kubernetes? I always run into the issue that you need to open a lot of UDP ports. And chance to get incoming traffic on just one port?
- Do you know any methods for automatic tests, such as Selenium or Gauge? For example starting a call and measuring latency and video quality?
- We wanted to use Parsec in the browser, but they got sold. Any other options for in-browser connecting to game clients? Sean recommends checking out CloudGame, and CloudMorph. Another promising project is Neko.
UP NEXT! WebRTC Live #69: What Have Our Own Experts Learned Lately?
Wednesday, July 20 at 12:30pm Eastern.
Do you have a topic that you would like to see discussed on WebRTC Live? Let us know by emailing firstname.lastname@example.org.
Never miss an episode of WebRTC Live, our webinar series hosted by WebRTC.ventures Founder and CEO, Arin Sime. We feature the latest use cases and technical updates to this increasingly popular coding standard for live video. Watch past episodes on our WebRTC Live page, our YouTube channel, and on our blog. Better yet, use the form in the sidebar to join our mailing list and be among the first to hear about upcoming episodes and the latest news in WebRTC!