[asterisk-users] Using Asterisk to play Icecast streams

Dovid Bender dovid at telecurve.com
Wed Mar 16 14:29:11 CDT 2016


Hi all,

A long time ago I built an Asterisk system that plays IceCast streams via
moh.

extensions.conf:
Exten => moh,1,Set(SIP_CODEC=ulaw)
Exten => moh,2,Answer
Exten => moh,3,MusicONHold(test_new)
Exten => moh,4,Hangup

musiconhold.conf
; test_new
[test_new]
mode=custom
application=/etc/mystreams/test_new.sh

test_new.sh
#!/bin/bash
wget -q -T 120 -O - 'http://myURL.com/my_test_stream' |
/usr/local/bin/madplay -Q -o raw:- --mono -R 8000 -a -10 -

Over all this does work good however:
1) I want to be able to add a few hundred streams per box. Not all streams
are being listed to at once. Once you add a MOH class to musiconhold.conf
it stays up forever (which I can understand why). When trying realtime
madplay wont be loaded until it's called in the dial plan.  After that it
is in Asterisk until I restart asterisk. If we have 20-30 streams it's OK
but once that grows it can bog down the machine.
2) I found that it for some reason the stream returns a 404 (it goes off
line etc.) then 10-15% of one core gets locked up until the stream comes
back online. The issue is that if a few  streams have an issue then I am
locking up one care. From debuging the scripts it seems Asterisk keeps
calling my bash script over and over. In the full I get:
[2016-03-14 06:39:23] WARNING[12534] res_musiconhold.c: poll() failed:
Interrupted system call
[2016-03-14 06:39:23] WARNING[12534] res_musiconhold.c: poll() failed:
Interrupted system call
I tried using realtime along with a script that would check each stream and
if there was a 404 to delete it from MySQL. This did not help. Asterisk
would keep repeating the above logs till Asterisk was restarted.

Is there any way to have Asterisk remove a class if it's not in use? What
would be the right way to go about building such a system?

EDIT: I found that adding a simple sleep 2 to my bash script would slow
things down and if a stream went down it would lower the CPU usage by a lot.

TIA.

Dovid
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20160316/4ee1a58f/attachment.html>


More information about the asterisk-users mailing list