HTTP Live Streaming
I spent some time on investigating HLS (HTTP Live Streaming) in the past few days. HLS is quite new to me so I did lots of google and here are what I found:
- HLS stands for HTTP Live Streaming. This website from Apple gives a very detail introduction on this.
- HLS is a transfer protocol and it helps secure the transfer process.
- HLS supports both prerecorded (VOD) content and Live content.
- HLS supports Adaptive Streaming and also support multiple backup streaming in the playlist (.m3u8 file).
- HLS does NOT have DRM natively.
- The implementation of Apple Safari does NOT support DRM. (Check here, item 16)
- HLS can be secured by AES-128 but it can NOT be considered as DRM b/c WB doesn’t approve it.
- Apple provides lots of tools to help generate HLS content.
- Safari (MAC / iOS) has native support for playing HLS by using the Video tag in HTML5.
- Xbox support HLS and it uses PlayReady as its DRM solution.
- HLS is supported by lots of Media Server Provider (include Akamai). (Check this article for detail)
- Widevine doesn’t have a solution for DRM in Safari, and not even on its roadmap.
DRM on iOS
For playing featured content, DRM is necessary if you want to get approved by studios. On iOS, there is not much choice you can make. Widevine is one of them. It provides streaming on iOS application (NOT in browser like Safari). Please note that AES-128 of HLS cannot be considered as DRM solution b/c it’s not approved by studios.
What interests me is Vudu.com provides a Web App for iPad. User can hit the site in iPad Safari and streaming the content directly inside the browser. No plugin is needed and no 3rd part application is required for installation. I tried to figure what’s the DRM solution Vudu is using but failed:) I hope HLS AES-128 is not the only encryption they use.
I just saw Prasanna Ganesan’s (CTO of Vudu) answer to my question about Vudu’s DRM in Quora that Vudu uses HLS + AES128.
VUDU uses HTTP Live Streaming with AES-128 encryption combined with additional layers of validation to authenticate the device being streamed to.