解决在Asterisk中演奏各种乐队的问题

时间:2015-09-18 15:29:37

标签: bash asterisk mplayer

我们在手机上播放了几个广播电台。他们中的大多数都有MP3格式的流。有些人正在使用彩信,有些则使用RTSP。

我们有两个问题:

1)为所有常见格式找到解决方案。目前只有MP3可以与madplay一起使用。彩信需要mplayer才能保持死亡。 2)即使使用madplay,盒子也只能处理20-30个不同的流,因为每个流使用2-3%的CPU。目前musiconhold.conf在启动时启动每个bash脚本,所以如果我们有30个频道,我们需要拉出所有这些,无论是否有人打电话来听。

以下是我们使用的两个bash脚本:

madplay这样:

#!/bin/bash
wget -q -T 120 -O - http://example.org/stream.mp3 | /usr/local/bin/madplay -Q -o raw:- --mono -R 8000 -a -6 -

Mplayer的

#!/bin/bash
if [ -n "`ls /tmp/pdmohpipe`" ]; then
    rm -f /tmp/pdmohpipe
fi
PIPE="/tmp/pdmohpipe"
mknod $PIPE p
sleep 3
/usr/local/bin/mplayer mms://10.10.10.10/radio_online -really-quiet -quiet -ao pcm:nowaveheader,file=$PIPE -af resample=8000,channels=1,format=mulaw  | cat $PIPE
rm $PIPE 

也许使用moh realtime会有所帮助,因为如果有人想听听它会被拉出来吗?我知道FreeSwitch支持VLC,有人知道Asterisk是否有这样的支持吗?

1 个答案:

答案 0 :(得分:0)

你可以使用任何能够改变输出到slin的解决方案(8khz 16 bit uncompressed pcm)

每个moh类每个盒子可以使用一个保持线程。为此需要使用

[general]
;cachertclasses=yes ; use 1 instance of moh class for all users who are using it,
                    ; decrease consumable cpu cycles and memory
                    ; disabled by default

请注意,这是musiconhold模块的GLOBAL设置。 结果,每个具有相同moh类的新呼叫者将通过audiohook连接到相同(转码)的moh类,类似于会议。所有人都会听到文件/流的相同时刻