HTML5 video and Apple's refusal to allow Adobe Flash Player on iOS didn't kill Flash, it just changed the way people use it. Flash still offers so many features unavailable in HTML5 -- such as a variety of streaming modes, multicasting, DRM and closed captioning -- that it's still widely used, both on mobile through AIR apps and on the desktop through the browser plugin.
For some Web producers, the technologies selected to deploy video is driven by religious zeal, which was evident when Apple launched the Flash-less iPad to the joy of plug-in haters everywhere. HTML5 went from obscurity to top of mind, and Flash was declared dead on dozens, if not hundreds, of websites.
A more pragmatic view focuses on the viewers the website is seeking to reach, identifies the required features of the video presentation, and chooses the best technology for the job. That's the approach we'll take in this review. Since the capabilities and technologies are different for desktop and the increasingly important mobile market, I'll analyze the desktop and mobile markets separately, and briefly touch on Windows 8. Let's start by identifying the most relevant video-related features.
The world is dividing into two types of video technologies: Those provided without a plug-in, such as HTML5 video playback, and those provided via plug-ins such as Flash. I'll use Flash as my example of a plug-in-based technology because it's the most widely deployed -- although in most instances Silverlight offers equivalent functionality.
When streaming to desktop browsers, virtually all video is delivered within the browser, as opposed to separate applications. On the iOS and Android platforms, you can deliver video to the browser or via apps, which are often used to enable advanced features that might not be supported by browser-based playback. For this reason, I'll also include features deliverable via apps created with Adobe Integrated Runtime (AIR), which is a technology that enables developers to deliver Flash video on platforms like iOS and Android that either don't run the Flash Player or don't offer a current version.
Streaming a single file to a remote user is a pretty basic task that, depending upon the playback platform, can be accomplished via Flash or HTML5, or via Adobe AIR applications. Complicating HTML5 playback is the fact that not all HTML5 browsers support a single video compression technology, or codec. Playback of the H.264 codec via HTML5 is supported in IE9 and IE10, and most of the installed base of Safari and Chrome, totaling about 80% of HTML5-compatible browsers. Chrome also supports the WebM codec, as does Firefox and Opera, totaling about 40% of HTML5-compatible browsers.
Although Mozilla has made noises about supporting H.264, it has not done so for its desktop browser versions, both because it would require significant license fees and violate its policy of not supporting encumbered technologies. So to deliver a single stream to all HTML5 compatible browsers, you'd have to encode into two different formats, WebM and H.264.
Adaptive streaming technologies encode multiple iterations of the same source file and deliver the highest quality file that the remote viewer can retrieve and play. If you're watching on your connected TV via high speed broadband, you might retrieve a 1920x1080 stream at 5 Mbps. If you're watching on a low-power netbook connected via 3G, you might retrieve a 640x360 file at 800 Kbps.
There are three technologies that can or will enable adaptive streaming.
Flash-based adaptive streaming, which requires the Flash Player on the desktop or an AIR app for iOS or Android playback.
HTTP Live Streaming (HLS) from Apple, which is supported on all iOS devices, as well as Android 3.0 and later devices. HLS is also starting to appear as a feature on some Flash/HTML5 players like the JW Player. If a website uses a player (yes, it's confusing, but the server component which streams the data to clients is called a 'player') that supports HLS playback, and the desktop user has Flash installed, they can play HLS streams, allowing the website to serve desktop and mobile viewers with a single adaptive technology.
Distributed Adaptive Streaming via HTTP, or DASH. This is an emerging ISO standard being implemented by multiple companies, and might be the technology that enables HTML5-based adaptive streaming. However, DASH-compatible encoders and players are not yet available for general-purpose streaming, and likely won't be until mid to late 2013. (See What is MPEG DASH?) For this reason, to stream adaptively in the short term, you have to use either Flash or HLS.
As a practical matter, supporting multiple adaptive streaming technologies, like Flash and HLS, is simple to accomplish via streaming servers like the Wowza or Adobe Media Server that can "transmux" a set of adaptive files from one adaptive format to another. Specifically, these products rewrap the compressed streams into the container formats used by the respective adaptive formats, and create any required metadata files.
Supporting additional adaptive streaming technologies when they come online, like DASH, will likely be a simple matter of configuring your streaming server to do so, since all servers that transmux will certainly support DASH once generally available. For this reason, while convenient, the promise of a unifying standard like DASH won't be a life-changing event for most streaming producers.
One of the key deficits in the HTML5 specification is the lack of live streaming, though this should be addressed by DASH when generally available. Until then, to stream live, you must use a technology like Flash or HLS.
Digital Rights Management (DRM)
Digital rights management technologies enable content owners to protect their content, and include techniques like encryption and SWF Verification. Both Flash and HLS offer DRM, and DRM will be incorporated in DASH implementations once they reach the market. However, today, there are no HTML5-only DRM technologies -- if you want to protect your content, you can't use HTML5.
Closed captions are already required for many broadcasters, educators and government agencies, and many other organizations might use closed captions to enhance the search engine optimization of their videos or benefit their hearing-impaired visitors. Closed captions are available with Flash and HLS, but the only HTML5-compatible browser that currently supports closed captions is Apple Safari. Again, if you want to supply videos with closed captions to HTML5-compatible browsers, you'll have to use Flash or HLS.
Multicast is the ability of multiple computers to access and play a single video stream, which is very efficient in networked environments that otherwise would have to distribute a single unicast stream to each viewer. Although many technical requirements complicate large-scale multicast streaming, it's obviously highly desirable for enterprises and other large organizations with lots of desktops on a shared LAN.
Multicast streaming was made available for Flash streaming via the Flash Media Server 4.0 and later versions. Multicast under HTML5 is not yet under serious discussion and is not a feature of HLS.
Peer-to-peer (P2P) distribution allows any node on a network to serve as either a server or client respecting other nodes on the network. In video playback applications, once a single node on a network has retrieved video content, they can share that directly with other nodes, so the other nodes don't have to retrieve the video from the original source location.
Like multicasting, P2P can be very efficient in the enterprise space, and is available as a feature of the Adobe Media Server. P2P under HTML5 is not yet under serious discussion and is not a feature of HLS.
With this as background, let's turn our attention to the desktop and mobile markets.