This page was last updated on January 10, 2013.
1. What is WebRTC?
WebRTC is an emerging open standard for real-time communications. It aims to place high quality live video and voice technology directly within the browser. This will allow any web developer to add real-time communication features to their web applications.
The WebRTC initiative is a project supported by Google, Mozilla and Opera.
2. Why is WebRTC so important?
WebRTC is an incredibly enabling technology. In the past, only a few large companies had access to high quality communications software. WebRTC places powerful technology , in the hands of millions of web developers.
This will power a new wave of web browser applications that will have video and voice communications built in as a feature. Many uses of the traditional phone call will be replaced by ‘in context communications’. For example, a user may be logged into their online banking and want to query their account in person. In the past they would have to get the number from the website, call the number, and then wait to be authenticated before speaking to an advisor. Using WebRTC, this call could be initiated with a single click of a button on the web page. And because the user is already logged in, they do not need to be reauthenticated. Similarly, an online shopper may want to speak to a sales assistant to ask the question or to see the product. This can be done with a single click using WebRTC.
WebRTC also supports real-time communications of other types of data besides audio and video. This is particularly useful to web game developers, and would also allow file transfers and remote desktop applications directly in the browser.
3. What are the challenges that WebRTC faces?
At the inaugural WebRTC Conference held in San Francisco in Nov 2012, there was a panel consisting of the top engineers working on WebRTC. They were asked what the biggest challenges facing WebRTC are. Two common themes prevailed:
i. WebRTC could suffer if too much is expected of it at this early stage
WebRTC is receiving a lot of attention. It has very ambitious goals and so the media and the developer community are very excited.
The panel had a huge amount of optimism for the technology they are producing, but said that people must not expect too much from WebRTC at this early stage. The engineering required is very complex and it will take time to get it right. The various browser implementations of the current specifications are a first iteration. They are suboptimal and incomplete.
The W3C Last Call Working Draft is expected in Q3 2013, and so the WebRTC specification is likely to be standardized in 2014.
ii. Browser vendors need to agree on the mandatory-to-implement video codec
Agreeing on a mandatory-to-implement video codec is very important to the WebRTC standard. If there is not an agreement between browser vendors, browsers will not be interoperable (user on Browser X could not call user on Browser Y).
So far this has been difficult to do with two clear camps emerging.
Microsoft, Cisco and Apple favor H.264. They favour it because it is more broadly adopted, it has higher ‘Quality-Power-Bandwidth’ and it has a more clearly established IPR status.
The WebRTC engineer panel had varying opinions on which codec should be chosen. Interestingly, it was said that some browsers may adopt both codecs, which could prevent a potential stalemate.
It is difficult to say which codec will be chosen, if indeed one is. But since all the current WebRTC implementers (Google, Mozilla, Opera) favor VP8, VP8 will be the video codec for now.
4. What are the WebRTC APIs?
WebRTC is a technology that is being standardized within two different bodies. The protocols and interoperability are being standardized in the IETF Working Group, and the APIs for web development are being standardized in the W3C Working Group.
The three APIs that web developers will interact with are:
1. MediaStream (getUserMedia) – allows access to the local media devices like the user’s camera and microphone.
2. RTCPeerConnection – allows peer-to-peer video and voice calls.
3. RTCDataChannel – allows peer-to-peer data transfer.
A full description can be found in the WebRTC W3C Editor’s Draft.
5. Which browser vendors are committed to supporting WebRTC
Google - Chrome is the first browser to publicly support both getUserMedia and PeerConnection in Chrome 23 on Nov 7th 2012. It does not yet support the RTCDataChannel API.
Mozilla - Firefox offers ‘preliminary WebRTC support’ in Firefox 18, released in Jan 2013. Their first full implementation of WebRTC will be supported in April 2013, and will include all three WebRTC APIs.
Opera - Opera 12 supports the getUserMedia API only. Support for PeerConnection and DataChannel is expected fairly soon.
6. Which browser vendors do not support WebRTC?
Microsoft - It must be noted that Skype, is of course, a Microsoft company. Microsoft had very little to do with WebRTC until, in August 2012, they proposed a totally revised spec that they called CU-RTC-Web. It was authored by very influential engineers from both Skype and Microsoft. They argued that the current API specification was not flexible enough, and that it didn’t offer interoperability with existing VoIP systems.
The revised specification was controversial, and after a vote it was agreed that the new proposal would not be adopted. Many W3C members stated that regardless of the proposal, it was simply too late. And that it would delay WebRTC by at least 6 months. Since then Microsoft and Skype have again become less active in the process.
Apple - Apple has been almost entirely absent from WebRTC activity.
7. What about mobile browsers?
Mobile browsers are not only more difficult to engineer for, but the mobile platforms they exist on tend to be more ‘closed’ than their desktop counterparts. This has created a very difficult situation for WebRTC on mobile, in particular WebRTC on iOS.
iOS - Apple operates strict security policies that prevent all non-Safari iOS browsers from accessing certain functions that allow for the quick rendering of web pages. This is a major limiting factor to the competitiveness of these browsers, and it essentially makes then far inferior to Safari. Both Chrome and Opera have struggled to gain market share on iOS despite having great desktop browsers. Firefox decided that they would not develop for iOS because of Apple’s limitations. If WebRTC were to succeed on iOS, Apple would need to support it.
Android - Expect the Android Browser, Chrome, Firefox and Opera all to support WebRTC on Android. It is a more difficult engineering task as CPUs are not as powerful, and there is limited battery life which has lead the browser vendors to focus on desktop versions first.
8. What is the history of WebRTC?
WebRTC is the brainchild of the Google Hangouts engineering team. While building the Google Video Chat plugin they thought it would be a great idea to place the video and voice technology directly into the web browser. This would make using video and voice communications on the web more frictionless by removing the need for a plugin, and provide access to the technology to millions of web developers.
In order to do this Google required a video codec and a voice engine. In early 2010 Google acquired On2, the owner of the VP8 video codec, for $125m. They quickly open sourced the codec for use in both WebRTC and the HTML5 video tag. A little later in the year they acquired GIPS, a Swedish company for $68m. The GIPS technology forms the basis of the voice engine used in the Chrome implementation of WebRTC.
In total Google invested about $200m in WebRTC in 2010. By April 2011 the IETF RTCWeb Working Group was formed and was given the responsibility to standardize the protocols used in WebRTC. In May 2011 the W3C WebRTC Working Group was created to specify a set of standardized APIs that the participating browser vendors would implement.
9. What features lie outside the scope of WebRTC?
Cloud Infrastructure – A server is required by WebRTC to complete four tasks: User discovery, Signalling and NAT/firewall traversal.
Native Applications – WebRTC enables real-time communication between web browsers. It is not a software development kit that can be used in native iOS or Android applications or in native desktop applications.
Multiparty Conferencing – WebRTC is peer-to-peer by nature which allows WebRTC to be extremely scalable, but it is very inefficient when setting up communications between more than two end users.
Recording – WebRTC does not support recording.