[Icecast] targeted ads

Karl Heyes karl at xiph.org
Fri May 8 08:16:18 PDT 2009


Michał Jaszczyk wrote:
> Hi there,
> 
> I work at an internet radio station. My management thought it might be
> a good idea to enhance our radio with targeted ads. Do you know of any
> streaming server that is capable of inserting targeted ads into the
> stream? So far I have only found Ando Media's Targeted Ad Injector
> (http://andomedia.com/) which claims to be open source but I can't
> find the source anywhere.

I have some work implemented for this as an extension to my 10pre code. 
The interfaces are not documented yet as I wanted to try different use 
cases.  If you are interested then you are welcome to try it out and 
send feedback

http://www.icecast.pwp.blueyonder.co.uk/icecast-2.3.2-kh-ads.tar.gz

with this, each listener is allocated a group id (default 0) which the 
server will use to lookup a file to play. The number of groups is 
determined by the <mount> setting <jingle-groups>.  At the moment the 
group is only set in auth url by the Jingle-group; header, although I do 
have a hardcoded switch to allocate the next id to the next new listener 
for testing.

You essentially set the group to file mapping via admin eg

/admin/jingle?mount=/stream&id=0&file=/insert1
/admin/jingle?mount=/stream&id=1&file=/insert2

files are in webroot.  You then just trigger when the inserts are to be 
run. This is where things differ slightly.

With vorbis streams, the trigger is a simple vorbis file from the source 
client that lasts however long you want (can be silence as the content 
won't be sent to listeners) but has a Jingle: in the headers.

With non-ogg streams things get more awkward as you don't have the same 
sort of information in stream and metadata inserts are not good enough. 
The mechanism currently uses the /admin/jingle interface again but you 
have an option of

/admin/jingle?mount=/stream&play=10000

informs the server that this stream will be in jingle mode for 10 
seconds. Any jingle files lasting longer than that will complete then 
return listeners to the stream.

/admin/jingle?mount=/stream&play=on
/admin/jingle?mount=/stream&play=off

same sort of thing but a toggle

I suspect the latter will be better so that people can interface with 
their source clients better. eg

get next file
    if file is insert marker then
      .....&play=on
    if insert marker finished then
      .....&play=off


karl.



More information about the Icecast mailing list