Wednesday, December 22, 2010

HTML5 and Video Streaming

This is Christian Kaiser, VP of Engineering here at Netflix.

My colleague John Ciancutti recently posted about our use of HTML5 for user interfaces; I thought I’d add a perspective on HTML5 and video streaming.

Since HTML5 includes a facility to embed video playback (the <video> tag), it seems like a natural next step for us to use it for streaming video playback within our HTML5-based user interfaces. However, as of today, there is no accepted standard for advanced streaming through the <video> tag.

Such a standard would enable agreement between streaming video clients and services about the following:

  1. The acceptable A/V container formats (e.g. Fragmented MP4, WebM, etc.);
  2. The acceptable audio and video codecs (e.g. H.264, VP8, AAC, etc.);
  3. The streaming protocol (e.g. HTTP, RTP, etc.);
  4. A way for the streaming protocol to adapt to available bandwidth;
  5. A way of conveying information about available streams and other parameters to the streaming player module;
  6. A way of supporting protected content (e.g. with DRM systems);
  7. A way of exposing all this functionality into HTML5.

That is a long list of complex issues. We’ve resolved the first six items for ourselves with our proprietary technology. Similarly, many other companies have their own proprietary, and mutually incompatible, solutions.

But what if we could replace all these proprietary solutions with an industry-wide standard? Then Netflix, or any other video streaming service, could deliver to a standard browser as a pure HTML5 web application, both on computers and in CE devices with embedded browsers. Browser builders and CE manufacturers could support every OS and device they choose, leveraging the same implementations across multiple streaming services instead of building and integrating an one-off implementation for each service. Consumers would benefit by having a growing number of continually evolving choices available on their devices, just like how the web works today for other types of services.
We believe that this is an attractive goal.

In order to help achieve this goal, we are looking into a number of options. We are already actively participating in the MPEG committee for Dynamic Adaptive Streaming over HTTP (DASH) to define an industry standard for adaptive streaming, together with Apple, Microsoft and a number of other companies.

The proposed DASH standard covers the first five items listed above: It defines a way to advertise a range of different streams to a player together with the information it needs to pick which ones to stream. It also defines media file formats suitable for adaptive streaming. The file formats enable efficient and seamless switching between streams, enabling a player to adapt to changing network conditions without pausing playback for re-buffering. The standard considers the differing needs of both on-demand services such as ours, and live services. And it’s all based on the use of industry standard HTTP servers.

We expect to be able to publish a draft of a Netflix profile describing a limited subset of the MPEG DASH standard early next year. It will define the requirements for premium on-demand streaming services like ours and will take advantage of hooks included in the DASH standard to integrate the DRM technologies that we need to fulfill our contractual obligations to the content providers, thus covering the sixth item on our list.

What’s still missing is how to address the last item - how exactly to tie advanced streaming standards (MPEG DASH and others) into the HTML5 <video> tag.

To this end, we are starting to get involved in the community with the goal to help shape a great standard that will be useful to everybody involved in building browsers, CE devices and services for streaming video over the Internet.

We know that achieving this goal will take a while. In the meantime, we’ll continue to evolve our own streaming technology to make sure our members have the best streaming experience possible and to get to as many platforms as we can.

Addendum: We are hiring! Specifically, this opening is for a position related to making video streaming in HTML5 a reality. We have a lot of other opportunities, too. Please visit our careers site!