The Complete Magazine on Open Source

WebRTC: The Way Forward for Video Over the Internet

SHARE
/ 426 0

Video Conferencing

Who doesn’t love to make a free call? Web Real-Time Communication or WebRTC enables browser-to-browser communication for video calling, P2P file sharing and voice chat. This exciting, powerful and cutting-edge technology is set to revolutionise the way we communicate.

The goal of WebRTC is to provide real-time browser-to-browser voice and video communication without the need to download any plugins or software. So let’s explore WebRTC architecture, the requirement for it in enterprises, and the leading market players who offer WebRTC as a service.
WebRTC is an open source project, released in May 2011 by Google, which allows browser based real-time communication. It supports browser-to-browser applications for video chat, voice calling and P2P file sharing without the need of any external or internal plugin. The WebRTC project is mainly supported by Google, Mozilla and Opera.
WebRTC components are accessed with JavaScript APIs—the Network Stream API, the PeerConnection API that allows two or more users to communicate browser-to-browser, and the DataChannel API that enables communication of other types of data for real-time gaming, text chat, file transfer, etc.
Connecting to remote peers uses NAT (network address translation) traversal technologies such as ICE (Interactive Connectivity Establishment), STUN (session traversal utilities for NAT), and TURN (traversal using relay NAT). STUN servers reside on the public Internet and have one simple task of checking the IP port address of an incoming request (from an application running behind a NAT) and sending that address back as a response. This process enables a WebRTC peer to get a publicly accessible address for itself, and then pass that on to another peer via a signalling mechanism, in order to set up a direct link. As many as 86 per cent of WebRTC calls successfully make a connection using STUN, though this can be less for calls between peers behind firewalls and complex NAT configurations.
RTCPeerConnection (PeerConnection API) of WebRTC tries to set up direct communication between peers over the User Datagram Protocol (UDP). If that fails, RTCPeerConnection resorts to Transmission Control Protocol (TCP). If that fails, TURN servers can be used as a fallback, relaying data between end points. TURN is used to relay audio, video and data streaming between peers and is not used for signalling data. TURN servers have public addresses, so they can be contacted by peers even if the peers are behind firewalls or proxies. TURN servers have a conceptually simple task — to relay a stream. For a WebRTC call, once the capabilities of the browser or application are exchanged, a point-to-point connection is established. This includes NAT traversal.

Figure 1 STUN, TURN and signalling in WebRTC

Figure 1: STUN, TURN and signalling in WebRTC

Features of WebRTC
The objective of the WebRTC project is to enable rich, high quality, RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

  • WebRTC allows Web platforms to include audio conferencing, video conferencing and data sharing as part of the websites or applications
  • It allows a Web browser as an end point for a call
  • It allows websites access to video camera feeds to manipulate the feed or to allow users to record video
  • It provides platform and device independence so that developers can write WebRTC HTML 5 code that will run across different OS browsers
  • Advanced audio and video quality is provided by using the Opus audio codec and the VP8 video codec
Figure 2 WebRTC architecture

Figure 2: WebRTC architecture

WebRTC architecture
There are many components to the WebRTC architecture that readers need to familiarise themselves with. The most important are listed below.
Web API: The Web API is used to create Web applications, which may have video and audio chat capabilities. The Web API is used by third party developers to develop Web based video chat-like applications.
WebRTC Native C++ API: The WebRTC Native C++ API layer enables browser developers to easily implement the Web API proposal. This is used by browser developers to create WebRTC compatible browsers, and they can override the audio capture, video capture and the network I/O render.
Voice engine: This sets the framework for the audio media connection, which includes the iSAC (Internet Speech Audio Codec), the iLBC (Internet Low Bitrate Codec), the Opus codec, the NetEqualizer for Voice, the acoustic echo canceller and noise reduction technologies. The iSAC / iLBC / Opus audio codec for VoIP and audio streaming over wideband and narrowband 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.
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 canceller 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 a hiss, fan noises and other background disturbances.
Video engine: This is the framework for the video media connection for video, from the camera to the network, and from the network to the screen and back. It includes the VP8 (video compression format owned by Google) codec, dynamic jitter buffer and image enhancement technology. The VP8 codec by the WebM Project (an open media file format designed for the Web) 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 enhancements remove video noise from the image capture by the webcam.
Transport session: Transport session components are built by re-using components from libjingle, without using or requiring the Extensible Messaging and Presence Protocol (XMPP) or Jingle Protocol. The Real Time Protocols (RTP) network stack and the STUN and ICE components allow calls to establish connections across various types of networks.

Figure 3 WebRTC market forecast

Figure 3: WebRTC market forecast

The uses of WebRTCThe need for WebRTC in the enterprise
Open source technology from Google, which is now a standard in development with the IETF (Internet Engineering Task Force), could lead to inexpensive and interoperable video solutions in the business world, where large enterprises have been forced to invest hundreds of thousands of dollars in collaboration architecture, and smaller companies couldn’t even consider the technology due to price and complexity.
Sending data between two users in today’s browser world is a tough process with JavaScript, and most developers rely on a server as the middle agent. With WebRTC, the Data Channel API allows the passing of arbitrary data across the connection. This allows for large scale file sharing, fast action multiplayer games, and even remote control applications. The Data Channel allows users to transfer large amounts of data very quickly, all in the Web browser in true peer-to-peer mode.
WebRTC adds advanced levels of interaction to a website, allowing users to communicate in-context and in real-time, with either site operators or with each other. Such capabilities overcome current limitations that require users to call a number, download a plugin, or leave the website.

WebRTC use-cases can range from basic video/voice chat, to multiplayer gaming, file sharing and so on. Listed below are some of the possibilities.

Video recruitment and interviewing
Video interviews and recruiting have become more popular as enterprises and small businesses try to make the hiring process more efficient. Companies could conduct video interviews just by sharing a URL with the candidate and thereby decrease the cost of hiring. They could screen candidates faster, and the video session could be recorded and shared for further review.

Live video technical app troubleshooting support
Video customer support for Web or mobile applications gives customers a better user experience. The customer support executive could interact and troubleshoot issues with users on their device. By using WebRTC’s screen sharing, customer service agents could save time while troubleshooting with customers. Users could grant real-time device control to the support team to troubleshoot and eliminate confusing communication barriers.

box

Field service video calling
In the field, service technicians could use the camera on smartphones or tablets to contact experts located at a remote location to get help on troubleshooting devices and equipment, eliminating the need to send an expert to a remote location. This would reduce service downtime, decrease operational costs and improve customer satisfaction.

Online shopping assistants and concierge services
Online retail shopping assistants and concierge services could use video calls to increase brand loyalty, sales and customer satisfaction. When customers seek advice on an outfit or an accessory for their outfit or when an agent is consulted on the use of makeup to complement the client’s features, there is increased customer satisfaction. The common occurrence of abandoning the shopping cart can be reduced by connecting with customers in real-time and thereby increasing sales as well as brand loyalty.

Equipment or product troubleshooting
Customers could use a video to show a customer service agent issues with a specific item and configuration before sending or returning the product. This could save time while troubleshooting with customers, and also reduce processing and shipping costs for returning the product.

Market trends
Since the initial release of the WebRTC API by Google in May 2011, the project has grown both in terms of support and interest. According to Dean Bubley’s ‘Disruptive Analysis’, nearly three billion devices are WebRTC-capable today, with an estimate of about 6.5 billion devices supporting WebRTC by 2019. Today, desktop browsers lead in WebRTC usage, with Google Chrome, Mozilla Firefox and Opera accounting for more than 60 per cent of total browser usage. In the years to come, usage will increase quickly with the availability of browser support on smartphones.
By 2018, there will be an interesting traction for WebRTC within the Internet of Things (IoT) space. By definition, IoT connects things to the Web to interact with them in real-time. So, it makes sense that IoT, combined with WebRTC, can create a promising future with real-time communications.

Leading market players offering
WebRTC as a service
As WebRTC has gained wider popularity, the opportunity to offer it as a service has risen. Featured here are some of the more well-known options.

PubNub
PubNub offers a data stream network that can be used as a scalable signalling server for WebRTC applications. PubNub features Presence and storage/playback, which can be used to enhance applications.
The WebRTC protocol does not provide storage capabilities, and as a result, there are no records of what messages have been sent. Specifically with text chat, users expect a history of previous chat conversations. PubNub’s storage/playback feature allows users to see a history of past conversations over a desired period of time.

Bistri
Bistri was the very first service to provide a production platform for the implementation of WebRTC applications. Bistri harnesses WebRTC to provide users with a personalised link that, when clicked, instantly initiates a video call, like an online phone number. There is no software, plugins or accounts required; the call is carried out completely through the browser. A single snippet of JavaScript is all that is needed to attach a button to a website or blog, offering visitors a simple click-to-video-call experience.

TokBox
TokBox is a PaaS (Platform as a Service) company that provides hosted infrastructure, APIs and the tools required to deliver enterprise-grade WebRTC capabilities. It does so primarily through its proprietary OpenTok video platform for commercial application.
The OpenTok platform provides APIs, a global cloud infrastructure and pre-configured solutions to enterprises, entrepreneurs and developers. Originally launched as an Adobe Flash based platform in 2010, OpenTok became the first real-time communications platform to incorporate support for WebRTC in 2012. In mid-2013, TokBox launched Mantis, a cloud based infrastructure enabling multi-party conversations on the OpenTok platform.
Developers use the OpenTok platform to deploy WebRTC applications with 10x fewer lines of code than required through WebRTC off-the-shelf. OpenTok also supports multi-party calling, calls between browsers and iOS or Android devices, call archiving and playback, secure enterprise firewalls traversal and more.

Challenges in adopting WebRTC
Implementation of current WebRTC specifications has not yet been completed by different browser providers. Google Chrome, Firefox and Opera support WebRTC without any plugins. Chrome v29 or greater supports WebRTC on Android. Internet Explorer and Safari don’t support WebRTC natively. Third party plugins can enable WebRTC features on these browsers to an extent.
Another challenge with WebRTC is the unfortunate codec battle. Google, Mozilla and the W3C support VP8 mostly due to their belief that the video codec should be royalty-free, allowing developers to use WebRTC without having to pay licence fees. Apple, Microsoft and Cisco favour H.264, since it is more prevalent and currently many devices have H.264-optimised hardware for accelerated encoding and decoding.
WebRTC is the future technology standard for businesses, as it enables users to communicate more easily and customers to get answers quickly with click-to-call features in the website or in applications. Businesses that embrace WebRTC could gain commercial benefits and a competitive advantage due to better customer engagement, boosted sales, improved communication and reduced call costs.
WebRTC technology is widely supported and is being actively developed. End users and enterprises are adopting WebRTC because of its advantages and simplicity of use. One of the challenges of WebRTC in adoption was browser support. Now, even the non-supported browsers are releasing plugins and updates to support it. In the near future, when the market will feature more high quality, user-ready solutions, the popularity of WebRTC will only increase.

box2

Glossary

References

[1] WebRTC (Web Real-Time Communication), Wikipedia, 2015 http://en.wikipedia.org/wiki/WebRTC (Accessed – June  2015)
[2] WebRTC, Mozilla Developer Network, 2015 https://developer.mozilla.org/en-US/docs/Web/Guide/API/WebRTC (Accessed – June  2015)
[3] ‘WebRTC in the real world: STUN, TURN and signalling,’ Sam Dutton, HTML5Rocks, 2013 http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/ (Accessed – June  2015)
[4] http://www.webrtc.org/ (Accessed – June 2015)
[5] WebRTC (Web Real-Time Communication), Wikipedia, 2015 http://en.wikipedia.org/wiki/WebRTC (Accessed – June 2015)
[6] http://www.pubnub.com/blog/what-is-webrtc/ (Accessed – June 2015)
[7] 2015 Q1 Update: WebRTC Market Status & Forecasts Report, Disruptive Analysis, 2015 http://disruptivewireless.blogspot.in/p/blog-page_30.html (Accessed – June 2015)
[8] ‘Are We at the Tipping Point of WebRTC Adoption?’ AT&T website, 2015 http://developerboards.att.lithium.com/t5/AT-T-Developer-Program-Blogs/Are-We-at-the-Tipping-Point-of-WebRTC-Adoption/ba-p/40202 (Accessed – June 2015)
[9] TokBox, Wikipedia, 2015 https://en.wikipedia.org/wiki/TokBox (Accessed – June 2015)
[10] ‘SightCall Use cases,’http://www.sightcall.com/use-cases/ (Accessed – June 2015)