Our Streaming MiniSeries continues today; after our grand opening with RTMP and our second article regarding HLS (or HTTP Live Streaming), our focus today is all around HDS (or HTTP Dynamic Streaming). For although HLS sounds very much of a compromise between Adobe and Apple, HDS is instead all about HTTP Streaming for the Android and WinOS and UNIX world.
It has been adopted relatively less than HLS (due to the fact that no particular Apple likeminded Vendor enforced it as a specification for streaming ) and in fact we’ll spend a further Article after this one speculating about inception and where the Adobe Streaming world is poised to grow into 2015.
But first things first: let us have a peek into HDS.
What’s HDS or HTTP Dynamic Streaming?
There was a time when there were no Mobiles. Television and the Internet worked as if they did not know each other. Watching movies on the Internet was a unique, yet somehow uncomfortable experience. Things started changing rather dramatically when Enterprises like Netflix came into the scene. The old ways of delivering video had to change, and change they did. As a consequence of that, Television has no longer remained a separate entity. In fact it has merged with the Internet in more ways than one.
Just think about a not-all-too-silly fact: up until a few years ago, Internet advertisements promoted TV Channels and Shows, whereas you now see TV Commercials promoting Websites or Internet based Entities. This, as we’ve seen, urged the Industry to develop a (more than one actually, as we’ve seen) robust Streaming Technology which could handle both On Demand and Live Video/Audio content.
HTTP Dynamic Streaming or HDS is one of these: a format developed by Adobe around the turn of the last decade. It cares to deliver fragmented mp4 files (fMP4). We will discuss about fragments later in this article. HDS uses MPEG-4 Part 14 and Part 12.
How is HTTP Dynamic Streaming different from Progressive Downloads?
HTTP Dynamic Streaming utilizes the same HTTP Server technology used to deliver Progressively Downloaded videos, which is a major advantage. Since the media is to be delivered to an Adobe Flash compatible Player, it allows Online Publishers to leverage quite an existing Network and Cache Infrastructure. HDS delivers high quality video in H.264 or VP6 format displayed in Adobe Flash Player 10.1 and Adobe AIR 2, which are both Network-efficient.
HDS is an advanced Streaming Solution because it permits multiway communication. Moreover, modern video and audio delivery Systems are supposed to offer extensive interaction feats, such as quick start times and seeking, between the Server and Player. HDS also supports Quality of Service Monitoring. QoS means providing high quality Transmission rates using various (mainly TCP based) techniques; these are possible only with Streaming formats which allow interaction between a Media Server and a Player. Quality of Service, in turn, is ensured by Adaptive Bitrate Streaming.
The HDS Technology is different from earlier Progressive Streaming in several ways. HTTP Dynamic Streaming can deliver content at different Bitrates and quality by constantly monitoring the end-to-end bandwidth availability and the CPU cycles available to the Media Player. Obviously this leads to better bandwidth management. Instead of downloading the entire content, HDS supports streaming of large Video files without the need to download the entire content. HDS also enables Live Streaming using Adobe technology. HDS technology is based on fragmentation process which means dividing content into small packets (also called “chunks”) during delivery. HDS can enable fragmentation into two to three second packets which reduces bandwidth requirements, but the default Adobe recommendation is set to 10 seconds. Fragmentation also assists with content protection. Adobe has lately developed OSMF 2.0 (Open Source Media Framework) which is an improvement from the earlier version specifically in the development of Adaptive Bit Rate algorithm and related APIs.
HDS is the latest state of the art for the Adobe Media Server. HDS can be implemented using an Apache server which brings down the cost significantly, while preserving the quality of service.
Preparing for HTTP Dynamic Streaming Delivery
A video file has to be prepared for HTTP Dynamic Streaming. Remember that a stream of video in HDS consists of segments / fragments / chunks, all referenced by a so-called Manifest file. You will first have to install a HTTP Origin Module. Fortunately, HTTP Origin Module comes preinstalled and configured with the Flash Media Server bundled in Web Server. You may wonder the purpose of FMS here. Well, to put it simply you don’t require the FMS. The original Video file is prepared by converting it into F4F format which describes how the content is divided into segments and fragments. Essentially, the division of the original media files into segments lies at the heart of HTTP Dynamic Streaming.
The f4f Packager is used to perform the process of Segmentation. There are three files which are created while preparing the media file for streaming. One single f4m (also called “Manifest”) file which is an XML format is created for one media file. The Media Player gathers information for playback from this file.
The segment file, f4f, consists of fragments which are required by the Media Player for playback. Obviously there will be multiple f4f segment files which will be required to recreate the original media file for playback.
It is clear from the above, that a Media Player receives information about the streamed media through these two files. Additionally, the Media Player also needs to know the number of fragments inside the segment files. This activity is performed by f4x file which is the index file. One segment file will have one index file associated with it. The HTTP Origin Module makes use of this f4x file to determine the fragments to be sent to the Player.
You may be wondering why such a complicated system of files is required to stream one single media file. Though this may seem like a complex solution, in actual fact it is an elegant and smart way to provide streaming video/audio. This becomes clear once we look at how streaming occurs using this scheme.
Let’s imagine that you are watching a Video and want to fast forward the action. Had it been Progressive Streaming, you would have to wait for the whole Video file to download. In HDS, a http request is made for the requested content right in the middle of the video, which can be easily conveyed through file which maps the fragments inside the segments. This enables you to watch the video from any point without requiring the entire media file to be downloaded.
Since the original media file is cut into segments, it enables any CDN in the middle to cache the content nearer to the user. There is only one version of the original file and therefore efficiency of the network in term of bandwidth is also improved.
Other advantages of HDS
HDS is an open standard and uses a commodity HTTP Server (Apache). The MP4 media format uses standard codecs like H.264/AAC. The HDS can be streamed on a standard Flash Player and you can also build your own player with an open source framework (OSMF). As mentioned, HDS can also stream Live content. With Adobe Access support, a reliable and robust content protection is possible.
HDS or HTTP Dynamic Streaming is a superior Streaming Technology, which is both robust and flexible. It provides better User Experience and reduces the cost of delivery. HDS can be used in conjunction with any CDN to improve efficiency and offload on the Origin Server part. Live Streaming can be enabled with HDS. From the standpoint of ‘On Demand’ Video Providers, HDS offers complete protection by streaming Video only against a membership/subscriber check. Providers can easily monitor subscriptions and track individual content consumption. Overall, HDS is a format for the future (although, as we’ll see , it hasn’t been adopted as widely as other formats).