Icecast
The Icecast source protocol is built on HTTP. Since Icecast 2.4 it uses the PUT
verb which is in the HTTP specs, in the past SOURCE
was used. Very old Icecast compatible encoders might also send ICE/
instead of HTTP/
. It is best not to check on those.
Icecast specific headers
ice-public
this can be either 0 or 1. This tells if the source wants to get listed in the directory or not (ignored in Cast)
ice-name
specifies the stream name
ice-description
specifies a description for the stream
ice-url
is the URL for the radio station
ice-genre
is the genre for the station
ice-bitrate
tells the bitrate for the stream, this value is optional and informative (can be incorrect) (ignored in Cast)
ice-audio-info
gives a POST
like key value string with extra info on the audio, this is optional and informative (can be incorrect) (ignored in Cast)
When building an encoder we advise to send the
host
header too, this allows further deprecation of portnumbers in internet radio to all become the default 80/443.
Responses
200 OK
everything is fine, send the audio stream in the body
100 Continue
is sent before OK if the Request: 100-continue
is set
401 You need to authenticate
sent if the login was missing or incorrect
403 Content-type not supported
sent if the content is not supported by the server
403 No Content-type given
sent if no Content-Type
header wan sent
403 internal format allocation problem
sent on internal Icecast error
403 too many sources connected
sent when connection limit was reached
403 Mountpoint in use
sent when the mountpoint is already in use
500 Internal Server Error
as the name says
Example
> PUT /live/ HTTP/1.1
> Authorization: Basic BASE64
> Host: example.com:8001
> Accept: */*
> Content-Type: audio/mpeg
> ice-Public: 1
> ice-Name: Test
> ice-Description: This is just a simple test stream
> ice-URL: http://example.com
> ice-Genre: Rock
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.0 200 OK
> [ Stream data sent by cient ]
Read more
Updated less than a minute ago