Deliver On-Demand and Live Adaptive Bitrate Video with HTTP Streaming
- Random seeking to any part of the timeline at any time.
- Starting playback in the middle of the clip's timeline.
- Support for H264 and VP6 codecs.
- Multi-bitrate streaming support.
- Http Dynamic Streaming support.
- DRM content protection support.
- Live DVR Http streaming support.
Required tools and server-side products
The F4FPackager Tool for Windows and Linux is used to package the media files. This tool generates the required file fragments and F4M Manifest files. Multi-Bitrate packaging support is also available.
For live streaming a Live HTTP Packager application is available in the Flash Media Server.
The Adobe Http Streaming solution requires an Apache HTTP Origin Module installed and configured. The HTTP Origin Module will serve the required fragment which is determined from the bootstrap information packaged into the F4M Manifest file, generated by the F4FPackager and Live Streaming Packager.
Adobe Flash Access can be used for content protection however at this time, Wowza Media cannot package Flash Access DRM, it requires a manual process using the F4FPackager tool.
The advantage of using Httpstreaming is the ability to seek in the timeline to positions that have not been downloaded yet to the player as it will seek to a new fragment and due to its small size be available instantly to the client. This solution is similar to Pseudostreaming where a position of the video is accessible instantly, however it is a video fragment streaming solution, where the smaller chunks are easily downloadable and buffered.
- Bandwidth detection and dynamic bitrate selection are supported by the dedicated Bwcheck HTTP Streaming plugin
The httpstreaming plugin requires the F4M clip resolver plugin to resolve the streams from the F4M manifest file.
Example with Wowza HTTP Dynamic Streaming and Live DVR
This configuration example shows the integration of DVR features with Wowza Streaming Server. The Httpstreaming plugin together with the F4M plugin will configure required settings to determine it's a Live DVR stream from the manifest playlist and provides the ability to either start at the Live stream position or the DVR position. When starting at the Live position it will be possible to seek back into the DVR position to catch up on the stream.
Client buffering to either a Live and DVR buffering length are settable via the F4M to override the default. Multi-bitrate streaming buffering options are also available.
Note: There is a limitation currently displaying between Live and DVR position in the controlbar so simply seeking to the end will catch up to the Live stream position.
Caveat: For Wowza users this system uses the functionality provided by Open Source Media Framework, there is currently an issue with Live DVR keyframes, the fragments parsed and buffering. It is required to set the F4M plugin liveBufferTime or dvrBuffertime config properties to 2-3 times the keyframe intervals for instance if the encoder is a 4 second keyframe interval it will be 12 seconds of buffer length.
When setting up DVR streams specify
dvr as value of the
streamType tag in the
Live configuration options
Configures to start a Live DVR stream at the Live position.
An offset used to determine the Live position to initially seek to in a Live DVR recording stream.
Setting up the Apache HTTP Origin Module
The Apache HTTP Origin Module is needed.
- You can download the module here.
- Install the module and the required libraries into the specified path where Apache modules are installed ie "/usr/lib/apache2/modules" or a custom path like "/opt/adobe/f4fmodule"
- Configure the apache server config to load the module like so:
- In the specified Apache virtualhost config, configure a Location path to enable the module when requesting the custom path like so:
- For configuring Live Http Streaming, the paths are needed to be configured to the Flash Media Server application path like so:
The F4FPackager tool is required to package vod streams ready for http streaming playback.
- First download and install the tool
- Setup the environment path for the tool like so:
- Provide a Flash compatible H264 and VP6 encoded video.
Packaging for a single bitrate
A basic example of packaging a single bitrate file.
This will produce set of files including the fragement F4F files and the F4M manifest file used for the plugin clip url.
Packaging for multi-bitrate
Here's a basic example of packaging for multiple bitrates. For each video bitrate the previously generated manifest file is used and the generated manifest file for the largest bitrate is used for the plugin clip url.
This will produce the fragment F4F files and provide the F4M manifest file containing all the available bitrates.
F4FMbrPackager Java Tool
A command line Java application is available designed to simplify packaging multi bitrate streams by specifying an input directory of files or a given list of bitrates and specifying one of the input files.
There are windows and unix shell scripts available to launch the application, the environment variable "F4FPACKAGER" is used to tell the program where the f4fpackager tool is installed.
Note: When processing the files, the application assumes a seperator prefix of "_" or "-" is being used.
A basic example of running the application with a given list of bitrates and a source file.
Another example of running the application by giving it an input path of files to process, this will process many different videos at once. Each set of videos have the specified bitrates in the filenames given by the required seperator.
F4FPackager and Apache Http Origin Module Download
F4F MBR Packager Java Application
just the working flash file to get you going
working flash file (swf) + README.txt and LICENSE.txt
Please right-click and choose "Save link as..." (or similar)
Note: For XSS security reasons Flash plugins must be located
at and loaded from the same domain as the core player
This is a Flash plugin, and its features are therefore not available on iOS. For iOS please consult the ipad plugin.
See the version history for this tool.
Found a bug?