Icecastのコンパイルとインストール

動画をストリーミングするにはCoTVを使うけど、音楽(mp3, oggなど)をストリーミング配信するには何がいいだろうと、オープンソースのIcecastを教えてもらったのでコンパイル→インストールしてみた。

環境はCentOS 5.3

参考にしたのは次のサイト
Icecastで行う音楽ファイルの独自ブロードキャスト

必要なソフトのインストール。
# yum install libxslt-devel libogg-devel libvorbis-devel vorbis-tools libshout-devel libtheora-devel speex-devel

kernel-develとかGCCとか怒られたら適宜対応。あとでREADMEを見て気付いたけどlibshout-develはいらないかも。

コンパイルとインストール
# tar xzvf icecast-2.3.2.tar.gz
# cd icecast-2.3.2
# ./configure
# make
# make install

設定ファイルは/usr/local/etc/icecast.xml

authenticationノードのpasswordは適宜変えておく。

# icecast -c /usr/local/etc/icecast.xml

で起動してみると、rootで起動すべきではないというのとログファイルが書き込めないとエラーが出るので、icecast.xmlで実行ユーザーを変更

<changeowner>
    <user>apache</user>
    <group>apache</group>
</changeowner>

ログは
# mkdir /var/log/icecast
# chown apache /var/log/icecast

<logdir>/var/log/icecast</logdir>

一応hotnameも設定しておく

<hostname>hoge.jp</hostname>

# icecast -c /usr/local/etc/icecast.xml

で無事起動したみたい。

http://<サーバーアドレス>:8000/

にアクセスするとデフォルトの画面が参照できる。

image

起動スクリプトがどっかにあるだろうと探したけど見つからない。

なのでfedora core のRPMに入っていたのを参考に作成。

#!/bin/sh
#
# icecast      This shell script takes care of starting and stopping
#              the icecast multimedia streaming systen.
#
# chkconfig: - 85 15
# description: icecast is a multimedia streaming daemon. It is used to \
#              relay and offer multimedia streaming content.
# processname: icecast
# pidfile: /var/run/icecast/icecast.pid

DAEMON=/usr/local/bin/icecast
CONFIGFILE="/usr/local/etc/icecast.xml"

# Source function library.
. /etc/rc.d/init.d/functions

[ -x $DAEMON ] || exit 0

# See how we were called.
case "$1" in
  start)
    # Start daemon.
    echo -n $"Starting icecast streaming daemon: "
    daemon "$DAEMON -b -c $CONFIGFILE > /dev/null"
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/icecast
    ;;
  stop)
    # Stop daemon.
    echo -n $"Shutting down icecast streaming daemon: "
    killproc icecast
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/icecast
    ;;
  status)
    status icecast
    RETVAL=$?
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  reload)
    echo -n $"Reloading icecast: "
    killproc icecast -HUP
    RETVAL=$?
    echo
    ;;
  condrestart)
        [ -f /var/lock/subsys/icecast ] && restart || :
        ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload}"
    RETVAL=1
    ;;
esac

exit $RETVAL

これを/etc/rc.d/init.d/icecastに保存して
# chmod 755 /etc/rc.d/init.d/icecast

起動してみる
# /etc/rc.d/init.d/icecast start

再起動時にも自動起動するには
# chkconfig --add icecast
# chkconfig icecast on

次回はwinamp+edcastとの連携

<2009/09/14 追記>
Icecast Serverに接続するクライアントユーティリティIceSのコンパイルとインストールを書いたのでそちらの記事も参考に。