On April 20, 2022, Arin welcomed Dr. Karl Stolley for a progress report on WebRTC browser implementation.
Karl is an Associate Professor of Information Technology & Management Illinois Institute of Technology where he teaches undergraduate and graduate courses on a range of web development topics, including one on WebRTC. He is also the author of Programming WebRTC: Build Real-Time Streaming Applications for the Web, currently in beta release with Pragmatic Programmers.
Karl began with a warning: As with any specification, WebRTC is not now, or ever in the future, going to enjoy a perfect implementation in any browser. There is no golden point on the horizon we are aiming for. There is always going to be something that lags and it will always be a moving target. Especially with older versions of the browsers always hanging around.
That being said, WebRTC implementations have never been as robust or as uniform as they are right now. This is especially true with the release of Safari 15.4. There is no need or excuse to exclude any major browser on the market when doing WebRTC development. And it is absolutely possible to write code that gracefully supports much older browsers. Karl advocates for always providing at least baseline support.
Below are the lingering issues that Karl reported on in his discussion. His slides are available at ks4.us/webrtc.live.
connectionstatechange
event and connectionState
property (adapter.js will polyfill). BUG: https://bugzil.la/1265827setConfiguration()
; edge case for presenting new set of ICE servers, for example. Resolved bug: https://bugzil.la/1253706icecandidateerror
event (STUN/TURN). BUG: https://bugzil.la/1561441sctp
diagnostic read-only property on data channels. BUG: https://bugzil.la/1278299blob
value for binaryType
on RTC Data Channels. BUG: https://bugs.chromium.org/p/webrtc/issues/detail?id=2276setLocalDescription()
. Of course, plenty of older Safaris in circulation means including manual calls to createOffer()
and createAnswer()
and passing results into setLocalDescription()
.setRemoteDescription()
or manual rollback with setLocalDescription({ type: 'rollback' })
. In other words, perfect negotiation now works on Safari, as of Safari 15.4. Safari 15.4 Release Notes.mute
and unmute
events and event-handler properties on MediaStreamTrack. Still unsafe to use those events because of older Safari implementations, however.autoplay
attribute on streaming videos is not behaving correctly. He’s replicated this consistently on iOS and iPadOS, but intermittently on MacOS. Workaround: a timed, artificial click event that calls play()
on the video element. FIXED, as of Safari 15.3. See https://karlstolley.github.io/safari-15-autoplay/. The episode concluded with a a number of questions from our viewers, including ones on changes in Chrome 100, frameworks for handling WebRTC calls for multiple versions of a browser, native UI and permissions across browsers, performance/latency impacting different binary types, closed captioning, and whether WebRTC adequate for the Metaverse. To hear the answers to these questions and more:
UP NEXT! WebRTC Live #67: Reducing Complexity and Latency for WebRTC with Subspace
Wednesday, May 11 at 12:30pm Eastern.
Register today!
Do you have a topic that you would like to see discussed on WebRTC Live? Let us know by emailing news@webrtc.ventures.
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!