A MP3/RTP input plugin for Winamp
AOL/Nullsoft's "Winamp" audio player
receive and play multicast (RTP) MP3 audio sessions, using
a special input plugin:
This plugin allows Winamp to receive RTP-based MP3 streams directly,
the need for a separate multicast receiver 'helper application'
(such as "playRTPMPEG").
This plugin works for Winamp version 2 or 5.
It will not work for the ill-fated "Winamp3".
Downloading and installing the "in_rtp.dll" plugin
Download the binary file
and copy it to your Winamp "Plugins" folder
- usually "C:\Program Files\Winamp\Plugins".
Receiving MP3/RTP streams using the plugin
With the "in_rtp.dll" plugin installed, you can receive a MP3/RTP stream
from Winamp by giving it the
"Open Location" command (<control>-l ('ell')), and entering the
You can also use this pseudo-URL if you start Winamp from a command shell, e.g.,
- Please run Winamp version 2 (2.6 or later) or 5.
The plugin will not work with "Winamp3".
- Winamp sometimes gets confused (and appears to hang) if the input stream's MPEG parameters
(e.g., its sampling frequency) changes while it's running.
If this happens you can often recover by clicking Winamp's "play"
button once again.
- To receive the
more loss-tolerant 'ADU-based' RTP payload
format "mpa-robust" (as defined in RFC 3119), add a 'directory path' of
to the URL, e.g.,
<RTP-payload-format-number> must be a dynamic
RTP payload format number - i.e., in the range [96,127].
- To receive a source-specific multicast session,
append the desired source address to the multicast address,
using a comma as separator, e.g.,
- By default, the plugin sends multicast RTCP reports with a TTL of
To use a different TTL, add a 'directory path' of
to the URL, e.g.,
- To output the plugin's version number (to 'stderr'), add a 'directory path' of
to the URL.
(Note: The version number will be output as an error message, and Winamp
- This plugin can also receive special 'staggered, erasure-protected' MP3
streams - as pioneered by
Multicast Technologies, Inc.
Such a stream consist of several different multicast subsessions
(i.e., multicast address,group pairs)
each carrying the same audio, but encoded at different bitrates,
and staggered over time.
The highest-priority subsession is encoded at the highest bitrate;
lower-priority subsessions are encoded at progressively lower bitrates.
The goal of this scheme is to protect against packet loss - especially
packet loss that happens in bursts.
Whenever a high-priority audio packet is lost, then this lost audio can be
recovered - a short time later - by waiting to receive the same audio
encoded in a lower-priority subsession.
To specify such a stream in a 'rtp://' pseudo-URL, use the "|"
(i.e., vertical bar) character to separate the different subsessions.
(These subsessions should also
be listed in priority order - highest-priority first.)
For example, the following pseudo-URL denotes a particular
(The stagger parameter gives the total time range
(in seconds) between the highest and lowest-priority subsessions.
The default value is 5 (seconds).)
Reading ".sdp" files
With this plugin, Winamp can also read a SDP (Session Description Protocol)
file that describes a MP3 session
(as an alternative to entering the session's parameters in a "rtp://"
The name of this file must end in ".sdp".
A ".sdp" file can either be a local file
(which you can simply 'drop' on Winamp),
or a file on a remote HTTP server
(which Winamp can open using a "http://" URL).
Opening RTSP URLs
This plugin also has a built-in
This allows you to open URLs that begin:
if this URL refers to a session that contains
a MP3 stream.
If Winamp exits unexpectedly
If this plugin encounters an error (such as being given
a malformed URL), it outputs an error message to 'stderr'
You can see this error message by running Winamp from the Windows
'Command Prompt' (shell), as follows:
winamp 2> err.txt
After Winamp exits, the file "err.txt" (in this case)
should contain an error message.
About the plugin's implementation
The plugin was implemented using the (open source)
"LIVE555 Streaming Media"
source-code libraries, with high-level scripting in Tcl.