Vine Mac   - Vine Linux PPC on iBook で始めるリナックス -


■ Icecast でネットラジオ ■


iTunes や WinAMP 等では "ラジオ" という形で、Classical Music や Dance 等の
ネットチャンネル上に流れている曲をリアルタイムで聴くことが出来ます。
この各チャンネルの役割を担っているのが、ストリーミングサーバーと呼ばれるサービスです。

これらのストリーミングサーバープログラムを自分の Linux 上でも動かして、
いわばネット上の自作ラジオ局を持つことで、自分の好きな曲や自分自身の声などを、
接続してくるリスナーに届けることが出来ます。

以下では、Icecast2 と Ices0.4 を用いて、
Linux 上にオリジナルラジオサーバーを立ち上げる方法を紹介してみます。

使用環境:vine linux ppc 3.1, icecast-2.3.1, ices-0.4, libxslt-devel-1.1.9-0vl1
       libvorbis-devel-1.1.0-0vl1, libshout-2.2, 02/10/2006



● Icecast と Ices について

Icecast はストリーミングサーバー本体で、ネット上の "放送局" となるプログラムです。
Ices は、既に立ち上がっているストリーミングサーバーへ曲ファイルを渡す "放送主" です。

Ices はパスワード承認を経て管理権限で Icecast サーバーへ接続し、
指定されたプレイリストの曲ファイルを順に "放送" していきます。
その後オーディオプレイヤーなどで一般リスナーとして Icecast サーバーに接続することで、
Ices によって現在放送中の曲をリアルタイムで聴くことが出来ます。

ちなみに、Ices の様な放送主の役割は、Windows 上での WinAMP + Plugin でも構築可能です。



● 下準備 - Icecast のインストールに必要なパッケージ

Icecast および Ices は、apt 経由では手に入らないため、
ソースファイルを落としてきて自力でコンパイルします。

Icecast と Ices のコンパイルにあたって、以下のパッケージが必要です。
これらはすべて apt-get 経由でインストールできますので、入れておきましょう。
Ices コンパイル時にヘッダーなどを参照するため、devel が必要な事に注意してください。

curl
libxml2
libxslt
libvorbis-devel
libogg-devel
libxml2-devel
libxslt-devel

上記の内いくつかは、OSのインストール時に既に入っていると思います。
とりあえず私の Vine Linux PPC 3.1 環境では、新たに libxslt-devel と
libvorbis-devel を追加インストールするだけでOKでした。

よく分からなければ、以下のように打って、すべてのパッケージの取得を試してみてください。

# apt-get install curl libxml2 libxslt libvorbis-devel libogg-devel libxml2-devel libxslt-devel

足りないものを apt が自動的にインストールしてくれます。



● Icecast のインストール

それでは Icecast のコンパイルに移ります。

Icecast 公式サイトのダウンロードページ より、Icecast のソースファイルをダウンロードします。



今回は Icecast-2.3.1 を用いました。
wget で Linux 上に直接ダウンロードします。

$ wget http://downloads.xiph.org/releases/icecast/icecast-2.3.1.tar.gz
--00:02:47-- http://downloads.xiph.org/releases/icecast/icecast-2.3.1.tar.gz
=> `icecast-2.3.1.tar.gz'
downloads.xiph.org をDNSに問いあわせています... 64.50.238.52, 64.50.236.52
   ・
   ・
   ・
00:02:53 (221.68 KB/s) - `icecast-2.3.1.tar.gz' を保存しました [1094154/1094154]
$


展開して中に入ります。

$ tar -xvzf icecast-2.3.1.tar.gz
icecast-2.3.1/
icecast-2.3.1/debian/
icecast-2.3.1/debian/copyright
   ・
   ・
   ・
$
cd icecast-2.3.1
$


おなじみの ./configure, make, make insall です。

$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
   ・
   ・
   ・
$
make
make all-recursive
make[1]: ディレクトリ `/home/hoge/icecast-2.3.1' に入ります
Making all in src
   ・
   ・
   ・
$
su
Passwd:
(パスワードを入力)
#
make install
make all-recursive
make[1]: ディレクトリ `/home/hoge/icecast-2.3.1' に入ります
Making all in src
   ・
   ・
   ・
#


これで Icecast がシステムに組み込まれました。
具体的には /usr/local/ 以下にインストールされています。



● libshout と Ices のインストール

Ices のコンパイルには libshout ライブラリが必要です。
shout は Ices の前バージョンの様なプログラムのことで、
Ices が shout の機能を利用するために shout のライブラリが必要、ということなのでしょう。

同じく Icecast 公式サイトのダウンロードページ よりソースをダウンロードしてコンパイルします。



今回は libshout-2.2 を用いました。
同様にコンパイルして make install まで進めます。

$ wget http://downloads.us.xiph.org/releases/libshout/libshout-2.2.tar.gz
$
tar -xvzf libshout-2.2.tar.gz
$
cd libshout-2.2
$
./configure
$
make
$
su
#
make install

途中の出力は端折りましたが、これで /usr/local/ 以下に libshout が置かれます。
Icecast のコンパイルが無事通る環境なら、特にエラーは出ないかと思います。

続いて Ices のコンパイルです。
現在の最新バージョンは Ices-2.0 なのですが、
バージョン 2.0 の Ices では、何故か mp3 形式のファイルを扱えませんでした。
mp3 形式が扱えないのはとても不便なので、扱える旧バージョンの Ices-0.4 を用います。

Icecast 公式サイトのダウンロードページ より以下の様にたどってソースファイルを見つけます。





wget でダウンロードして同様にコンパイルします。

$ wget http://people.xiph.org/~brendan/snapshots/ices0/ices-0.4-20060224.tar.gz
$
tar -xvzf ices-0.4-20060224.tar.gz
$
cd ices-0.4-20060224
$
./configure
$
make
$
su
#
make install


エラーがでなければ成功です。
これで Ices がシステムに組み込まれました。



● Icecast の設定

Icecast の設定ファイルは /usr/local/etc/icecast.xml です。
xml 形式という、ちょっと特殊な形式で書かれています。

設定ファイルを編集するため、管理者権限で icecast.xml を開きます。

# vi /usr/local/etc/icecast.xml


<authentication> 内で2種類のパスワードを設定します。
source-password は放送主を認識するためのパスワードです。
admin-password はサーバーの情報を Web 上で確認するときに求められるパスワードです。

<authentication>
   <!-- Sources log in with username 'source' -->
   <source-password>[パスワードを記述]</source-password>
   <!-- Relays log in username 'relay' -->
   <relay-password>hackme</relay-password>

   <!-- Admin logs in with the username given below -->
   <admin-user>admin</admin-user>
   <admin-password>
[パスワードを記述]</admin-password>
</authentication>


その他、クライアントの上限数なども設定できます。
英文ですが注釈が沢山書かれているので、色々試してみてください。



● Ices の設定

Ices の設定ファイルは /usr/local/etc/ices.conf です。
設定ファイルのサンプルが /usr/local/etc/ices.conf.dist にあるので、
まずこれを /usr/local/etc/ices.conf へと複製します。

# cp /usr/local/etc/ices.conf.dist /usr/local/etc/ices.conf


続いて、vi で開いて編集します。

# vi /usr/local/etc/ices.conf


<Playlist> 内の <File> で、放送する mp3 ファイルを記述したプレイリストファイルを指定します。
また、<Randomize> を "1" にすると、プレイリスト内のファイルをランダム再生します。

<Playlist>
   <!-- This is the filename used as a playlist when using the builtin
      playlist handler. -->
   <File>
/home/hoge/files/mp3/playlist.txt</File>
   <!-- Set this to 0 if you don't want to randomize your playlist, and to
      1 if you do. -->
   <Randomize>
1</Randomize>
   <!-- One of builtin, perl, or python. -->
   <Type>builtin</Type>
   <!-- Module name to pass to the playlist handler if using perl or python.
      If you use the builtin playlist handler then this is ignored -->
   <Module>ices</Module>
   <!-- Set this to the number of seconds to crossfade between tracks.
      Leave out or set to zero to disable crossfading (the default).
   <Crossfade>5</Crossfade>
   -->
</Playlist>

プレイリストの内容は、mp3 ファイルの絶対パスを1ファイル1行でずらずら記述する形式です。

<Stream> 内の <Server> で接続するストリーミングサーバーの情報を設定します。
今回は Icecast への接続設定です。

<Hostname> には、接続先の Icecast サーバーが動いているマシンのアドレスを指定します。
Icecast と Ices を同一マシン上で動かすのなら、自分自身、つまり "localhost" と指定します。
<Password> には Icecast で設定した source-password を記述します。

<Stream>
   <Server>
      <!-- Hostname or ip of the icecast server you want to connect to -->
      <Hostname>
localhost</Hostname>
      <!-- Port of the same -->
      <Port>8000</Port>
      <!-- Encoder password on the icecast server -->
      <Password>
[サーバーの source-password を記述]</Password>
      <!-- Header protocol to use when communicating with the server.
      Shoutcast servers need "icy", icecast 1.x needs "xaudiocast", and
      icecast 2.x needs "http". -->
      <Protocol>http</Protocol>
   </Server>
<Stream>


また、同じく <Stream> 内の <Name> でチャンネルに名前を付けることが出来ます。

<Stream>
   <Name>
Hoge Server</Name>
<Stream>

この名前は、例えばサーバーを iTunes 上にブックマークした際の曲名になります。

以上で編集完了です。
":wq" で vi を抜けてください。



● プレイリストの用意

Ices.conf で指定する放送用プレイリストの内容には、
テキスト形式で mp3 ファイルの所在を絶対パスでずらずら記述します。
具体的には以下のような感じです。

/home/hoge/files/mp3/nanika.mp3
/home/hoge/files/mp3/something.mp3
/home/hoge/files/mp3/doreka.mp3
/home/hoge/files/mp3/anything.mp3
   ・
   ・
   ・


Windows 上のノートパッド等で作成した後、Samba で Linux 上に転送することも出来ますが、
コマンドと正規表現を組み合わせることで、Linux 上で自動的に作ってしまうことが可能です。

(例) /home/hoge/files/mp3 以下にある拡張子 mp3 のファイルの絶対パスをリスト化して保存

$ find /home/hoge/files/mp3 | grep mp3$ > playlist.txt

コマンド "find" で /home/hoge/files/mp3 以下の全ファイル・ディレクトリのパスを出力させ、
"grep mp3$" で出力結果から行末が mp3 で終わる行を抜き出して、
"> playlist.txt" で playlist.txt ファイルに上書き保存しています。

放送したい曲ファイルを特定ディレクトリ内に詰め込んだあと、
上記のコマンドを打つことで、プレイリストを瞬時に更新できてとても便利です。
Windows のノートパッドによる手動の編集では、こう簡単にはできませんよね。



● いよいよ起動

それではいよいよラジオサーバーを立ち上げます。

まず、ラジオ局である Icecast を起動させます。
Icecast 起動時に設定ファイルを読み込ませるため、
オプション "-c [conf path]" を用いて "icecast.xml" ファイルの位置を指定してやります。
また、バックグランドで動かし続けるためのオプション "-b" も付けています。

$ /usr/local/bin/icecast -b -c /usr/local/etc/icecast.xml
Starting icecast2
Detaching from the console
$

これで Icecast ことストリーミングサーバーが立ち上がりました。
試しにブラウザで "http://[サーバーのIPアドレス]:80000/" へアクセスしてみてください。
以下のようなページが表示されれば成功です。




続いて 放送主である Ices を起動させます。
Icecast と書式は若干異なりますが、同様に設定ファイル "ices.conf" の位置を指定してやります。
また、Ices はデフォルトでバックグランド動作します。

$ /usr/local/bin/ices /usr/local/etc/ices.conf
Into the land of the dreaded daemons we go... (pid: 7702)
$

これで Ices が立ち上がって、設定ファイルに従って Icecast へ自動的に接続しているはずです。
先ほどの Icecast のページを更新させて、確認してみてください。



Icecast 上に Ices によるチャンネルが立ち上がって、放送を開始しています。
現在放送中の曲名は "Current Song:" に表示されます。



● ネットラジオを聴く

Icecast サーバー上のチャンネルにリスナーとして接続するには、
Icecast ページ上の "Click to Listen" をクリックします。



これは m3u 形式のプレイリストへのリンクとなっています。
確認ダイアログで [開く] をクリックすれば自動でオーディオプレイヤーが立ち上がり、
演奏を開始するためストリーミングサーバーへと接続しに行きます。



iTunes 上に設定したサーバー名で表示され、無事放送を聴くことが出来ました。
ストリーミング放送なので、[時間] は "連続" となっています。



以上、オリジナルラジオサーバーを立ち上げる方法を、大まかに解説してみました。
icecast.xml や ices.conf にはその他様々な設定箇所が設けられていますので、
注釈を参考に、色々試してみてください。

最後になりますが、放送する曲ファイルの著作権にはくれぐれも注意してくださいね。