A .wma file stores most of its tags in the Extended Content Description
Object, inside the Header Object, and
the title, author, copyright, description and rating in the
Content Description
Object. The Metadata and Metadata Library objects in the
header extension use the same
names and value types, per stream.
Extended Content Description Object
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 2 | content descriptors count | |
| 2 | varies | descriptors | as below |
| Size | Field | Meaning |
|---|---|---|
| 2 | name length | in bytes |
| varies | name | UTF-16 |
| 2 | value data type | a type code |
| 2 | value length | in bytes |
| varies | value | as the type says |
Value types
| Code | Type | Size in Extended Content Description | Size in Metadata and Metadata Library |
|---|---|---|---|
| 0 | Unicode string | varies | varies |
| 1 | byte array | varies | varies |
| 2 | boolean | 4 bytes | 2 bytes |
| 3 | DWORD | 4 bytes | 4 bytes |
| 4 | QWORD | 8 bytes | 8 bytes |
| 5 | WORD | 2 bytes | 2 bytes |
| 6 | GUID | 16 bytes | 16 bytes (Metadata Library only) |
Common attribute names
The names most often used for music. The Microsoft attribute list has the full set.
| Name | Type | Holds |
|---|---|---|
WM/AlbumTitle | string | album |
WM/AlbumArtist | string | album artist |
WM/Composer | string | composer |
WM/Conductor | string | conductor |
WM/Genre | string | genre as text |
WM/GenreID | string | genre identifier |
WM/Year | string | year |
WM/TrackNumber | string | track number (use this rather than WM/Track) |
WM/Track | string | an older track field, counted from zero |
WM/PartOfSet | string | disc number |
WM/Lyrics | string | lyrics |
WM/Lyrics_Synchronised | binary | timed lyrics in a WM_SYNCHRONISED_LYRICS structure |
WM/Picture | binary | picture: below |
WM/Publisher | string | label |
WM/Provider, WM/ProviderRating | string | the store and its rating |
WM/MCDI | binary | CD identifier |
WM/EncodingTime | QWORD | encoding time as a FILETIME |
WM/ToolName, WM/ToolVersion | string | the tool that made the file |
WMFSDKVersion, WMFSDKNeeded | string | the Windows Media Format SDK version used and needed; written by encoders |
Duration, Bitrate, Seekable, Is_Protected | as listed | derived attributes the SDK computes from the file’s properties |
WM/Picture
| Size | Field | Meaning |
|---|---|---|
| 1 | picture type | the same numbers as the ID3v2 APIC frame, for example 3 for the front cover |
| 4 | data length | bytes of picture data |
| varies | MIME type | UTF-16, zero-terminated |
| varies | description | UTF-16, zero-terminated |
| varies | picture data |