Unofficial M3U and PLS Specification
Written by Sawg
Home

Winamp playlists are just a text file containing links to the location of the proper file. You can crate or edit a playlist in any text editor. It could be anything to MP3, WMA, or even another playlist. Just because something is in a playlist, doesn't mean Winamp can play it though. Winamp will just skip over unknown file formats. This document will hopefully toy to clarify the differences of the playlist formats available.

Generic M3U/PLS
A list of links to files makes a valid generic playlist. The entry can be relative (i.e. \files\song.mp3) or specific (i.e. c:\media\files\son.mp3). Also, URLs can he inserted to point to a stream or a file on the Internet.

Here are a few sample generic MP3/PLS files:

A Simple M3U

sample.m3u

code: Alternative\Band - Song.mp3 Classical\Other Band - New Song.mp3 crap.mp3 F:\more music\foo - bar.mp3 http://www.site.com:8000/listen.pls http://www.site.com/~user/mine.mp3


- Alternative and Classical are sub-directories of the directory that this playlist is stored in.
- "Song" and "New Song" are in sub-directories that this playlist is stored in.
- "Crap" is in the same directory that the playlist is stored in.
- "Foo - Bar" is in the specified directory, which may or may not be the same directory the playlist is in.
- http://www.site.com:8000/listen.pls is a Shoutcast stream.
- "Mine" is a MP3 stored on a web server somewhere.

These path options hold true of the extended playlists described below.

Extended M3U

Let's first look at an extended M3U file then I will describe everything below

sample2.m3u

code:
#EXTM3U
#EXTINF:233,Everclear - So Much For The Afterglow
Alternative\everclear - SMFTA.mp3
#EXTINF:227,Weird Al - Everything You Know Is Wrong
Comedy\Weird Al - Everything You Know Is Wrong.mp3
#EXTINF:187,Weird Al Yankovic - This is the Life
Weird Al - This Is The Life.mp3
#EXTINF:129,Weird Al: Bad Hair Day - Gump
http://www.site.com/~user/gump.mp3
#EXTINF:-1,My Cool Stream
http://www.site.com:8000/listen.pls

Explanation of entries:


#EXTM3U At the VERY top of the Extended M3U file is this header, which signifies this is an extended M3U file. '#EXTM#U" must be all capital letters.

#EXTINF:233,Everclear - So Much For The Afterglow: This is the line that tends to confuse people. Let's break it up into parts
- #EXTINF:: This signifies this is an Extended Information field. It ends with a colorn (:).
- 233,: This is the time of the file in seconds followed by a comma. (233 seconds = 3:53). On the last entry there is a negative one, this is usually seen on streams, it tells the program to ignore the time entry.
- Everclear - So Much For The Afterglow: Title to display. This is usually the title read from the file name or ID3 tags. This also can be the name of a stream. No characters follow the title.
Alternative\everclear - SMFTA.mp3: File location as described above with basic playlists.

Extended PLS (PLSv2)

Same playlist from the M3U section in PLS format.

code:
[playlist]
File1=Alternative\everclear - SMFTA.mp3
Title1=Everclear - So Much For The Afterglow
Length1=233
File2=Comedy\Weird Al - Everything You Know Is Wrong.mp3
Title2=Weird Al - Everything You Know Is Wrong
Length2=227
File3=Weird Al - This Is The Life.mp3
Title3=Weird Al Yankovic - This is the Life
Length3=187
File4=http://www.site.com/~user/gump.mp3
Title4=Weird Al: Bad Hair Day - Gump
Length4=129
File5=http://www.site.com:8000/listen.pls
Title5=My Cool Stream
Length5=-1
NumberOfEntries=5
Version=2

Explanation of entries:

[playlist]: Signifies that this is a playlist. This is case sensitive.

File#=: Location of the file in any of the formats described above. This is also case sensitive. Also the # sign after "File" signifies what file number it is. The first file in the playlist is "File1", the second is "File2" and so on.

Title#=: Title to display. This is usually the title read from the file name or ID3 tags. Like the other fields, this is case sensitive. This also can be the name of a stream. Like "File#" the pound sign (#) is replaced by the entry number that is in the playlist.

Length#=": Length in seconds, this is aloe case sensitive. On the last entry there is a negative one, this is usually seen on streams, it tells the program to ignore the time entry. Like "File#" the pound sign (#) is replaced by the entry number that is in the playlist.

NumberOfEntries=#: The total number of entries in the playlist. This should match the last number on the "File#", "Title#", and "Length#" fields. Also case sensitive.

Version=2: This required entry near the bottom tells the player what format the PLS is in. Older versions of the PLS format did not include this. Like everything else, it is case sensitive.

Home

Search SCVI.NET using Mozilla or FireFox.

Search SCVI.NET using Internet Explorer below.
Google
  Web www.scvi.net
[ German | Portuguese | Spanish | French | Italian ]

International language support provided by Google.com