我们在手机上播放一些广播电台。他们中的大多数都有MP3格式的流媒体。有的用彩信,有的用RTSP。
我们有两个问题:
1)找到所有常见格式的解决方案。目前只有MP3可以使用madplay。彩信需要玩家不断死亡。2)即使使用疯狂播放,盒子也只能处理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 -
媒体播放器
#!/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是否有这样的支持吗?
您可以使用任何能够将输出更改为slin(8khz 16位未压缩pcm)的解决方案
每个moh类可以为每个box使用一个hold线程。如果需要,请使用
[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类,类似于会议。所有人都会听到文件/流的相同时刻