AIORTC: An Asynchronous WebRTC Framework with Jeremy Lainé

The Python Podcast.__init__

Episode | Podcast

Date: Sun, 23 Dec 2018 22:00:00 -0500

<h3>Summary</h3> <p>Real-time communication over the internet is an amazing feat of modern engineering. The protocol that powers a majority of video calling platforms is WebRTC. In this episode Jeremy Lainé explains why he wrote a Python implementation of this protocol in the form of AIORTC. He also discusses how it works, how you can use it in your own projects, and what he has planned for the future.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.&#95;&#95;init&#95;&#95;, the podcast about Python and the people who make it great.</li> <li>When you&#8217;re ready to launch your next app or want to try a project you hear about on the show, you&#8217;ll need somewhere to deploy it, so check out Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you&#8217;ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/linode</a> to get a $20 credit and launch a new server in under a minute.</li> <li>And to keep track of how your team is progressing on building new features and squashing bugs, you need a project management system designed by software engineers, for software engineers. Clubhouse lets you craft a workflow that fits your style, including per-team tasks, cross-project epics, a large suite of pre-built integrations, and a simple API for crafting your own. Podcast.&#95;&#95;init&#95;&#95; listeners get 2 months free on any plan by going to <a href="https://www.pythonpodcast.com/clubhouse?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/clubhouse</a> today and signing up for a trial.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at <a href="https://twtiter.com/Podcast&#095;&#095;init&#095;&#095;?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@Podcast&#95;&#95;init&#95;&#95;</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, or <a href="https://play.google.com/music/m/I7ogju4xv6adasgqz6545jndgsy?t=Podcastinit_-_Python_and_the_people_who_make_it_great&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Google Play Music</a>, tell your friends and co-workers, and share it on social media.</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/chat</a></li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Jeremy Lainé about AIORTC, an asynchronous implementation of the WebRTC and ObjectRTC protocols in Python</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you start by explaining what the WebRTC and ObjectRTC protocols are? <ul> <li>What are some of the main use cases for these protocols?</li> </ul> </li> <li>What is AIORTC and what was your motivation for creating it? <ul> <li>How does it compare to other implementations of the RTC protocols?</li> <li>Why do you think there haven&#8217;t been any other Python implementations?</li> </ul> </li> <li>What are some of the benefits of having a Python implementation of the RTC protocol?</li> <li>How is AIORTC implemented? <ul> <li>What have been some of the most difficult or challenging aspects of implementing a WebRTC compliant library?</li> <li>What are some of the most interesting or useful lessons that you have learned in the process?</li> </ul> </li> <li>What is involved in building an application on top of AIORTC? <ul> <li>What would be required to integrate AIORTC into an existing application built with something such as Flask or Django?</li> </ul> </li> <li>What are some of the most interesting uses of AIORTC that you have seen?</li> <li>What are some of the projects that you would like to build with AIORTC?</li> <li>What are some cases where it would make more sense to use a different library or framework for your WebRTC projects?</li> <li>What are your plans for the future of AIORTC?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://github.com/jlaine?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">jlaine</a> on GitHub</li> <li><a href="https://www.jerryweb.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Website</a></li> <li><a href="https://twitter.com/JeremyLaine?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@JeremyLaine</a> on Twitter</li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://www.tengger-cavalry.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Tengger Cavalry</a></li> </ul> </li> <li>Jeremy <ul> <li><a href="https://github.com/mikeboers/PyAV?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PyAV</a></li> <li><a href="http://mikeboers.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Mike Boers</a></li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://aiortc.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">AIORTC</a></li> <li><a href="https://webrtc.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">WebRTC</a></li> <li><a href="https://en.wikipedia.org/wiki/Electrical_engineering?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Electrical Engineering</a></li> <li>[C](https://en.wikipedia.org/wiki/C(programminglanguage)?utmsource=rss&amp;utmmedium=rss</li> <li><a href="https://en.wikipedia.org/wiki/C%2B%2B?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">C++</a></li> <li><a href="http://www.php.net/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PHP</a></li> <li><a href="https://www.ruby-lang.org/en/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Ruby</a></li> <li><a href="https://en.wikipedia.org/wiki/STUN?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">STUN (Session Traversal Utilities for NAT)</a></li> <li><a href="https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">TURN (Traversal Using Relays around NAT)</a></li> <li><a href="https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">ICE (Internet Connectivity Establishment)</a></li> <li><a href="https://en.wikipedia.org/wiki/Transport_Layer_Security?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">TLS (Transport Layer Security)</a></li> <li><a href="https://en.wikipedia.org/wiki/Real-time_Transport_Protocol?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">RTP (Real-time Transport Protocol)</a></li> <li><a href="https://zencastr.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Zencastr</a></li> <li><a href="https://jitsi.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Jitsi</a></li> <li><a href="https://github.com/rawrtc/rawrtc?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">RawRTC</a></li> <li><a href="https://docs.python.org/3/library/asyncio.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">AsyncIO</a></li> <li><a href="https://github.com/jlaine/aioice?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">AIOICE</a></li> <li><a href="https://cryptography.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Cryptography</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-93-cryptography-with-paul-kehrer/?utm_source=rss&amp;utm_medium=rss">Podcast.<strong>init</strong> Episode</a></li> </ul> </li> <li><a href="https://opencv.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">OpenCV</a></li> <li><a href="https://github.com/mikeboers/PyAV?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PyAV</a></li> <li><a href="https://www.ffmpeg.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">FFMPEG</a></li> <li><a href="https://en.wikipedia.org/wiki/Edge_detection?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Edge Detection</a></li> <li><a href="https://www.asterisk.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Asterisk</a></li> <li><a href="https://www.raspberrypi.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Raspberry Pi</a></li> <li><a href="https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Datagram Transport Security</a></li> <li><a href="https://www.mozilla.org/en-US/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Mozilla</a></li> <li><a href="https://en.wikipedia.org/wiki/Augmented_reality?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Augmented Reality</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Faiortc-with-jeremy-laine-episode-191%2F&amp;action_name=AIORTC%3A+An+Asynchronous+WebRTC+Framework+with+Jeremy+Lain%C3%A9+-+Episode+191&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>