Microsoft Advanced Streaming Format
- "WMA" redirects here. For the codec see Windows Media Audio.
- Extensions: asf, wmv, wma
- Company: Microsoft
- MIME Types:
- asf: video/x-ms-asf or application/vnd.ms-asf
- wmv: video/x-ms-wmv
- wma: video/x-ms-wma
Advanced Streaming Format (sometimes known as Active Streaming Format) is a container format designed by Microsoft to support audio and video playback from a variety of sources including both local playback and internet delivery. The format is designed to allow playback to commence without the complete file being available. This makes it suitable for internet use where playback can begin soon after download commences or for PVR-type functions such as pausing live TV.
The container can be used to hold a variety of video and audio codecs but it is most commonly used for the WMV and WMA codecs. Other streams such as subtitles can also be included in the format.
The format supports inclusion of meta-data such as video clip name, song title etc. Support for DRM is also provided.
There are 2 versions of ASF.
1.0, the used and unpublished format.
http://avifile.sourceforge.net/asf-1.0.htm
And 2.0, which is the published and unused format.
http://www.microsoft.com/windows/windowsmedia/format/asfspec.aspx
A variation of ASF is DVR-MS.
Data Format
An ASF file consists of a header object that contains meta data and stream definitions, followed by a sequence of data packets which are all the same size. An ASF file may have a variety of optional index objects at the end of the file.
It is not obvious from examining raw ASF data but the files are organized according to the same chunked paradigm that many multimedia container formats use. However, rather than using FourCCs and 32-bit length fields to delimit the chunks, ASF files use 128-bit (16-byte) globally unique indentifiers (GUIDs) and 64-bit lengths.
Each data packet in the format can consist of one or more sub-packets often referred to as payloads. Payloads within a data packet can represent different streams. A single video frame can be spread across multiple payloads and can also span across more than one data packet.
These payloads are called "fragments" in the 1.0 specification linked above.
For ASF files that use encryption, each such fragment is encrypted independently.