Apps

What you need to know about WebRTC: Web Real-Time Communications

Ryan Boudreaux explains the revolutionary changes that are coming to traditional communications via WebRTC and recommends that you start learning more about it now, starting with these resources.

Unified communications is becoming a reality with the WebRTC API. It is being drafted by the World Wide Web Consortium (W3C) through the Web Real-Time Communications Working Group Charter, which is part of the larger mission of the Ubiquitous Web Applications Activity Statement. The Editors Draft of the WebRTC 1.0: Real-time Communication between Browsers defines a set of ECMAScript APIs in WebIDL to allow media to be sent to and received from another browser or device implementing the appropriate set of real-time protocols. The ultimate goal of the initiative is to define client-side APIs which will enable Real-Time Communications in Web browsers, enabling applications that can be run directly inside the browser to communicate in real-time, and directly with other Web applications. The project has become so active and sizeable that it now merits its own WebRTC dot org website. Want to get your website into the next level of cohesive connections and interactions? As a stakeholder you might want to get your web application developers in tune to the fast changing Internet with the exciting technology of WebRTC.

WebRTC provides web application developers with the ability to write rich, real-time multimedia applications similar to video chat, for use on the web, with no plugins, downloads, or installs required. The purpose of WebRTC is to help build a strong platform that works across multiple web browsers, across multiple platforms and devices.  WebRTC is putting a real time media engine into the browser, which will eventually make every browser in the world capable of providing real time communications. The effort which was started by Google and Global IP Solutions (GIPS) about three years ago is driving a transformation that is going to change how we communicate and how we operate. With just a few lines of JavaScript the server tells the browser which IP address to which to send the media stream of video and audio and is very easy to build communications streams.

Supported browsers

The WebRTC project is an initiative supported by Google, Mozilla and Opera, with the WebRTC page being maintained by the Google Chrome team. Currently the WebRTC API is available in Google Chrome stable version and Firefox's Nightly Version which is utilized for testing purposes only.

Overview

The overall architecture of WebRTC includes two layers: the top layer relates to the web, individual web applications, and the Web API for web developers, which is being edited by the W3C W; the second layer is the WebRTC portion that concerns the C++ API and peer connection for browser developers. The top sub-layer of the WebRTC portion is further divided with session management and abstract signaling, which is split into three areas, the Voice Engine, the Video Engine, and the Transport session components. The Voice Engine sets the framework for the audio media connection from sound card to network and back between clients, and includes the iSAC / iLBC / Opus codec, NetEQ for Voice, Acoustic Echo Canceler (AEC), and Noise Reduction (NR) technologies.  The iSAC / iLBC / Opus audio codec for VoIP and audio streaming over wideband and narrowband, and supports constant and variable bitrate encoding from 6 kbits/s to 510 kbits/s as well as frame sizes from 2.5 ms to 60 ms, and sampling rates from 8 kHz (with 4 kHz bandwidth) to 48 kHz (with 20 kHz bandwidth. The NetEQ for Voice is a dynamic jitter buffer and error concealment algorithm used for concealing the negative effects of network jitter and packet loss which keeps latency as low as possible while maintaining the highest voice quality.  The Acoustic Echo Canceler is a software-based signal processing component that removes the acoustic echo resulting from the voice being played out coming into the active microphone. The Noise Reduction component is a software-based signal processing component that removes certain types of background noise usually associated with VoIP, such as hiss, fan noise, and background noise. The Video Engine is the framework for the video media connection for video, from camera to the network, and from network to the screen and back and includes the VP8 codec, the Dynamic Jitter Buffer, and Image Enhancements. The VP8 codec by the WebM Project is well suited for RTC as it is designed for low latency.  The Dynamic Jitter Buffer for video helps conceal the effects of jitter and packet loss on overall video quality, and Image Enhancemens removes video noise from the image capture by the webcam. The Transport Session components are built by re-using components from libjingle, without using or requiring the xmpp/jingle protocol. The Real Time Protocols (RTP) network stack and the STUN and ICE component allows calls to establish connections across various types of networks.

WebRTC Code Packages

The code package comes in two flavors, the primary code is meant for browser developers who want to integrate WebRTC. Web application developers are encouraged to use the WebRTC API.  And you are encouraged to read the License & Rights and FAQ before downloading the source code.

More resources

This is a list of further reading and resources for getting your web development into the realm of WebRTC.

WebRTC Blog - Regular updates on the latest code changes, interoperability, and events.

WebRTC Demo - Watch a demonstration of the AppRTC in action with interoperability between Chrome and Firefox.

Chrome WebRTC - The resource for all Google Chrome development with WebRTC.

Firefox WebRTC - Mozilla Firefox resource for their WebRTC development.

Interop Notes - Updated notations on interoperability between Chrome and Firefox browsers.

WebRTC World Conference - WebRTC Conference and Expo heads to Cobb Galleria in Atlanta, Georgia, June 25 - 27, 2013.

Unified Office - This organization offers a range of communications applications aimed primarily at small-to-medium businesses that want to take advantage of unified communications without having to make a large investment.

Plivo WebRTC - Provides a cloud Platform to Build Voice & SMS Applications with powerful Telephony Apps including WebRTC.

While the WebRTC API is still being developed, it is not too early to start looking at ways to incorporate the fresh technology into your own web development projects. Stakeholders should examine the advantages of getting onboard with WebRTC sooner than later, as it looks like this will be the next step to getting the phone to meet the web.

We have seen the phone meet the IP network in the past ten years or so, but the fundamentals of the technology stayed the same with servers managing communications, and with our phones being connected to servers that allowed us to connect to other people. The web is going to change how we make communications work; it is going to change how we make phone calls in very fundamental ways. Instead of an enterprise PBX or communications server, for example, having to negotiate how to make the connection, you will only have to point your browser toward the server you are trying to connect to and the communication and the experience you get is that which is being hosted from their server. You may go to dozens of communications controls every day, and connecting directly with their own servers, therefore bypassing the need to be switched between traditional telecommunications networks.

About

Ryan has performed in a broad range of technology support roles for electric-generation utilities, including nuclear power plants, and for the telecommunications industry. He has worked in web development for the restaurant industry and the Federal g...

3 comments
JocelinVid
JocelinVid

WebRTC works like a charm! We are using it at Videodesk for our video and audio chat. Since we have released our solution with webRTC clients comeback to us completely amazed. I think webRTC has a great future.

Teledini
Teledini

Great post! I'll be checking out all of the blogs mentioned above for sure. Unlocking the imaginations and abilities of the web development community on voice/video/data (without having to be a VoIP engineer, as before) is going to drastically change the way people and businesses interact on the Web. I also wanted to provide a couple of additional WebRTC resources, because there seem to be surprisingly few out there. Tsahi Levent-Levi writes a very well kept and informative blog on WebRTC which you can find at http://www.bloggeek.me/. Also, I regularly post about WebRTC on my blog at http://www.teledini.com, a click to call service we built upon WebRTC. Thanks for the resources!

jonellis69
jonellis69

Just wanted to share our experiences of WebRTC, as an early adopter. We recently included WebRTC in our online tutoring app, as a replacement to Flash. Early customer feedback using Chrome has been very good, as there are big improvements in sound quality, reliability and setup compared to Flash. Yes its annoying that it's not included on Firefox yet, and there are no plans to include it in Internet Explorer or Safari, but it will help drive users to Chrome and Firefox, I think. For those interested, I have blogged about our implementation experience at http://blog.tutorhub.com/2013/04/09/tutorhub-enters-the-world-of-webrtc.