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.
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.
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.
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.