У нас есть несколько радиостанций, которые мы передаем по телефону. Большинство из них имеют свой поток в формате MP3. Некоторые используют MMS, в то время как другие используют RTSP.Решение для игры на разных строках в Asterisk
У нас есть две проблемы:
1) Нахождение решения для всех распространенных formatss. В настоящее время только MP3 работает с madplay. MMS требует mplayer, который продолжает умирать. 2) Даже при использовании madplay ящики могут обрабатывать только 20-30 различных потоков, так как каждый поток использует 2-3% процессора. В настоящее время musiconhold.conf запускает каждый скрипт bash при запуске, поэтому, если мы говорим, что у нас есть 30 каналов, нам нужно вытащить их всех, независимо от того, звонит ли кто-нибудь на прослушивание.
Ниже приведены два Баш сценариев, которые мы используем:
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 в реальном времени поможет, как это было бы только втянуты если какой-то один хочет слушать? Я знаю, что FreeSwitch поддерживает VLC, знает ли кто-нибудь, поддерживает ли Asterisk такую поддержку?
Любые предложения о том, что будет использовать меньше CPU, чем madplay? Проблема в том, что если у меня 50 потоков, даже если никто не слушает, он все еще использует CPU. –
50 различных потоков? – arheops
На самом деле сейчас проект должен сыграть 150. В настоящее время я его распространяю на 3 VPS. –