AsteriskNow その06(netstream)

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 に設定。

コメントを残す

メールアドレスが公開されることはありません。