Microsoft confirms Plugin-less support for ORTC, WebRTC in Skype Web SDK
Today, the Skype Web SDK only supports AV with the aid of a browser plugin. This effectively limits it to the desktop versions of the main browsers. In previous announcements we learnt that support would be coming with the arrival of support for ORTC in Microsoft Edge. This blog post goes into much more detail about exactly what that means.
ORTC support is now there with the latest Windows Insider Preview release – Build 10547 – in the Edge browser. Now that the ORTC API is built into Edge the product team can begin evolving Skype & Skype for Business to work with it. The specific changes include:
- Updating the Skype media stack on all platforms (Windows, Mac OS, iOS, Android) with Standard transport protocols support, including STUN, TURN, ICE & DTLS-SRTP. The Skype media stack is used by all Skype and Skype for Business clients, cloud services and servers.
- ORTC added support for the Opus codec in addition to SILK, G.711 and G.722. Native support for Opus will be added to the Skype media stack for all platforms.
- For video, Skype and ORTC in the Edge browser currently support 264UC. Support will be added for H.264. This will enable video interop between Skype and the Firefox browser, which currently supports H.264, and the Chrome browser when H.264 support is added to its WebRTC implementation.
Whether or not Chrome will ever get H.264 support is still very much an open question. There’s been a lot more written about this elsewhere, but Google prefer their own VP8 codec to H.264 and are holding back on adding support for H.264. It’s looking like the codec world will move on to new codecs before this argument is ever settled, with Google already looking at VP9 and VP10 and something happening with H.265.
This diagram shows how the signalling and media paths will run for Skype and Skype for Web users participating in a Skype group call. I would expect the media flows to be similar for Skype Web SDK calls when they’re made available:
All this support will be built not only into the standard Skype for Web experience but also for the Skype Web SDK. Regarding timelines, we’ve been told to “Look for more details on these developer updates later in the year.”
It’s looking like these scenarios will work first in Microsoft Edge and then get rolled to use the WebRTC APIs that will allow them to work in Chrome and Firefox. This is because Microsoft are building against the ORTC API. This is natively supported in Edge (from now, so it’ll hopefully just work) … but it’s also set to become part of the WebRTC 1.1 specification, so it’ll end up working anywhere that WebRTC is supported. With Edge representing less than 5% of the browser market this widespread support can’t come soon enough. Notable by its absence in this list is Microsoft’s Internet Explorer (still about a quarter of internet traffic).
Now that the ORTC API has been added to Edge, any developer can now code against it. Of course, once it’s added into the Skype Web SDK you won’t need to worry about exactly it all works under the hood: thanks to the magic of abstractions. But’s it’s interesting to poke around anyhow!
The diagram above is the full support model from the ORTC API specification. It’s a good summary of all the different parts of the puzzle and how they work together.
The initial ORTC support in Edge will be limited to [source]:
- ORTC API Support. The primary focus right now is audio/video communications. We have implemented the following objects: IceGatherer, IceTransport, DtlsTransport, RtpSender, RtpReceiver, as well as the RTCStatsinterfaces that are not shown directly in the diagram.
- RTP/RTCP multiplexing is supported and is required for use with DtlsTransport. A/V multiplexing is also supported.
- STUN/TURN/ICE support. We support STUN (RFC 5389), TURN (RFC 5766) as well as ICE (RFC 5245). Within ICE, regular nomination is supported, with aggressive nomination partially supported (as a receiver). DTLS-SRTP (RFC 5764) is supported, based on DTLS 1.0 (RFC 4347).
- Codec support. For audio codecs, we support G.711, G.722, Opus and SILK. We also support Comfort Noise (CN) and DTMF according to the RTCWEB audio requirements. For video we currently support the H.264UC codec used by Skype services, supporting advanced features such as simulcast, scalable video coding and forward error correction. We’re working toward to enabling interoperable video with H.264.
If you want to try out using the ORTC API in a 1:1 AV example, there are code samples and a walk-through on the Edge blog.
It’s great to know that making the end-user experience for Skype Web SDK easier and more pleasant is on the to-do list for the Skype Product Team, and that it’s being addressed. ORTC support in Edge was cited as a blocker to making a truly plugin-less model, so hopefully now that’s been achieved we will soon see updates to the SDK to enable this to happen.