Web-based conferencing, video calls, online learning, hybrid classrooms, virtual events—all of these methods of online video communication have been rising in prominence and greatly increasing in capabilities. 2020 only served to cement video communication as a must-have for most organizations. WebRTC streaming is one of the key technology frameworks that has enabled this exciting new world of real-time video communication. If you’re unfamiliar with WebRTC video streaming, what it does, and where it’s best used, we hope this guide can break down the fundamentals for you.
- What is WebRTC (Real-time Communication)?
- Who needs it and how does it work?
- Pros vs Cons of WebRTC
- Learn more about Kaltura’s WebRTC services
While not every video application employs a WebRTC streaming framework, it’s a significant enough pillar of the current online video field that a basic understanding of it can only be of benefit to you. So, without further delay…
What is WebRTC (Real-time Communication)?
WebRTC streaming was developed by Google as an open-source project in 2011 (notice those logo colors?) following Google’s acquisition of a provider of real-time voice and video processing for IP networks. As we’ve previously mentioned around here, the early years of widely adopted online video media were marked by numerous products and protocols vying for market share. The grand vision for WebRTC was to make any browser able to handle real-time voice and video communication without plug-ins, or other specialized software or additional downloads. It provides for two-way audio and video communication within web pages by allowing direct peer-to-peer communication.
Before the development of WebRTC, Real-Time Communications (RTC) was still a thing… but RTC even on major, commonly known and used websites (such as Skype, Facebook, Google Hangouts, etc.) frequently required plugins or native applications and all of the updating, installing, and the potential need for user support that came along with that.
WebRTC was created as an alternative to proprietary technologies, a free and open standard for real-time communication that was also plugin-free. It supported browser-to-browser communication (and person-to-person live streaming) through a set of standardized protocols. With WebRTC, users can launch click-to-start video chats from their browsers with data speeds that are fast enough to emulate face-to-face interaction.
While WebRTC video streaming was initially a little slow to be adopted and supported, over the last decade it’s grown substantially. Chrome (…unsurprisingly…), Firefox/Mozilla, and Opera supported WebRTC from early on, but more recently Microsoft and Apple have come onboard and the framework is now compatible across Safari, Microsoft Edge, Android, and iOS. WebRTC has been able to combine the benefits of an open-source, community-driven project with platform support and strong proprietary support from an industry leader. It’s been adopted as an official standard by the World Wide Web Consortium (W3C) and Internet Engineering Task Force (IETF) and is set to continue to evolve and integrate new use cases such as live processing of feeds and Internet of Things (IoT) use.
Who Needs It, and How Does It Work?
The genius of the framework is in eliminating the need for additional web servers, equipment, or software. You have likely already experienced a primary usage scenario for WebRTC if you have attended any virtual meetings in URL-based meeting rooms over the past year. WebRTC also avoids the major pitfall of the (now obsolete) Flash video via the ability to be played back on any HTML5 player instead of a proprietary player.
WebRTC streaming is an asset for anyone who requires near-instantaneous voice and/or video delivery between users. This could apply to anything from personal applications in one-to-one meetings or voice and video calls, to business services like multi-person virtual meetings and hybrid conferencing, to critical services like emergency response or the expanding field of telehealth. However, it’s important to note that requiring peer-to-peer connection does create some limitations as far as scalability; we’ll detail this further below. But if you are dealing with a small-scale broadcast (a suggested number is less than 50 participants), standard use of WebRTC video streaming should be viable. In the case of a true “one to many” stream, you’ll most likely need to take things to the next level and use a media server.
WebRTC leverages three HTML5 APIs enabling browsers to capture, encode, and transmit live streams. While streaming workflows can often require an IP camera, encoder, and streaming software, the most basic WebRTC use-cases can manage the whole enchilada with just a webcam and browser. Chrome, Firefox, and Safari all have native support for WebRTC. Supported codecs for audio are Opus, iSAC, and iLBC; supported video codecs are H.264, VP8, and VP9. WebRTC streaming uses UDP (User Datagram Protocol) one of the core protocols in the Internet protocol suite. It’s a simple transport protocol that makes low-latency connections between applications and speeds up data transmission by sending without “establishing” the connection (the “TCP handshake”) and without any “guarantee” of data delivery. While this might sound like a sketchy proposition, audio and video protocols are generally able to handle a few dropped data packets, so typically there will only be a slightly lower quality if data is lost, as opposed to a long buffering delay with other protocols to re-transmit undelivered data.
Pros vs Cons of WebRTC
So, as we’ve shown in the previous sections WebRTC video streaming has some specific pros and cons in its’ use cases. If you’re considering the best applications of the framework, here’s a quick breakdown/summary:
- WebRTC streaming has inherently low latency; as we’ve laid out above it’s just the fastest thing going when sending video across devices and over the internet.
- WebRTC is well supported and platform and device-independent. The framework takes advantage of many built-in features of the HTML5 programming language and is lightweight, browser-based, and accessible. While early on there was some slowness to adopt WebRTC, now all major browsers and devices support the framework, making it possible to integrate into a range of applications without additional infrastructure.
- WebRTC is now (as we mentioned) standardized, avoiding any compatibility problems that come along with proprietary technology, and it is open source, increasing its reach both in development and support. An open-source community of independent developers can exceed the capacity of large companies as far as building, refining, and developing the framework and its’ capabilities.
- WebRTC can adapt to network conditions for reliability over poor network conditions and can adapt to bandwidth and device for the best quality stream. While the “simulcasting” WebRTC uses is not the same thing as adaptive bitrate streaming (ABR) as it adjusts on the “publisher” side by creating multiple encodings, it fulfills a similar function to provide the best possible user experience.
- As you should now be aware, WebRTC has some issues with scalability: its configurations are bandwidth-intensive as each participant needs to establish a peer-to-peer browser connection. Real-time media processing is taxing on resources; for example, streaming a low-resolution video needing 500kbps of bitrate to 10 people could end up requiring a 5mbps uplink speed. The more participants there are in a stream, the more it’s possible bandwidth requirements could quickly overwhelm the capabilities of your (or other users’) connection. While this generally can still work out for small call or conference groups, an actual broadcast (more than 50 peer connections) will still need a media server. In other words, scaling up WebRTC will require similar investments in server infrastructure to other types of streaming.
- Using WebRTC can cause broadcast quality to suffer. Relating to the last “con” about exceeding bandwidth, WebRTC is operating on top of underlying network connectivity (as well as the quality of webcams or other input devices), and if it is low quality then the stream will tend to be low quality. Also, the UDP video delivery method used by WebRTC both drops B-frames from compressed video to enable real-time delivery as well as drop data packets in general (remember we said UDP doesn’t guarantee delivery). While generally with instantaneous communication it’s better to avoid pauses and buffering than have perfect picture or audio, the frame, and data loss can ultimately affect content quality.
Learn More About Kaltura’s WebRTC Services
Kaltura offers webRTC-enabled online video solutions such as Kaltura Meetings and Kaltura Virtual Classroom for high-quality, real-time connection and collaboration. Thanks to Kaltura’s open-source philosophy, you can also get full API and SDK access to custom-build webRTC-based video apps for your business or organization.
Looking for a WebRTC-enabled virtual meeting solution? Try Kaltura Meetings for free!