Documentation

Handler: Audio/Video Streaming

This handler is used to stream media files. Both audio and video files are supported.

The two main features of this module are:

  1. Automatic Traffic Shaping: All the media files handled by this module will be analyzed, so it figures the media bitrate. Once the module knows it, it will limit the speed to that bitrate, so server bandwidth is not wasted in the case the client stops watching or listening to the file before it has finished. This feature also helps the server to handle a higher user concurrency before the bandwidth limit is reached.

  2. Seeking support: There are some web media players that support media seeking by using a ?start= parameter. So far, this method is supported for FLV files, and it will be eventually supported for H264 videos as well.

If the Automatic Traffic Shaping is enabled, all the media formats will be streamed, independently on whether or not seeking is supported for that format. For instance, even though seeking wouldn’t work, any MP3, OGG, AVI or Matroska file would be streamed according to their bitrate.

Parameters: Listing

Parameters Type Description

Auto Rate

boolean

Whether to enable the bitrate based bandwidth limit.

Speedup Factor

float

Optional. It is the factor by which the bandwidth limit would be multiplied. Default: 0.1.

Initial Boost

number

Optional. Seconds of media that should be sent before setting the bandwidth limit. This allows the client to buffer some media. Default: 5 (seconds).

Notes on FLV streaming

It is important to remember that FLV videos must be indexed. It is only possible to seek along the media file if it has some meta data tags. Without these tags, seeking just would not work.

There are tools like FLVTool2, FLVMDI or Yamdi that can be used to insert these tags.

Notes on H264 (mp4) streaming

H264 files must be written in a special way so the server can stream them. If a H264 file is ready for progressive streaming, Flash 9 (and higher) will be able to play it while it’s being downloaded.

From a technical point of view, the server needs the H264 file to have its moov atoms (or boxes) in front of the data. The qt-faststart.c program - shipped with FFMpeg - rewrites H264 files so their atoms are placed in the required order.