Re: Server Side Spot Replacement?

Philipp Schafft <[email protected]> Tue, 11 Apr 2017 15:54:20 +0000
Newsgroups gmane.comp.audio.icecast.devel
Message-ID <[email protected]>
Good afternoon,


On Tue, 2017-04-11 at 13:03 +0000, Rune Hafskjær wrote:
> Thank you Phillip,
               ^^-^


> my first time here.

No problem.


> What I want to achieve is to replace ads in a live ad break on live
> streamed radio with personal spots for each listener. I want to
> recognize the start of the break, split listeners into separate
> streamed spots and then back again to the live stream when the spots
> has been played.
> 
> The main goal is to offer programmatic data driven ads on streamed
> radio and bring radio into the modern advertising world.
> 
> There are a number of companies that offers this in various cloud
> solutions in connection with Icecast servers, but there are pros and
> cons with the offerings and I want to understand how it's done and
> consider build it myself.

Ok. I think that can be done but needs modification of Icecast (to
detect the break). It also depends on the used codec.
Most codecs work like that:
segment header(metadata), segment data, segment header(metadata),
segment data, ...

('segment' here as a general term. codecs/containers may use different
names.)

The easiest way to detect the break would be to have a look at e.g. the
metadata. It could contain a ID that can be used to identify the segment
with the ad.

Which codecs do you plan to use? I do not see much trouble with Ogg
based streams (Vorbis or Opus). With ICY based streaming (MP3 and AAC)
there is the problem that metadata updates happen out of band and can
not be synchronized to the audio perfectly. That is one of many
restrictions MP3 and AAC has by design. It's independent on the
implementation.


Are your listeners group regarding the ads? What is the ratio of
listener clients to alternative replacements? e.g: every listener get
it's own specific content vs. there are 5 groups of ads, a listener is
in one of those groups.

This is important in terms of scaling. Icecast's engine is made for 1->n
streaming (broadcast, all get the same). It's not designed for n->n
(every listener has it's own content). The more you go in direction of
the later case the less performant Icecast will be. e.g. 5 groups is
perfectly fine. 100 groups may still work nicely. 500 groups is a bad
idea, 50000 groups will likely kill performance.

So this is important to evaluate the options for an actual
implementation.

I hope this was helpful to you,

with best regards,

> 
> Best regards,
> Rune
> 
> -----Original Message-----
> From: Icecast-dev [mailto:[email protected]] On Behalf Of
> Philipp Schafft
> Sent: 11. april 2017 14:48
> To: Rune Hafskjær
> Cc: [email protected]
> Subject: Re: [Icecast-dev] Server Side Spot Replacement?
> 
> Good afternoon,
> 
> On Tue, 2017-04-11 at 11:06 +0000, Rune Hafskjær wrote:
> > Hi guys,
> 
> > Can anyone share some (deep technical) light on how «Server Side
> Spot 
> > Replacement” on live radio streaming with Icecast can be done?
> 
> I think it would be helpful if you could give some more context. Maybe
> by explaining your goal in a non-technical way (that often helps).
> 


-- 
Philipp Schafft (CEO/Geschäftsführer) 
Telephon: +49.3535 490 17 92

Löwenfelsen UG (haftungsbeschränkt)     Registration number:
Bickinger Straße 21                     HRB 12308 CB
04916 Herzberg (Elster)                 VATIN/USt-ID:
Germany                                 DE305133015

_______________________________________________
Icecast-dev mailing list
[email protected]
http://lists.xiph.org/mailman/listinfo/icecast-dev
signature.asc (application/pgp-signature, 490 B)
-----BEGIN PGP SIGNATURE-----
Comment: Because it's your freedom

iQEcBAABCAAGBQJY7PwsAAoJEHz9i3MWdaObT8MIALJCwyLcit1h2MKB8daBSSyC
mV6jKjKcy2P5QmISTLyNG2tRMi0l+BW/eC7/IKrDiQhJtz/voqKK9k/6byqSs1a8
Rz3c6IdPa7gVo2Yv9sAUyDq8lH9EDoiOq4Zd42WtkXN2nuy6zQCBj+vkmF25xrMZ
HS1fRs695L9PH1EC2i2l5r05oRcmoTspxrVVQxlaNt6qdsR7s2qCa3HwrEhV2jEe
ewu99RtCZq6i3aGMJoIEcYTD979DzBmVAh8hZZyBWB7VJCw7I2YzXzCMOKeF4QYS
t2WKpV4egBYu2eL8TZOLmr07Z++M5btfUsY98jLgGExHLVb3xdgQCX2Uli96AG4=
=9KYL
-----END PGP SIGNATURE-----