What is HTTP Dynamic Streaming?

HTTP Dynamic Streaming FlowUntil now video content delivery over HTTP has been delivered in a progressive manner, meaning to view part of or seek to a specific location in the video you have to wait for that part to download. RTMP allows for the ability to seek to any point in the video content via streaming, but requires a server technology such as the Flash Media Server to do this. HTTP Dynamic Streaming or HDS combines HTTP (progressive download) and RTMP (streaming download) allow for the ability to deliver video content in a steaming manner over HTTP. This means:

  • A streaming server technology is not required
  • Clients can access and begin playing content ‘instantly’
  • Clients can seek to points in the video content that have not yet downloaded.

…and all the above over the HTTP protocol.

There are a of couple things that you’ll need to consider when getting started with HTTP Dynamic Streaming.

First, a media server to stream the content is not required, but the Apache Web server with the HTTP Origin Module installed is. The HTTP Origin Module is a free to use Apache module provided by Adobe, and comes pre-installed and configured with the Flash Media Server when you install the bundled web server. We’ll cover the installation, set up and data flow for the HTTP Origin Module in a subsequent post.

Second, the video content will need to be ‘prepared’ for HTTP Dynamic Streaming before being deployed to your server. This means the workflow for content creation will need to be adjusted to accommodate the packaging of your video content into the F4F file format. There is a tool, the f4fpackager, that Adobe has created to do this for you and we will discuss the details of this tools and how you can use it later as well.

F4Fragment ExtractorAt Realeyes, we’ve done some some work with AIR and the F4F file format spec to create the The F4Fragment Extractor.  The F4FragmentExtractor is a utility for extracting the F4V fragments from the F4F files created by Adobe’s file packager for HTTP streaming. This means that you can deploy the fragments produced by this tool  to any Web server or cloud services like Amazon S3 and reap the benefits of HDS even without the HTTP Origin Module.

In the next few articles, we’ll look at:

  • Getting Started with HDS
  • Use cases for HDS
  • Integrating HDS into your content creation workflow

Between now and when I get to the next post let me know if you have any questions or would like to see something specific about HTTP Dynamic Streaming in the comments.

14 Replies to “What is HTTP Dynamic Streaming?”

  1. Ok, I&#039ve extracted the fragments with your tool.  I now have the original f4m and all of the fragments in a bucket on S3.  I&#039m attempting to use OSMF to reference that streamingURLResource of the f4m as a mediaFactory created media element placed into a serialElement.  However, it&#039s no go.  I cannot get it to work.  Any suggestions?  Thanks!

    1. What version of the Flash Player are you targeting (HTTP Streaming requires 10.1+)? What do the requests look like? It should be 1) request the F4M file 2) Start requesting HTTP fragments. So something like /myvideoSeg1-Frag1…

  2. Ok, I've extracted the fragments with your tool.  I now have the original f4m and all of the fragments in a bucket on S3.  I'm attempting to use OSMF to reference that streamingURLResource of the f4m as a mediaFactory created media element placed into a serialElement.  However, it's no go.  I cannot get it to work.  Any suggestions?  Thanks!

    1. What version of the Flash Player are you targeting (HTTP Streaming requires 10.1+)? What do the requests look like? It should be 1) request the F4M file 2) Start requesting HTTP fragments. So something like /myvideoSeg1-Frag1…

      1. I'm still in a bit of a learning curve.  My OSMF is just passing the URL of the F4M into "streamingURLResource."  That url resource is then just getting passed into a mediaElement like any other piece of media.  I guess I just need to figure out how to get my player based on the OSMF to request those fragments.

        1. Yeah, OSMF does have a steep initial curve. The DefaultMediaFactory (http://sourceforge.net/apps/mediawiki/osmf.adobe/index.php?title=Media_Factories) is the key to different types of media. It allows you to pass in the media URL to a createMediaElement() method, then it does the work to figure out what type of media it needs to playback. You can also override this class for new media types and to gain access to or inject your own NetLoader.

          BTW, HTTP Streaming playback is a monster task to create custom code for. OSMF has some a ton of work. Mostly because you're having to figure out the segment and fragment to request based on the time code, and the bootstrap data provided in the F4M file and then play that fragment back using NetStream.appendBytes(). If you want to see what OSMF is doing check out: http://sourceforge.net/adobe/osmf/svn/2179/tree/o

          HTH
          John

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.