Introduction

The aim of this file is to show the different aspects of metadata which can be obtained as part of the SHOUTcast 2.0 system. This aims to be a complete list of what is provided in the xml file which the server will provide and is based on the metadata obtained from the media being played (directly or guessed). As a result, not all fields will be filled in though this depends on the setup being used and what the SHOUTcast source implements.

Specification Details

The following is an example xml file output showing the different aspects of the metadata which could be returned along with specific notes about certain fields i.e. those which can appear multiple times or those from older mappings. One thing to notice is that this is somewhat similar to the ID3v2.3 tag as well as some aspects of the ID3v2.4 tag.

Actual SHOUTcast 2 sources are not guaranteed to return the majority of the fields
shown but provision is provided for them to be sent if detected from source media.

<?xmlversion="1.0"encoding="UTF-8"?><metadata><!-- ALBUM --><TALB>The Blue Album</TALB><!-- GENRE (Content type). The v1 value is the ID3V1 genre code. The text is a genre refinement --><TCONv1="24">Subgenre</TCON><!-- Note that code or subgenre may be missing. There can be more than one of these present --><TCONv1="RX"></TCON><!-- The genre code can also be RX (remix) or CR (cover) --><TCON>Death Metal</TCON><!-- Song TITLE --><TIT2>Back In the U.S.S.R.</TIT2><!-- ARTIST. There can be more than one of these present --><TPE1>The Beatles</TPE1><!-- Recording time --><TDRC><!-- YEAR --><year>2008</year><month>12</month><day>25</day><hour>13</hour><minute>24</minute><!-- If this is missing then assume it is UTC --><zone>Z</zone></TDRC><!-- COMMENT. There can be more than one of these present --><COMMlanguage="eng"id="whatever">
This is a comment
</COMM>
.
<COMMlanguage="eng"id="more">
This is another comment
</COMM><!-- Universal file identifier. The content is base64 encoded binary data --><UFIDid="http://www.neil.com">00000003f32f17</UFID><!-- Beats per minute. Numeric --><TBPM>60</TBPM><!-- Composer. There can be more than one of these present --><TCOM>Paul McCartney</TCOM>
.
<TCOM>John Lennon</TCOM><!-- Copyright message --><TCOP>2008 Neil Radisch</TCOP><!-- Playlist delay (milliseconds between songs in playlist) --><TDLY>45</TDLY><!-- Identifier of the program providing the source audio --><TENC>My SHOUTcast Source v3.L337</TENC><!-- Provides name of the DJ connection if changed whilst streaming is active --><!-- This is primarily for the Transcoder to pass on DJ information to the server --><DJ>Super</DJ><!-- A related page which a client can use to get or show additional information --><!-- about the currently playing song as v1 clients were able to access previously --><URL>http://www.aol.com/backinussr.html</URL><!-- Lyricist and / or text writer. There can be more than one of these present --><TEXT>Oscar Hammerstein</TEXT>
.
<TEXT>Lorenz Hart</TEXT><!-- Content group description --><TIT1>Concept Album</TIT1><!-- Subtitle --><TIT3>Those Ukraine Girls</TIT3><!-- Musical key of song --><TKEY>C#</TKEY><!-- Language in audio described as 3 letter code based on the ISO-639-2 format. There can be more than one of these present --><TLAN>eng</TLAN>
.
<TLAN>sve</TLAN><!-- Length of the audio in milliseconds --><TLEN>60000</TLEN><!-- Information about the source media type --><TMED>(VID/PAL) four channel</TMED><!-- Original album, movie or show --><TOAL>The White Album</TOAL><!-- Original file name --><TOFN>bit_ussr.mp3</TOFN><!-- Original lyricists / text writers. There can be more than one of these present --><TOLY>Jean Paul Satre</TOLY>
.
<TOLY>Ayn Rand</TOLY><!-- Original artist. There can be more than one of these present --><TOPE>Bruce Springstein</TOPE>
.
<TOPE>E Street Band</TOPE><!-- Original release time --><TDOR><year>2008</year><month>12</month><day>25</day><hour>13</hour><minute>24</minute><!-- If this is missing then assume it is UTC --><zone>Z</zone></TDOR><!-- Owner or licensee of the file --><TOWN>Ascap</TOWN><!-- Additional performer information --><TPE2>Featuring Yoko Ono</TPE2><!-- Name of conductor --><TPE3>Zubin Mehta</TPE3><!-- Who did the remix or other interpretation of the original --><TPE4>Sonic cleanup corp</TPE4><!-- Part number (2 of 4 discs) Note: total is optional --><TPOStotal="4">2</TPOS><!-- Name of label or publisher --><TPUB>Capitol Records</TPUB><!-- Track number (e.g. 6 of 24 tracks). Note: total is optional --><TRCKtotal="24">6</TRCK><!-- Name of the internet radio station from where this is being broadcast --><TRSN>Neils Radio Station</TRSN><!-- Owner of the source internet radio station --><TRSO>Neil Radisch</TRSO><!-- Size of the audio in bytes (excluding ID3v2 tag) --><TSIZ>3456627</TSIZ><!-- International Standard Recording Code (ISRC) (12 characters) --><TSRC>FRZ039800212</TSRC><!-- Settings used for encoding --><TSSE>Profile 16</TSSE><!-- Custom text field. There can be more than one of these present but each must have a unique id attribute --><TXXXid="contents of neils garden">
Roses, grapes, raspberries, blackberries
</TXXX>
.
<TXXXid="contents of peters garden">
beans, kale, raspberries, blackberries
</TXXX><!-- Commercial information url of where the thing can be bought from. There can be more than one of these present --><WCOM>http://www.aol.com/getstuff.cgi</WCOM>
.
<WCOM>http://capitol.com/store.cgi</WCOM><!-- Website with copyright and terms of use information --><WCOP>http://www.aol.com/dontstealmusic.html</WCOP><!-- Website specific to the audio track --><WOAF>http://www.aol.com/backinussr.html</WOAF><!-- Artist / performer webpages. There can be more than one of these present --><WOAR>http://www.aol.com/paulmccartney.html</WOAR><WOAR>http://www.aol.com/johnlennon.html</WOAR>
.
.
<!-- Audio source web page --><WOAS>http://www.aol.com/beatles.html</WOAS><!-- Radio station web page --><WORS>http://shoutcast.com/search.cgi?Neil</WORS><!-- Website that allows you to pay for the file --><WPAY>http://get.com/pay.cgi?backinussr</WPAY><!-- Publishers web page --><WPUB>http://ascap.com</WPUB><!-- Custom url field. There can be more than one of these present but each must have a unique id attribute --><WXXXid="backup singers">http://yoko_ono.com</WXXX>
.
<WXXXid="engineers">http://george_martin.com</WXXX><!-- List of people involved in audio track. There can be more than one of these present --><IPLSrole="drummer">Ringo Starr</IPLS>
.
<IPLSrole="janitor">John Smith</IPLS><!-- Table of contents from the CD. The content is base64 encoded --><MCDI>000000000......</MCDI><!-- Lyrics. There can be more than one of these present --><USLTlanguage="eng"id="verse 1">
yeah yeah yeah oh baby yeah yeah yeah
</USLT>
.
<USLTlanguage="eng"id="verse 2">
oh oh oh baby baby baby
</USLT><!-- General binary encapsulated object. There can be more than one of these present --><GEOBmime="application/octet"filename="foo.bar"id="whatever">02305310</GEOB>
.
<GEOBmime="virus/binary"filename="kill.computer"id="die kitty">02305310</GEOB><!-- Play counter --><PCNT>45678</PCNT><!-- Popularimeter --><POPM><email>nradisch@panix.com</email><rating>35</rating><counter>5463767</counter></POPM><!-- Binary private data. The content is base64 encoded. There can be more than one of these present --><PRIVid="huh">2342512370</PRIV>
.
<PRIVid="huh2">34343434</PRIV></metadata>

Extended Specification Details

The main section of the xml file is to provide metadata information from the source media
as has been shown in the previous section. In additon to this, there is an extension for
the information provided which is optional and is for providing title information for the
media to follow the currently playing source media.

The extended section goes instead the <metadata/> block and is formatted as follows:

<extension><!-- Title of the currently playing media --><titleseq="1">Artist - Title</title><titleseq="2">The Next Artist - The Next Title</title>
.
<!-- Titles go upto the maximum number of titles the source knows off --><titleseq="XX">The Last Artist - The Last Title</title><!-- Title of the next item to be played --><soon>The Next Artist - The Next Title</soon></extension>

There is not a limit on how many titles can be sent though there is not much benefit of sending many titles as the SHOUTcast server is unlikely to use more than the current and the next titles. However the means to provide more titles is provided if there is a need.

The format of the titles after seq=1 need to be in the form of 'artist - title' where it is possible to format and provide the titles in this manner, otherwise just 'title' will suffice.

Where possible titles for seq=1 also need to be provided in the same manner as 'artist - title' though the DNAS will typically ignore this and generate the title to show clients based on the actual metadata passed. However it may resort to using this if there is an issue with the metadata provided, so ideally this title should be providing the fully formed version as well as for all other titles provided (as mentioned previously).

The <soon/> block must correctly report the title of the next item to be played otherwise it must be not specified in the xml if it is not known or cannot be reliably obtained e.g.

Using older versions of Winamp (prior to v5.61) in shuffle mode, there is no ability to query the next item to be played and so <soon/> would not be set.

Using any Winamp version not in shuffle mode, then it is possible to calculate the next item and so <soon/> can be set.

Additional Notes

The TDRC (recording time) field is used to replace the following date specifiers from the ID3v2.3 tag if found - TDAT, TYER and TIME. This is done to form 'yyyy-MM-ddTHH:mm:ss'. Additionally, if no TYER is found but TRDC is then the TYER field will be generated from the TRDC field for backwards compatibility.

The TDOR (original release time) will be created from the TORY (original release year) if the TORY field is read from the file, otherwise no other mapping of these fields happens.

Suggested Fields To Support

If an xml file is able to be created, then the minimum which can be provided is the TIT2 entry due to this being the most important information used throughout the SHOUTcast 2.0 system especially when working with legacy client connections. The following example xml shows the minimum which can be provided and is equivalent of the typical v1 style of the metadata formatted as 'artist - title' :

<?xmlversion="1.0"encoding="UTF-8"?><metadata><TIT2>Song Title - Song Artist</TIT2></metadata>

The typical metadata fields expected to be available from sources, though not guaranteed as the information may not be available from the source media are as follows:

It can be noted that this is similar to the information available from an ID3v1 tag with some stream related additions. However this is just a recommendation which provides the client some greater flexibility over the handling of the stream metadata. If not then the least number of fields to support should ideally be TIT2, TCON, TRSN, WORS and TENC.

<?xmlversion="1.0"encoding="UTF-8"?><metadata><TIT2>I Was Made For Lovin&apos; You</TIT2><TALB>The Very Best Of KISS</TALB><TPE1>Kiss</TPE1><TYER>2002</TYER><COMM></COMM><TCON>Hard Rock</TCON><TRSN>My Radio Station</TRSN><WORS>http://www.shoutcast.com</WORS><TENC>SHOUTcast Source DSP v2.3.1.182</TENC></metadata>

General Comments

Anyone using the xml file should not fail if tags appear in it which have not been listed in this document. In situations where this does happen then these extra tags should just be ignored. Some of the tags not considered in this version are:

GEOB - General Binary Glob

APIC - Picture Data

IMPORTANT NOTE: Support of APIC in the xml file is now deprecated as of March 2011 and is instead provided as an in-stream packet of its own instead of in this.

ETCO - Event Code Field

The ETCO tag has a format property where the supported values are:

0 - absolute time in MPEG frames
1 - absolute time in milliseconds

The ETCO tag can have one or more event sub-tags. The type property for the event tag is the type of event we're interested in (see ID3v2 docs for list of codes). The time property is the time the event occurs in units indicated by the format property of the outer ETCO tag.

TCON - Genre Field

TCON has a complicated internal format which consists of a series of optional genre codes stored in parenthesis which are followed by subgenre clarification strings (though everything is optional)
e.g.

This field is not currently as important to be parsed out as with the genre (TCON) field but is provided for a more complete set of information.

Non-MP3 Field Mapping

This section covers the mapping of metadata for files other than MP3 as is supported by the the SHOUTcast 2.0 tools.

AAC

If an ID3v2 tag is found then handling will follow the standard MP3 handling. If there is no tag then metadata guessing will be used as appropriately.

FLAC

If there are any Vorbis comments found in the FLAC file then the following mappings will be used to get an equivalent complement of metadata to match what is read from an ID3v2 tag:

Vorbis Comment

ID3v2 Entry

Vorbis Comment

ID3v2 Entry

TITLE

TIT2

VERSION

TPE4

ALBUM

TALB

TRACKNUMBER

TRCK

TRACK

TRCK

TOTALTRACKS

TRCK

ARTIST

TPE1

PERFORMER

TPE2

COPYRIGHT

TCOP

LICENSE

TOWN

ORGANIZATION

TPUB

ORGANISATION

TPUB

GENRE

TCON

DATE

TDRC

ISRC

TSRC

ALBUMARTIST

TPE2

ALBUM ARTIST

TPE2

COMMENT

COMM

COMPOSER

TCOM

PUBLISHER

TPUB

DISCNUMBER

TPOS

DISKNUMBER

TPOS

DISC

TPOS

DISK

TPOS

TOTALDISKS

TPOS

TOTALDISCS

TPOS

BAND

TPE2

LYRICS

USLT

CONDUCTOR

TPE3

ENCODING SETTINGS

TSSE

ENCODER SETTINGS

TSSE

ENCODERSETTINGS

TSSE

BPM

TBPM

RATING

POPM

COVERARTMIME

APIC

COVERART

APIC

Fields which are not in this list are then mapped to the custom text (TXXX) field with the key being the "description". Any picture metadata in the file will be mapped to the APIC field which is then transmitted in its own in-stream packet instead of in the xml.

OGG

OGG files are handled in a similar manner to FLAC files though there are some differences with the them. As there is no picture metadata in OGG files the COVERARTMIME and COVERART fields will be mapped to the APIC field due to a number of programmes which generate and adding artwork to OGG files in this way.