Call us: 1.800.513.1740
  • Log In
  • API
  • Sign Up
Encoding.comEncoding.comEncoding.comEncoding.com
  • Cloud Solutions
    • On Demand
    • HybridCloud
    • Reserved Cloud
  • Media Services
    • Features
      • Formats
      • Quality Control
      • Speed
      • Playout Graphics and Editing
      • Interfaces
      • Closed Captioning
      • Cloud Security
    • Packaging
      • HTTP Live Streaming (HLS)
      • Microsoft Smooth Streaming (MSS)
      • HTTP Dynamic Streaming (HDS)
      • Dynamic Adaptive Streaming over HTTP (DASH)
      • Dynamic Ad Insertion (DAI)
    • Digital Rights Management
      • Google Widevine
      • Microsoft Playready
      • Apple Fairplay
    • Integrations
      • Cloud Storage
      • Akamai
      • Aspera FASP
      • Beamr CABR
      • Dolby
      • Dolby Vision
      • Harmonic
      • Nielsen
  • About Us
    • Our Story
    • Our Team
    • Case Studies
    • Contact Us
    • Blog
  • Resources
    • Apple ProRes
    • AVOD
    • Beamr
    • DAI
    • Dolby Vision
    • DRM
    • Ludicrous Mode
    • QC
    • SVOD
  • Contact Us

HTTP Dynamic Streaming
An Overview

With adaptive bitrate streaming becoming the emerging standard in video delivery, Encoding.com wanted to give developers an overview of each protocol to highlight key differences. With this guide, we will dive into the architecture of Adobe’s approach to adaptive bitrate delivery, HTTP Dynamic Streaming.

What is HTTP Dynamic Streaming?

HDS, or HTTP Dynamic Streaming, is Adobe’s method for adaptive bitrate streaming for Flash Video. This method of streaming enables on-demand and live adaptive bitrate video delivery of MP4 media over regular HTTP connections. Adaptive bitrate works by detecting a client’s bandwidth capacity and adjusts the quality of the video stream between multiple bitrates and/or resolutions in real-time. The adaptive bitrate video experience is superior to delivering a static video file at a single bitrate, because the video stream can be switched midstream to be as good or bad as the client’s available network speed (as opposed to the buffering or interruption in playback that can happen when client’s network speed can’t support the quality of video). Previously video content delivery over HTTP was delivered in a progressive manner, meaning to view part of or seek to a specific location in the video you had to wait for that part to download.

When to use Adobe HDS

  • Preparing your video content for targeted playback on a wide variety of client bandwidth environments (Cellular, 3G, 4G, LTE, WIFI Low, WIFI High)
  • Streaming audio or video to any device that supports flash video
  • Delivering video live or on demand with encryption and authentication

If you are working on or looking to do any of the above, you should become acquainted with Adobe’s HTTP Dynamic Streaming. We’ve got all the information you’ll need to help you get started.

Advantages of HDS over HTTP Progressive Downloading

There are several advantages of using Adobe HTTP Dynamic Streaming over HTTP progressive downloads , some of which include:

  • Delivery cost reduction by utilizing Internet caching infrastructure
  • Media navigation supporting enhanced seeking and start anywhere
  • Higher burstable capacity by utilizing standard CDN load-balanced networks and HTTP infrastructure caching
  • Live streaming with adaptive bitrate, DVR support, and integrated content protection powered by Flash Access
  • Continuous protection of content throughout the distribution chain, closing some potential vulnerabilities
  • OSMF for rapid custom video player development, offering easy integration with advertising and analytics
  • Bitrate throttling to help ensure only what is watched is delivered
  • Easier firewall traversal
wdt_IDnew_columnHTTP Dynamic StreamingRTMP Dynamic Streaming with Adobe Flash Media Server
1Flash PlayerReduced reach until Flash Player 10.1 is widely adoptedFlash Player 10 or later support (99% of all connected PCs)
2File FormatF4F format compatible only with HDS – same files cannot yet be delivered using RTMP streaming. Note: Progressive download is supported but requires additional development.Support for all Flash formats, including FLV and F4V. Note: F4F is not supported by Flash Media Server
3Publishing WorkflowAdditional workflow steps required to prepare content; special origin server required.Simple publishing workflow
4Content WorkflowRequires Flash Access 2RTMPe/SWF file verification for simple workflow; Flash Access 2 supported
5Live LatencyIncreased latency on live streams due to media fragmentation/encryption process before deliveryLow latency depending on deployment and buffer settings

HDS provides midstream quality adjustments for variable mobile bandwidth speeds

HLS streaming format

How HTTP Dynamic Streaming Works

HTTP Dynamic Streaming extends the F4V format using an additional standards-based MP4 fragment format (ISO/IEC 14496-12:2008) with the extension .f4f. This format allows HTTP “gets” to fetch and cache smaller portions of the media. Adobe has published the complete F4F format specification inside the F4V specification on Adobe Developer Connection.

The below image demonstrates how to prepare, deliver, consume, and protect video on demand (VOD) and live content using Adobe HTTP Dynamic Streaming.

HTTP dynamic streaming

Getting Started with HDS

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

HTTP Origin Module Installation

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, although FMS is not required. Download the HTTP Origin Module.

Video in F4F format

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.

To learn more about the .F4M, and .F4F file types, please check out John Crosby’s series on HTTP Dynamic Streaming.

You can also learn more about the F4F file format specification and F4M manifest specification.

wdt_IDnew_columnRTMP Dynamic StreamingHTTP Progressive DownloadHTTP Dynamic Streaming
1Flash Player VersionFlash Player 6 or laterFlash Player 7 or laterFlash Player 10.1 or later
2Quality of ServiceMeasured on bandwidth and performanceN/A – often resulting in poor user experienceMeasured on bandwidth plus performance
3Adaptive BitrateYesNoYes
4Publishing WorkflowSimpleSimplePackaging plus manifest file required
5Content ProtectionReal time (RTMPe), SWF file verification, Flash Access DRMFlash Access DRM for VOD onlyFlash Access DRM for both live and VOD
6Live SupportYesNoYes
7Live LatencyLess than 1 second*N/ALess than 30 seconds**
8Synchronous CommunicationYesNoN/A
9LoggingYesNoN/A
10CacheableNoYesYes

*Live latency for RTMP may vary depending on network infrastructure and buffer settings.
**Live latency for HTTP Dynamic Streaming may vary depending on encoding, fragmentation, and buffer settings.

How Encoding.com Supports HDS

We at Encoding.com make it very easy to work with HDS. There are a few options for streaming this type of content:

  • Flash Media Server on Dedicated Server
  • Flash Media Server on AWS CloudFront or other CDN that support HDS
  • Wowza
  • Apache with Adobe Origins plugin

*HDS will work on AWS CloudFront only via their special Flash Media Server subscription.

To stream on-demand media using Adobe’s HTTP Dynamic Streaming (HDS) protocol choose the preset “Dynamic Streaming" from the encoding.com client interface/watch folder, or the parameter “HDS" from the Encoding.com API.

Note: To use Adobe’s HDS, the source media must be in MP4, FV4, or FLV compatible formats. Please transcode your video into one of this formats before using the HDS preset.

Special Note: Because the HDS output creates multiple files from a single source file you have the option to tar the output output tar = yes. If you chose to tar your HDS output the file extension of your output video should be set to .tar. For example in the destination field of your request you would specify: ftp://username:password@ftp.webaddress.com/hds/myhdsvideo.tar In this case all multiple outputs will be combined in a single tar ball for you to unpack on your own at a later day. Set tar file = no to send all the files unpacked to the directory specified in your destination path.

Most Important Note: The extension of your output video name should be set to .f4m. For example in the destination feild of your request you would specify ftp://username:password@ftp.webaddress.com/hds/myhdsvideo.f4m In this example all of the HDS compatible files will be sent to the root directory /hds so it is advised you create a separate directory for the HDS output.

The HDS preset will create the following outputs and send them to your specified destination:

.f4f A segment.



The tool outputs one or more F4F files. Each file contains a segment of the source file. Each segment contains one or more fragments of content. A player can use a URL to address each fragment. You may customize your multibitrate settings, however our default multibitrate segments are 300k, 600k, and 1200k. Always specify bitrates from lowest to highest so the manifest file will be created accurately.

Assuming source file name was myhdsvideo, you would receive the following .4f4 files:

1. myhdsvideoSeg1.f4f
2. myhdsvideo_300kSeg1.f4f
3. myhdsvideo_600kSeg1.f4f
4. myhdsvideo_1200kSeg1.f4f

.f4m Flash Media Manifest file.

Contains information about codec, resolution, and the availability of multi-bitrate files. In this case your would receive the following .4fm files:

Assuming source file name was myhdsvideo, you would receive the following .4fm files:

1. myhdsvideo_300k.f4m
2. myhdsvideo_600k.f4m
3. myhdsvideo_1200k.f4m

.f4x Index file.

Contains the location of specific fragments within a stream.

Assuming source file name was myhdsvideo, you would receive the following .4fx files:

1. myhdsvideoSeg1.f4x
2. myhdsvideo_300kSeg1.f4x
3. myhdsvideo_600kSeg1.f4x
4. myhdsvideo_1200kSeg1.f4x

HDS Output from Encoding.com can be used on any Flash Media Server or as as extension to any web server running Apache HTTP Server version 2.2 with the Adobe HTTP Origin Module Installed. Read more from Adobe on the HTTP Origin Module. Adobe’s HDS is also supported by many popular Flash players, for example Flowplayer supports of http streaming.

For more information on Adobe’s HTTP Streaming technology visit Adobe product page on the topic.

Below is a complete example of a multibitrate Adobe HDS API request:

Example XML of a HDS API request:

<?xml version="1.0"?>
<query>
<action>AddMedia</action>
<userid>XXXXX</userid><userkey>XXXXXXXXXXXXXXXXXXXXXXXXXXX</userkey><source>http://pc-upload.s3.amazonaws.com/7e450653180b0aa908e42054d7a1e676_17563.mov?nocopy</source>
<notify>gregg@encoding.com</notify>
<region>us-east-1</region>
<format>
<output>hds</output>
<destination>ftp://hdstest:XXXXXXX@ftp.ord1-1.websitesettings.com/hds/myhdsvideo.f4m</destination><audio_bitrate>128k</audio_bitrate><audio_sample_rate>48000</audio_sample_rate><audio_channels_number>2</audio_channels_number><framerate>24</framerate>
<keep_aspect_ratio>yes</keep_aspect_ratio><video_codec>libx264</video_codec><VCodecParameters>no</VCodecParameters><audio_codec>libfaac</audio_codec>
<two_pass>no</two_pass>
<turbo>no</turbo>
<twin_turbo>no</twin_turbo>
<cbr>no</cbr>
<deinterlacing>auto</deinterlacing>
<keyframe>48</keyframe>
<audio_volume>100</audio_volume>
<rotate>def</rotate>
<strip_chapters>no</strip_chapters>
<file_extension>tar</file_extension>
<hint>no</hint>
<set_rotate>source</set_rotate>
<bitrates>300k,600k,1200k,2400k</bitrates>
<pack_files>no</pack_files>
<metadata>
<copy>no</copy>
</metadata>
</format>
</query>

Sign up to receive a full featured account that includes access to the web interface, watch folder and an API key. Start encoding HLS content today with 1GB free per month.

Sign Up

Encoding.com

  • Log In
  • Sign Up
  • Free Consult
  • Careers
  • Contact Us

Help Center

  • Knowledge Base
  • FAQ
  • SLA
  • Terms of Use
  • Privacy

Recent Posts

  • Streaming Media Names Encoding.com a Top 50 Innovative Company

    For the ninth straight year Encoding.com has been named to Streaming Media’s

    10 August, 2020
  • Become a Responsible Citizen of the Internet with CABR Encoding

    VOD consumption is reaching unprecedented levels as people around the world fight

    21 July, 2020
  • RT  @krishnavrao : Jeff Malkin (President of  @encodingdotcom ) talks about the challenges of QC, and cloud-based validation of High-Value Asse…

    1 month ago
  • Don't forget to sign up for our webinar with Content+Technology Magazine  @philsandberg  on 12/8 to hear about the… https://t.co/IeQ3Krp7N0

    2 months ago
  • https://t.co/aGwkhHWOFk Fall 2020 News - https://t.co/Nco4mF3syD

    2 months ago
Encoding.com • Encoding Intelligence™ • Copyright 2016 Encoding.com • All Rights Reserved
  • Cloud Solutions
    • On Demand
    • HybridCloud
    • Reserved Cloud
  • Media Services
    • Features
      • Formats
      • Quality Control
      • Speed
      • Playout Graphics and Editing
      • Interfaces
      • Closed Captioning
      • Cloud Security
    • Packaging
      • HTTP Live Streaming (HLS)
      • Microsoft Smooth Streaming (MSS)
      • HTTP Dynamic Streaming (HDS)
      • Dynamic Adaptive Streaming over HTTP (DASH)
      • Dynamic Ad Insertion (DAI)
    • Digital Rights Management
      • Google Widevine
      • Microsoft Playready
      • Apple Fairplay
    • Integrations
      • Cloud Storage
      • Akamai
      • Aspera FASP
      • Beamr CABR
      • Dolby
      • Dolby Vision
      • Harmonic
      • Nielsen
  • About Us
    • Our Story
    • Our Team
    • Case Studies
    • Contact Us
    • Blog
  • Resources
    • Apple ProRes
    • AVOD
    • Beamr
    • DAI
    • Dolby Vision
    • DRM
    • Ludicrous Mode
    • QC
    • SVOD
  • Contact Us
Encoding.com

Are you sure?

Please confirm deletion. There is no undo!