Scalable solution to stream live WebM

115 views
Skip to first unread message

Sylvain Gadrat

unread,
Feb 7, 2011, 3:33:20 AM2/7/11
to webm-d...@webmproject.org
Hello,

I am a developer at Anevia, a live TV and VoD software company. I want
to share our proudness and express my gratitude about our recent success
with WebM.

We had to face two issues to launch our WebM-enabled solution. First, we
needed to have a scalable setup, also cost efficient and expandable to
serve several hundreds of thousands of clients. Secondly, we had to
provide adaptive bitrate since it is nearly impossible to provide a good
user experience with live streams without adaptive bitrate, as loading
times are not an option when watching live TV.

To obtain a scalable architecture, we coded a VP8/Vorbis transcoder that
takes some live TS stream as input and outputs clusters (in Matroska's
meaning), and added a caching system. The transcoder requires some CPU
power, but we can obtain good results with current midrange CPUs, thanks
to fine tuning options of libvpx. This server can directly serve
adaptive WebM to the final client since it is a little effort after
generating synchronized matroska clusters of different qualities. While
it is technically possible, serving the final client with the transcoder
is a very limited solution, as the CPU is already quite loaded by the
transcoding process. To avoid expensive CPU needs and load-balancing
systems when the solution is scaling up, we developed a WebM "caching"
system, retrieving needed clusters from a master server to serve
adaptive WebM files. The aim is that a service provider can begin with a
unique transcoding server, then add some more caching as its clients
base grows.

For the adaptive bitrate part, the main idea is to generate synchronized
Matroska clusters of different qualities which are interchangeable
without leading to an unreadable WebM file. So, to generate an adaptive
WebM stream, the server has to pick the correct clusters to send them
depending on the bandwidth of the client. We achieved to cover a large
bitrate range between our lowest and highest qualities playing with
quantizers values and we are ready to improve the difference when
players will be able to handle frame resizing without artifacts
(http://groups.google.com/a/webmproject.org/group/webm-discuss/browse_thread/thread/cc3221910efd4770).

Another good point for WebM live streaming is that this technique does
not rely on dumping chunks of the stream on the disk and keep a
sufficient amount of time for the clients that will ask for them.
Instead of that, when a cluster is produced, it is sent as quick as
possible to connected clients in order to stay as close as possible from
the "live" timeline.

After all this technical jargon, if you want to experience it, our demo
is freely accessible at http://demo.anevia.com:8080/ott/webm.php

We really wanted to thank webmproject.org for those good codec and
container, which made such a technology possible, and all contributors
to this mailing-list for the valuable help provided on technical
subjects. Thanks to this community, it has been possible to provide a
new solution for internet live streaming in just a few months of
development.

Best regards,
Sylvain Gadrat.

Reply all
Reply to author
Forward
0 new messages