Live Cast one audio stream to many inbound callers

I have to built a system where inbound callers can listen to a live performance.

We are having an live audiostream.
Many inbound callers (100+) should be able to listen to this stream.

What is the best aproach for this? My ideas:

  • Streaming MOH (general opininon not sensible, to heavy load on system)
  • Channel spy
  • Conferencing
  • Channel multicast (I haven’t figured out if this is usable at all).

Thanks for your thoughts.

I really think the best option is a separate MOH server. The server only has to do 1 thing, stream audio, hardware requirements can’t be that hard.

Can you explain why you think streaming MOH is too resource intensive?

Does the MOH system create a new stream instance for each call?

If your system is beefy enough I would see no issue with streaming moh. otherwise perhaps set up another pbx with another did and split the load a bit.
I use streaming MOH quite a lot and don’t see much of an issue.
I have that particular PBX on a Xen Server as a virtual machine. The host box is a Dual quad core Xeon with 16 GB of ram. However I only have 2GB of ram allocated to the PBX it never breaks a sweat. and it runs all the phones queues conferences and contest lines for a three radio stations. It can be done if you do it right.


Thanks Josh and Depster for you thoughts,

A couple of years ago I played around with streaming MOH and at that time it
it generated quite a load on the sytem. I have never tried it since.

And yes, if it creates a new stream instance for each call is is a no go.
Josh can you confirm this?

Perhaps the new Asterisk 10 ConfBridge application is an idea.
It has a mute option where the audio of the caller can be cut off.

If the new Asterisk 10 ConfBridge application is as efficient as stated, it is an easy solotion for my goal. Has someone experience with ConfBridge?

Kind regards,


Yes if you have each caller connecting to streaming MOH it will start a new instance for each caller.

But I did the following and it may work for you.

setup a conference (in my case I use confbridge)
set leader wait, and enter admin pin
and optionally enter user pin ( users can just press # when prompted if no user pin is set)

set moh and class to desired stream
and I set mute on join to keep things quiet :wink:

as long as leader doesn’t join all members will be listening to the streaming MOH and be muted from hearing each other.

this only used one instance to feed the conference on my server, and I verified on my shoutcast server and it only showed one connection and I had several listeners in the conference.

I pasted the context below:
exten => 5555,1,Macro(user-callerid,)
exten => 5555,n,Set(MEETME_ROOMNUM=5555)
exten => 5555,n,Set(MAX_PARTICIPANTS=0)
exten => 5555,n,Set(MEETME_MUSIC=STAR)
exten => 5555,n,Gosub(sub-record-check,s,1(conf,5555,never))
exten => 5555,n,GotoIf($["${DIALSTATUS}" = “ANSWER”]?READPIN)
exten => 5555,n,Answer
exten => 5555,n,Wait(1)
exten => 5555,n,Set(PINCOUNT=0)
exten => 5555,n(READPIN),Read(PIN,enter-conf-pin-number,)
exten => 5555,n,GotoIf($[x${PIN} = x1234]?USER)
exten => 5555,n,GotoIf($[x${PIN} = x5555]?ADMIN)
exten => 5555,n,Set(PINCOUNT=$[${PINCOUNT}+1])
exten => 5555,n,GotoIf($[${PINCOUNT}>3]?h)
exten => 5555,n,Playback(conf-invalidpin)
exten => 5555,n,Goto(READPIN)
exten => 5555,n(ADMIN),Set(MEETME_OPTS=aAwM)
exten => 5555,n,Goto(STARTMEETME,1)
exten => 5555,n(USER),Set(MEETME_OPTS=wMm)
exten => 5555,n,Goto(STARTMEETME,1)

If you have any questions feel free to email me
[email protected]