WebM Streaming [Streaming Video Technologies Panorama, part 3]

WebM is surely one of the hotest streaming topics right now, because it’s one of the two final HTML5 video standards with H.264. When Google bought On2 in 2009 and open-sourced its latest VP8 codec one year later, two promises were made : providing a codec which quality can compete with H.264 , and providing it in a royalty-free way. On the quality point, the general opinion is that the VP8 codec is slightly less performing than H.264 – but it can be an acceptable trade-off regarding the royalties point.

Precisely, the royalty-free point is the one which raises the more questions now, as MPEG-LA is said to have a lineup of 12 patent owners ready to claim their rights on intellectual property, as VP8 would use compression techniques taken from H.264. Seeing their fight against Google being a success would cause a major setback in HTML5 standardization efforts around open source solutions – WebM then being another coding technology subject to royalties after H.264. Nevertheless, the patent war has not started yet and WebM is still a good alternative to H.264, on the paper. And that’s why we are curious to know how we can implement it in our existing or upcoming workflows.

So let’s walk through the different steps of the WebM streaming workflow !


Technology details and client support

WebM is the container format, derived from the famous MKV (Matroska Video) container, which allows track muxing with great flexibility and support for exotic features/codecs. This is why Google has frozen a first subset of MKV features, thus preventing custom implementations for the new format. In association with the WebM container, the only supported codecs are VP8 for the video and Vorbis for the audio. All of these components are open sourced and pretendly royalty-free, which explains why Mozilla has chosen WebM as the reference HTML5 video standard and does not include H.264 support by default. Interestingly, Mozilla has been implementing 3D WebM support in Firefox 4 with Nvidia. As WebM is not presented as a “static” format, it will be interesting to see which additional Matroska features now marked as “Undecided” in the container specs will be added in the coming monthes.


Current state of HTML5 video support

MP4 / H.264+AAC9.0+3.6+ **3.0+5.0+ ***-3.0+2.0+1.0+
WEBM / VP8+VORBIS9.0+ *4.0+****6.0+10.6+-2.3.3+1.0+

*     With additional WebM plugin
**     With additional H.264 plugin from Microsoft
***    Support  dropped from Chrome 10
****    With additional Perian plugin on OS X

Here we can see that WebM is relatively well supported on desktop browsers, with the notable exception of Apple who keeps a hard line on H.264-only support. For the moment, hardware decoding support is implemented in the Tegra 2, TI OMAP4 , Rockchip RK2918 and ZiiLABS ZMS-20 chipsets. The new generations of smartphones and graphic chipsets should all support hardware decoding (if not encoding) – but if we remember the path it took for H.264 decoding to be generally supported in hardware, we can predict a 2 to 5 years delay for it. As regards universal support, seeing the full WebM stack implemented in Flash Player would be a great boost for the format, but it’s not planned (only VP8 support has been announced a year ago) – only the code-warrior Ralph Hauwert made it with Alchemy porting.


Encoding options

As of now, there are very few known options to encode live WebM streams. The first one is a transcoder of live TS H.264 streams from Anevia – probably not ready for production yet, and not available to public. The second live option resides in the cloud with Livetranscoding.com (an industry actor to follow closely) who does H.264 source stream on-the-fly transcoding – but the main limitation (for production) is that this service has not yet completed integration with major CDNs apart from EdgeCast. The last option has also to be demoed (maybe at IBC), but it seems that Allegro is working on an upgrade of their AL20000 Transcoder to support VP8 (it was announced back in march in their PR/News entitled “Allegro DVT enhances its AL2000 N-Screen OTT transcoder.”) – and they claim for WebM support on their home-page… Oh wait, I just found a new encoder, it seems like it really exists ! It’s the Entropy Wave E1000 which can also output Dirac streams (!)

VOD encoding is the most advanced area here, with several options available, both on premises and in the cloud. As regards on premises, Sorenson provides both a desktop encoder (Squeeze 7) and a farm solution (Squeeze Server), and Telestream has included WebM encoding in its Episode Engine 6. And DIY fans can obviously build their own solution based on FFMpeg and soon xvp8. In the cloud, you could use Sorenson Squeeze Server (running fully in the cloud or hybrid on premises+cloud), Encoding.com, ZenCoder, HD Cloud, EncodingAll and Panda Stream services.

As regards hardware-accelerated encoding, there are no commercial encoding solutions released right now (only Media Excel has discretely announced WebM support in a future Hero nS version), mainly because the reference implementation for ASIC has just bee released by the WebM Hardware project team. However there are some implementations at the chipset level ready or in the works, on the Tegra 2 platform, on Videantis processors and on the Octasic OCT2224M processor – they do not use the reference implementation – so we should see some packaged boards or appliances of referenced WebM hardware supporters coming out on the market soon. And as regards stream analysis, there are already the CodecVisa solution and Interra Vega available.


Server options

The second main shortcoming is that Adaptive Bitrate WebM streaming is not an easy thing to do, mainly due to the Matroska cluster structure. On top of that, WebM didn’t come with a specific transport protocol and client negociation mechanism. This area is waiting for some standardization, either with the standard MPEG Dash option, or with a repackaged Widevine ABR technology that Google would decide to open source.
For the moment, ABR WebM is possible only with server-side intelligence – the server deciding dynamically which stream version to send to the client. The two known server-side implementation are Anevia ViaMotion and QuavLive QuavStreams Server. Other server options are provided by Flumotion Gstreamer based server and the famous Wowza Media Server (beta feature in version 2, demo hereversion 3 includes beta feature of transcoding to WebM). Once the ABR protocol pending point will be cleared, we’ll definitely need a simple server solution like an Apache/Nginx module. For the moment, it doesn’t seem that any server is really available for licencing. However, you can always prototype with the simple stream-m live streaming server.

MARCH 2012 UPDATE : See end of next chapter for latest links to WebM over DASH experiments.


Player options

That’s the easiest part, as most of up-to-date video libraries do support WebM as soon as the browser you use do support it – you can test it by youself here – so you will find all the “classical” players like JW Player, Kaltura, medialement.js, Projekktor, SublimeVideo and VideoJS. Difference between players will mostly reside in subtitling and playlists support, not in WebM core features support – and all of them should support the current server-side ABR implementations. Outside the browser, WebM is supported in VLC, Moovida and Miro – as well as in .NET apps with WebM for .NET. In the CE world, apart from the Tegra 2 powered tablets, there is only the GoogleTV, whose survival has yet to be confirmed, which supports WebM (via the Chrome engine). As of March 2012, new options are raising with DASH gaining rapid traction on the market – finally allowing for client-side adaptive streaming without specific server technology : see experiments of DASH/Media Source API powered WebM players here and here.


Final words

The WebM ecosystem is still very young (the only large scale use of WebM has been done by Google only, massively transcoding videos for its YouTube service), which explains why you cannot easily setup a full ABR live+vod production chain right now – but you can already do some lab prototyping after discussions with the existing solutions providers. The patent issue seems to hold back many initiatives from industry actors and content providers, apart from the Cross-Licencing initiative members. If the royalty-free hypothesis is to be confirmed, then WebM can become the default format at least for all paid content distribution (H.264 fees for SVOD/TVOD use cases are high) but, while it can possibly benefit from Widevine DRM support (the lack of DRM being the last shortcoming), it certainly cannot be compatible with the UltraViolet downloadable format – thus restricting the use case to streaming (which is already good!).


For a close follow-up of this topic,
stay tuned to my scoop.it curation specific pages on WebM and DASH !

VP8 bitstream specifications
– Jan Ozer’s last book, including a chapter on WebM encoding
– Jan Ozer’s  article about WebM encoding on StreamingMedia.com
All the WebM-enabled tools on one page !
Luxoft VP9 Codec product page