Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom Metadata with Icecast

I need to add additional metadata to an Icecast stream (beyond Artist and Song Title). I've tried a number of ideas but none seems to yield anything. The situation is made more complicated in that the metadata also passes through Wowza, which is re-streaming the Icecast stream. Is there a canonical list of metadata fields supported by Icecast, and does anyone have experience passing custom metadata as part of an Icecast stream and on to Wowza?

like image 585
plainprogrammer Avatar asked Feb 13 '12 18:02

plainprogrammer


2 Answers

My node-icy module is capable in reading in an arbitrary Icecast stream and intercepting and/or adding "metadata" events to an output stream. You are essentially "proxying" the stream. A good (though slightly complicated) example might be here: proxy.js

Do note though that the "metadata" format is a semicolon-delimited String of key-value pairs, but Icecast clients only react to the StreamTitle value, so just stuff all the information you want into there:

StreamTitle='Pink Floyd - Welcome to the Machine';

I've done things like send a metadata event every second to keep a track position counter (though that may have been a little network-heavy):

StreamTitle='Pink Floyd - Welcome to the Machine (0:12/4:02)';

Good luck!

like image 173
TooTallNate Avatar answered Sep 28 '22 02:09

TooTallNate


Though it's a bit complicated, the Savonet/Liquidsoap scripting language has facilities to modify/set stream metadata. There's a couple examples in the Liquidsoap wiki at https://wiki.sourcefabric.org/display/LS/UserScripts

like image 21
joat Avatar answered Sep 28 '22 01:09

joat