How to send metadata to a shoutcast server
A common question posted to the Barix support team is, "I am using an Instreamer to feed my Shoutcast server, but how can i add metadata, genre and title information ?".
To send metadata to the Instreamer for inclusion with the stream, please use the E= command. After the "E=" you must supply standard Shoutcast metadata format. Here is an example to post the Stream Title - note the command is case sensitive and must be correctly terminated (;) and quoted (single quotes).
http://<ip-instreamer>/rc.cgi?E=StreamTitle='Title';
The metadata cannot be sent through the analog or S/PDIF audio ports .. it needs to be provided to the Instreamer via the command interface, using raw TCP, UDP, serial port or the cgi interface.
The Instreamer can insert metadata in two modes:
1) The metadata feature can be also used when the Instreamer is acting directly as streaming server (configured as "Internet Radio : 0.0.0.0 : port number"). In this case no other streaming server is involved, the clients/listeners will request/get the stream directly from the Instreamer.
2) When the Instreamer is used for Shoutcast server mode (Shoutcast : 0.0.0.0 : port number) and your Shoutcast or Icecast server is configured as "relaying" server, then - and only then - you can feed metadata from the Instreamer through the Shoutcast/Icecast relay server to the clients/listeners.
If you have an Icecast- or Shoutcast Server, then get here an example for the according configuration files of the Icecast- or Shoutcast configuration.
These example show how the Shoutcast- or Icecast server must be configured as relaying server - of course, this is just an incomplete snippets of the configuration files:
Shoutcast v1 config:
RelayPort=8000
RelayServer=192.168.0.19 (the Instreamer IP address)
Shoutcast v2 config:
streamid_1=1
streampath_1=/relay (path on the Shoutcast server, where the stream can be requested)
streamrelayurl=http://192.168.0.19:8000 (Stream URL from the Instreamer)
Icecast XML config:
<relay>
<server>192.168.0.19</server> (the Instreamer IP address)
<port>8000</port>
<mount>/xstream</mount>
<local-mount>/xstream1.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
On the Instreamer configure for both servers under "Streaming / Stream to" = Shoutcast : 0.0.0.0 : 8000
The Shoutcast/Icecast server will pick up the stream from this socket.
When the Instreamer is connected as "Shoutcast source" (Shoutcast : <IP address of the SC server> : port number) then Barix Instreamer actively connects to and sends the live audio feed after authentication over a raw TCP connection to the server. In this mode it´s not possible to add any metadata for the Instreamer, because there is no space in the header for it. Then the metadata must be inserted on the Shoutcast server directly. The same is valid for Icecast servers.