A .wma file is an Advanced Systems Format (ASF) file, the container Microsoft
publishes in its ASF specification. The specification PDF itself was not opened for these
pages. Most layouts here were confirmed against open-source parsers (hachoir, VLC and
FFmpeg). Those for the Script Command, Content Branding, encryption and signature
objects, Group Mutual Exclusion, Bandwidth Sharing, Compatibility, the Index, Media Object
Index and Timecode Index objects could not be checked that way and should be treated
as unconfirmed. All numbers are little-endian. The site’s
WMV page covers the same container for video.
Every object
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 16 | object ID | a GUID |
| 16 | 8 | object size | the size of the whole object, including these 24 bytes |
| 24 | varies | object data | depends on the type |
A GUID is written as 75B22630-668E-11CF-A6D9-00AA0062CE6C but
stored with its first three groups little-endian, so that one is on disk as
30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C.
Top-level objects
A file is the following objects, in this order. Only the first two are required.
| Object | Holds |
|---|---|
| Header Object | the file’s description, in nested objects; always first |
| Data Object | the media, in packets |
| Index objects | Simple Index, Index, Media Object Index and Timecode Index objects, optional, used for seeking |
The Header Object
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 24 | common fields | ID 75B22630-668E-11CF-A6D9-00AA0062CE6C and size |
| 24 | 4 | number of header objects | how many objects are inside |
| 28 | 1 | reserved 1 | 01 |
| 29 | 1 | reserved 2 | 02 |
| 30 | varies | header objects | the nested objects, each as described above |
Object GUIDs
| Object | GUID | Page |
|---|---|---|
| Header | 75B22630-668E-11CF-A6D9-00AA0062CE6C | this page |
| Data | 75B22636-668E-11CF-A6D9-00AA0062CE6C | data packets |
| Simple Index | 33000890-E5B1-11CF-89F4-00A0C90349CB | index objects |
| Index | D6E229D3-35DA-11D1-9034-00A0C90349BE | index objects |
| Media Object Index | FEB103F8-12AD-4C64-840F-2A1D2F7AD48C | index objects |
| Timecode Index | 3CB73FD0-0C4A-4803-953D-EDF7B6228F0C | index objects |
| File Properties | 8CABDCA1-A947-11CF-8EE4-00C00C205365 | header objects |
| Stream Properties | B7DC0791-A9B7-11CF-8EE6-00C00C205365 | header objects |
| Header Extension | 5FBF03B5-A92E-11CF-8EE3-00C00C205365 | header extension |
| Codec List | 86D15240-311D-11D0-A3A4-00A0C90348F6 | header objects |
| Script Command | 1EFB1A30-0B62-11D0-A39B-00A0C90348F6 | header objects |
| Marker | F487CD01-A951-11CF-8EE6-00C00C205365 | header objects |
| Bitrate Mutual Exclusion | D6E229DC-35DA-11D1-9034-00A0C90349BE | header objects |
| Error Correction | 75B22635-668E-11CF-A6D9-00AA0062CE6C | header objects |
| Content Description | 75B22633-668E-11CF-A6D9-00AA0062CE6C | header objects |
| Extended Content Description | D2D0A440-E307-11D2-97F0-00A0C95EA850 | header objects |
| Content Branding | 2211B3FA-BD23-11D2-B4B7-00A0C955FC6E | header objects |
| Stream Bitrate Properties | 7BF875CE-468D-11D1-8D82-006097C9A2B2 | header objects |
| Content Encryption | 2211B3FB-BD23-11D2-B4B7-00A0C955FC6E | header objects |
| Extended Content Encryption | 298AE614-2622-4C17-B935-DAE07EE9289C | header objects |
| Digital Signature | 2211B3FC-BD23-11D2-B4B7-00A0C955FC6E | header objects |
| Padding | 1806D474-CADF-4509-A4BA-9AABCB96AAE8 | header objects |
| Extended Stream Properties | 14E6A5CB-C672-4332-8399-A96952065B5A | header extension |
| Advanced Mutual Exclusion | A08649CF-4775-4670-8A16-6E35357566CD | header extension |
| Group Mutual Exclusion | D1465A40-5A79-4338-B71B-E36B8FD6C249 | header extension |
| Stream Prioritization | D4FED15B-88D3-454F-81F0-ED5C45999E24 | header extension |
| Bandwidth Sharing | A69609E6-517B-11D2-B6AF-00C04FD908E9 | header extension |
| Language List | 7C4346A9-EFE0-4BFC-B229-393EDE415C85 | header extension |
| Metadata | C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA | header extension |
| Metadata Library | 44231C94-9498-49D1-A141-1D134E457054 | header extension |
| Index Parameters | D6E229DF-35DA-11D1-9034-00A0C90349BE | header extension |
| Media Object Index Parameters | 6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7 | header extension |
| Timecode Index Parameters | F55E496D-9797-4B5D-8C8B-604DFE9BFB24 | header extension |
| Compatibility | 26F18B5D-4584-47EC-9F5F-0E651F0452C9 | header extension |
| Advanced Content Encryption | 43058533-6981-49E6-9B74-AD12CB86D58C | header extension |
Other GUIDs
| Name | GUID | Used for |
|---|---|---|
| Audio media | F8699E40-5B4D-11CF-A8FD-00805F5C442B | the stream type of an audio stream |
| Video media | BC19EFC0-5B4D-11CF-A8FD-00805F5C442B | the stream type of a video stream |
| Command media | 59DACFC0-59E6-11D0-A3AC-00A0C90348F6 | the stream type of a script command stream |
| Binary media | 3AFB65E2-47EF-40F2-AC2C-70A90D71D343 | the stream type of a binary stream |
| Extended audio | 31178C9D-03E1-4528-B582-3DF9DB22F503 | the stream type used in the Extended Stream Properties Object |
| No error correction | 20FB5700-5B55-11CF-A8FD-00805F5C442B | the error correction type of a stream without it |
| Audio spread | BFC3CD50-618F-11CF-8BB2-00AA00B4E220 | the error correction type that spreads audio across packets |
| Reserved 1 | ABD3D211-A9BA-11CF-8EE6-00C00C205365 | the reserved field of the Header Extension Object |
| Reserved 2 | 86D15241-311D-11D0-A3A4-00A0C90348F6 | the reserved field of the Codec List Object |
| Exclusion: language | D6E22A00-35DA-11D1-9034-00A0C90349BE | the exclusion type in mutual exclusion objects |
| Exclusion: bitrate | D6E22A01-35DA-11D1-9034-00A0C90349BE | the exclusion type in mutual exclusion objects |
| Exclusion: unknown | D6E22A02-35DA-11D1-9034-00A0C90349BE | the exclusion type in mutual exclusion objects |
Other media types exist for JPEG and file-transfer streams. They do not appear in audio files, so they are not listed.