The great migration from Flash to HTML5 is underway. For many producers, this means a switch from RTMP or HTTP Dynamic Streaming to a more HTML5-friendly format. Typically the choice comes down to either HLS or DASH. To help tease out the pros and cons of each, I wrote a blog post called “DASH or HLS? Which is the Best Format Today,” in which I set forth my thoughts on the subject, invited comments, and presented a one-question survey asking which format readers preferred.
From my perspective, DASH’s strength is that it’s a standard, and that while browser support is far from universal today, it is growing, and will improve over time. One big drawback is that the Encrypted Media Extensions needed to protect DASH content are a mess, but that only impacts content owners who require DRM. A more serious issue is that DASH is not supported on iOS devices, which means no playback without an app. Finally, while advertising support for HLS files is in place, support for DASH-encoded files is still in its infancy.
In contrast, HLS is a mature format with good advertising support and native support on iOS devices. Though HLS only plays natively in the Safari browser on the Mac, most off-the-shelf players, such as JW Player, enable playback either via Flash or JavaScript, so achieving pervasive playback on Windows and Mac browsers is not an issue. The big negatives for HLS? It’s a proprietary format, native support for HLS will never grow, and the only native protection is encryption, not a full-blown DRM.
Some reader comments pointed out technical advantages for DASH, such as substantially lower end-to-end latency compared to HLS. Others pointed out that DASH might be subject to royalties, as MPEG LA is forming a patent group for DASH IP owners. Whether this will result in royalties is unknown, but obviously MPEG LA isn’t attempting to form the group just for fun.
Several comments pointed out that you don’t need to choose either format. The best approach is to encode to MP4 files, and then repackage as necessary for the target platforms. If the browser currently supports DASH playback, send DASH files. If the browser only supports HLS via an off-the-shelf player, send that format to browsers, send HLS to iOS devices, and send DASH to Android. You can accomplish this dynamically using the Wowza Streaming Engine or a similar product, or you can encode your source to mezzanine MP4 files and use a repackager to convert the MP4s to desired ABR format.
In the survey, DASH garnered 48 percent of the vote, compared to HLS at 36 percent, with the rest of the commenters recommending using both formats.
Interestingly, just before this column became due, JW Player’s John Luther, who spoke at Streaming Media West, shared some statistics about Flash, HLS, and DASH usage among the more than 2 million websites and 17 billion videos played per month using the player. Specifically, he reported that of the streams that JW Player delivered, 58 percent were delivered via HTML5, compared to 42 percent for Flash. However, of the HTML5 streams, 65 percent were MP4 files delivered via progressive download, which means they used the video tag rather than the Media Source Extensions. HLS garnered a 15 percent share of files delivered via HTML5, compared to about 1 percent for DASH.
So other than behemoths such as YouTube, Netflix, and Hulu that use DASH, most other sites are either use HLS or progressive download. Luther predicted that by 2016, all major off-the-shelf players, including JW Player, will implement HLS playback in JavaScript using the Media Source Extensions. He believes that HLS, rather than DASH, will be the tipping point for MSE use in 2016. So while it is clear that Flash is going away, it’s far from clear whether Flash-based formats will be replaced by HLS or DASH.