WebRTC SDKs Analysis

In the last few months, I have been keenly tracking how the course for WebRTC is turning out. In my opinion, it is an incredible game-changer and a market disrupter for the telco industry plagued by licensed codecs and heavy call session control software.

Contrary to my expectations the fundamental holes in WebRTC specification are still the same with less being done to fulfil them – Desktop sharing on Chrome Extension, media compatibility with desktop popular H264 being prominent obstacles to adoption. Of course, now there exists an abundance of interactive use-cases for WebRTC APIs from gaming to telemedicine. However, none of the applications is complete and standalone since each uses a new gateway to connect to their existing platform or service.

As new webrtc SDKs and open-sourcing platforms surface, many seem to be wrapping around the same old WebRTC functions ( getusermedia data-channel and peer-connection ) with few or no addons. Few of I am listing down some popular working ones in this blog but there still exists no concrete stable reliable guide to set up the backbone network ( yes I am referring to Media interconversion, relay, TURN, STUN servers ). It is left to a telecom software engineer/developer to find and figure out the best integrations to configure session handling and PSTN or desktop application compatibility.

Some commercial off the shelf service providers have begin to extend interconnecting gateways ( SBC’s) for their backend for Web-Javascript based WebRTC implementations but there are concerns on the end to end encryption and media management as it passes via transcoding media server and many points of relay. This in my opinion completely defeats the objective of WebRTC’s peer-to-peer communication which by design is supposed to be independent of centralised server setup. WebRTC was meant to *everything you can’t do with proprietary communication tools and networks*.

Well moving on , here are some nice API implementations of WebRTC ( only for Websockets no SIP/WebSockets ) which can be quickly used by web developers to create peer to peer media session on web endpoints via a WebRTC supported browser web page.

1.appRTC

apprtc
apprtc2

Neat process of setting up offer-answer and SDP . Notice the Relay candidate gathering 

apprtc3

Session Description ( SDP) for the WebRTC peer with audio / video codecs and other session specificatiosn such as bitrate , framerate , codec profile , RTP specs etc.

apprtc4
apprtc5

No over the top media control which is good as media flows end to end here without any centralized media server .

2. talky.io

Also related to SimpleWebRTC which is a lightweight MIT licensed library providing wrappers around core WebRTC API to support application building while easing the lower level peerconnection and session management from developer.

talky1

talky2

talky3

Simmilar offer-answer handshake and SDP excahnge.

talky4 talky5 talky6

There seems to be better noise control management which could be my browser acting on my fluctuating network bandwidth as well . 

3. tokbox

tokbox2
tokbox1

More control from UI on Media settings which is provided as part of getusermedia in WebRTC specification. Read more about the webrtc APIs in my other writeup 

tokbox7
tokbox6
tokbox5

Simmilar to previous WebRTC session ( totally dependant on my own network and CPU ) , independant of any thord party control . 

As my peers network degrated , my webrtc session automatically adjust based on RTCP feedback to send lower resolutions and framerate.

tokbox4
tokbox3

4. webrtcdevelopment

Open source MIT licensed libray to spin up Webrtc calls quickly and easily from a chrome supported browser . It is a fork of best features from multiple libraries such as apprtc , webrtcexperiments , simplewebrtc and is maintained by n open community of users including me.


WebRTC Media Stack is explained in following articles

  • AEC (Echo Cancellation) and AGC (Gain Control) in WebRTC

    Acoustic Echo Hybrid / Electronic Echo in PSTN phones Noise Suppression in WebRTC Echo Cancellation WebRTC Echo Cancellation Automatic Gain Control (AGC) Echo is the sound of your own voice reverberating. If the amplitude of such a sound is high and intervals exceed 25 ms, it becomes disruptive to the conversation. Its types can be…

  • WebRTC Audio/Video Codecs

    WebRTC Video Codecs VP8 VP9 H264/AVC constrained AV1 (AOMedia Video 1) Stats for video based media stream track Non WebRTC supported Video codecs H.263 H.265 / HEVC WebRTC Audio Codecs Opus AAC G.711 (PCMA and PCMU) G.722 iLBC iSAC Speex AMR-WB  DTMF and ‘audio/telephone-event’ media type Stats for Audio Media track DataChannel Stats for Datachannel…

  • Unified Plan SDP format in WebRTC

    Until recently a customised or property extension could signal multiple media streams within an m-section of an SDP and experiment with media-level “msid” (Media Stream Identifier ) attribute used to associate RTP streams that are described in different media descriptions with the same MediaStreams. However, with the transition to a unified plan, they will experience…

  • continue : Streaming / broadcasting Live Video call to non webrtc supported browsers and media players

    This blog is in continuation to the attempts / outcomes and problems in building a WebRTC to RTP media framework that successfully stream / broadcast WebRTC content to non webrtc supported browsers ( safari / IE ) / media players ( VLC )

  • Streaming / broadcasting Live Video call to non webrtc supported browsers and media players

    As the title of this article suggests I am going to pen my attempts of streaming / broadcasting Live Video WebRTC call to non WebRTC supported browsers and media players such as VLC , ffplay , default video player in Linux etc. Some of the high level archietctures for streaming Webrtc Video to multiple endpoints…

  • WebRTC Media Streams and Quality metrics

    Media Stream Tracks in WebRTC Video Streams Video Capture insync with hardware’s capabilities Capture Resolution SDP attributes for resolution, frame rate, and bitrate Dynamic FPS control based on actual hardware encoding Stream Orientation Audio Streams Audio Level GAIN calculation Acoustic Echo Cancellation (AEC) SDP signaling and negotiation for media plane Media Source Peer-to-Peer Media Stream Frames…

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.