libiconv2 がないとうまく動かなかったので、 music on hold netstream 版を書き直します。
# cd /usr/local/src
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
# cd libiconv-1.13.1
# ./configure –prefix=/usr/local
# make && make install
# vi /etc//etc/ld.so.conf
以下の行を一番下に書き加えます(iで編集モード。ESCで抜けて:wqで書き込み
/usr/local/lib
# ldconfig
mpg123のインストール(下に注意あり)
http://pkgs.repoforge.org/mpg123/ から最新の mpg123 をダウンロード。今回は mpg123-1.9.1-1.el5.rf.i386.rpm だったので
# cd /usr/local/src
# wget http://pkgs.repoforge.org/mpg123/mpg123-1.9.1-1.el5.rf.i386.rpm
# rpm -ivh mpg123-1.9.1-1.el5.rf.i386.rpm
注意:mpg123 は一度 rpm -e mpg123 でアンインストールしてからソースをダウンロードしてコンパイル、MPlayer もコンパイルしなおした。
そのままでは mpg123: Can’t rewin d stream by というエラーで音がおかしくなったからだ。
# wget http://downloads.sourceforge.net/project/mpg123/mpg123/1.1 3.3/mpg123-1.13.3.tar.bz2?r=&ts=1312353134&use_mirror=cdnetworks-kr-2 # bzip2 -dc mpg123-1.13.3.tar.bz2 | tar xvf - # cd mpg123-1.13.3 # ./configure && make && make install
FreePBX の MusicOnHold で、適当な名前のストリーミングカテゴリーを追加
| Categoly : NetRadio
| Application : /bin/cat
| OptionFormat : slin
# vi /etc/asterisk/musiconhold_additional.conf
ここで、[NetRadio]を以下のようにする(directory=を追加)
[NetRadio]
mode=custom
directory=/var/lib/asterisk/moh/netstream
application=/bin/cat
format=slin
:wq で書き込み
(Asterisk 単体の場合は # vi /etc/asterisk/musiconhold.conf で同様の追加をしておく)
# mkdir /var/lib/asterisk/moh/netstream
# cd /var/lib/asterisk/moh/netstream
MPlayserのインストール
# cd /usr/local/src
(# wget http://www4.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc4.tar.bz2 であったが URL 変更のため下記で)
# wget http://www7.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc4.tar.gz
(# bzip2 -dc MPlayer-1.0rc4.tar.bz2 | tar xvf – であったが、変更のため下記に)
# tar xzvf MPlayer-1.0rc4.tar.gz
# cd MPlayer-1.0rc4
# ./configure
# make
(# make test は通らなくなっていた)
# make install
名前付きパイプを作る
# cd /var/lib/asterisk/moh/netstream
# mkfifo pipe.mp3
# vi netstream.sh
中身は
#!/bin/sh while : do # /usr/local/bin/mplayer http://yp.shoutcast.com/sbin/tunein-station.pls?id=1258 -srate 8000 -af channels=1 -ao pcm_file=/var/lib/asterisk/moh/netstream/pipe.mp3 # 以前は上記で起動していたが、現在は下記で動いている。番号はhttp://www.shoutcast.com/から気に入ったチャンネルの id= の番号を使用 /usr/local/bin/mplayer http://yp.shoutcast.com/sbin/tunein-station.pls?id=番号 -srate 8000 -af channels=1 -af volume=-25 -prefer-ipv4 -ao pcm_file=/var/lib/asterisk/moh/ done
# chmod a+x /var/lib/asterisk/moh/netstream/netstream.sh
# vi /etc/init.d/asterisk_netstream
中身は
#!/bin/bash # chkconfig: 2345 35 35 # description: Asterisk Network Streaming # processname: asterisk_netstream start(){ rm -f /var/lib/asterisk/moh/netstream/nohup.out echo -n "Starting Asterisk Network Streaming" /usr/bin/nohup /var/lib/asterisk/moh/netstream/netstream.sh & return 0 } stop(){ echo -n "Stop Asterisk Network Streaming" killall netstream.sh -9 killall mplayer -9 return 0 } case "$1" in start) start ;; stop) stop ;; esac
:wq で保存
chmod a+x /etc/init.d/asterisk_netstream
サービスに登録
# chkconfig –add asterisk_netstream
# service asterisk_netstream start
試験で聴くための番号を設定する
# vi /etc/asterisk/extensions_custom.conf
[from-internal-custom]に以下の文を挿入
;NetRadio Test for Asterisk 1.4 ;exten => 468,1,Answer ;exten => 468,2,Playback(pls-hold-while-try) ;exten => 468,3,SetMusiconHold(NetRadio) ;exten => 468,4,WaitmusiconHold(60) ;exten => 468,5,Hangup ;NetRadio TEST for asterisk 1.6 exten => 468,1,Answer exten => 468,n,Playback(pls-hold-while-try) exten => 468,n,Set(CHANNEL(musicclass)=NetRadio) exten => 468,n,WaitmusiconHold(60) exten => 468,n,Hangup
:wq で保存
# amportal restart
で、asterisk を再起動。
468 に電話をしてみて聞こえるか確認。
聞こえるようなら inboundRutes の Musc On Hold を NetRadio に設定。