このページの記事は、既に旧くなっている。ただし、Shout castについては、2012年現在でもあまり変わっていないので、挑戦してみていただきたい。
Streaming MP3とは何かというと、いわゆるMpeg2レイヤー3の音楽ファイルのネットワーク放送・・である。
(これで正しいかはともかくとして、ここではとりあえずこのように定義する。
低ビットレートでの音質は、実はRealmedia-リアルオーディオ-の方がいいのだが、あれは一企業の独自規格だ。
MP3も権利関係で怪しいところがあるが、完全フリーの ogg vorbis は、RFC化されたとはいえ普及しているとは言い難く、
やっぱしMP3ということになってしまうのである)
SHOUTcastサーバのソフトウエアは、営利目的での使用でなければ、無償で利用できるようだ。
(かつて公開されていたバージョン1.8.9には、セキュリティホールがあったが、FIXされた新版が出ている)
SHOUTcast DNAS
http://www.shoutcast.com/broadcast-tools
FreeBSD 4.x 版もあるし、Linux用のほか、いつのまにかWin32GUI版も揃っている。
*実験ではFreeBSD用の1.9.4を使った。以下はすべて1.9.4を想定した記述である。1.9.5では問題なく動作したが、現行バージョンの1.9.8でも完全に同じかどうかは検証していない。*
また、FreeBSD最新バージョンの 7.1-RELEASEでは、「libpthread.so.1が無い」とかいうエラーが出て動かないが、/usr/ports/misc/compat5x を make installすることでとりあえず動くことは確認している。
起動は、sc_servがあるディレクトリで、次のコマンドを投入。
% ./sc_serv
サーバセットアップ方法は次のURLにある。(「Setting up a server is easy as 1,2,3」だそうだ)
http://www.shoutcast.com/download
設定ファイル(sc_serv.conf)は、はっきりいってMP3ソースUP用のパスワード(Password:)くらいしかいじるところがない。(sc_serv と同一ディレクトリに置く。1.9.8でも 1.9.4のときの confファイルがそのまま使えた)
ソース(MP3ファイル)のUPは、WinAmpでおこなうが、下記のDSPプラグインが必要となる。
SHOUTcast DSP Plug-In for Winamp http://www.shoutcast.com/broadcast-tools
このプラグイン一つで、マイク入力を併用(Mix)してDJみたいなこともできてしまう。
DSPプラグインの設定はGUIなので、感覚的に判ると思う。ゆえに、ここでは解説しない。
受信には、RealPlayer か Winamp が必要だ。これらのソフトのURL指定で、例えば「www.zcr.jp:8883」とか入力する。「8883」というのは、sc_serv.confの「PortBase=」で設定したポート番号である。(デフォルトでは、別の数字になっている。適当に変更が可能)
なお、ブラウザで同一URLに接続すると、演奏曲の履歴や、現在演奏中の曲目等が参照できる。
Icecast自体は、いろいろなサーバから入手できるため、ダウンロードURLは特に記さない。
実験に使用したのは、icecast-1.3.12。(icecast-1.3.12.tar.gz というファイル名でパッケージ化されている。Windows版があるかどうかは知らない。・・でも、たぶんある?・・ なお、このVersionは既にサポート対象外となっていて、現在は、Icecast2.0系 〜ogg vorbisのストリーミングにも対応〜 がリリースされている)
設定ファイルは、1.3.12にバージョンアップしたら増えてしまったらしい(セキュリティ絡みか?)。4つあるが、全部 conf ディレクトリに置く。
icecast.confもちろん、パスワード無しでもできる・・とは思うが・・試してない・・(^^;
users.aut
groups.aut
mounts.aut
UNIX系OSでの起動は次のごとく、-c で設定ファイルを、-b でデーモン(バックグラウンド)動作を指定する。「-b」を指定しなければ、コンソールモードになる(shutdown で終了)。なお、「-b」は最後に指定しないと、なぜか無視されてしまうみたい。
% /usr/local/icecast/bin/icecast -c /usr/local/icecast/conf/icecast.conf -b
Icecastサーバを起動しおいて、ブラウザで例えば http://www.zcr.jp:8883/list.cgi にアクセスすると、
演奏中の曲名等の情報が表示される。(しつこいけど、「8883」ってのは、icecast.conf内で指定したポート番号ね)
ストリーミング受信するには、list.cgi のページの「Mount」のLINKを辿るか、WinAmp等で直接「サーバ名:ポート番号・・例えば www.zcr.jp:8883」を指定する。
実験では、パスワード照合してOKのユーザのみ聴取可能にしたため、ここで「ID:パスワード」の入力要求が来る。
なお、list.cgiで表示されるページはカスタマイズ可能で、実験では次のような templates を用意した。
mountlist.htmlこれらは、すべて templates ディレクトリに置く。(他のファイルはデフォルトのまま使用)
list_directory.html
bodytag.html
header.html
info.html
WinAmp5
http://www.winamp.com/media-player/japanese
LAME 3.9*エンコーダ(lamewin32.exe中のlame_enc.dll)
http://www.mp3-tech.org/encoders_win.html
lame_enc.dllを Winamp\Plug-ins\ のフォルダにCOPY
Oddcast DSP Plug-in (dsp_oddcast_*.exe)
http://www.oddsock.org/tools/dsp_oddcast/
当然WinAmpのインストール後にインストールする。WinAmpのDSP/Effectの設定でOddcast DSPを指定。WinAmp5でもOK。
(SHOUTcast用のプラグインでは、ヘッダ形式が異なるため、接続できない)
WinAmpのプレイリストをえんえんストリーミングするだけなら、この3つがあれば可能。(マイク/ライン入力を使うには、さらに技が必要で、http://www.ladio.net/housou401/housou401.html ここらへんが参考になるだろう。
サーバ負荷はあまり気にしなくてもいいようだ(DSPプラグインでエンコードする負荷の方が大きい)が、回線の帯域幅が問題になる。
例えば、MP3をまあまあそれなりの音質にしたいならば、少なくとも96kbpsくらいでエンコードする必要があるが、そうするとADSL8Mでは、上りの速度(帯域幅)上限が1Mbps未満(実質800kbps程度?)なので、1024/96=10.666で、同時接続数上限が10程度に制限されてしまう。
もちろん、普通のISDN64Kでは、96kbpsエンコードの音は飛びまくって聞けないため、さらにレートを落として56kbpsエンコードにしたとしても、1024/56=18.28で同時に18人しか聴くことができない。
したがって、リアルタイムで多くのクライアントに配信しなければならない場合は、別ネットワーク上に配信サーバを複数準備するなどのテクニックが必要となる。
自前LAN内部ONLYでのストリーミングであれば、10Mbps〜100Mbpsなのでこんなことは気にしなくていいのだが・・・・
(ついでに、ルータを使用してインターネット接続している場合は、icecast.conf内で指定したUDPポートを開けておかないと、インターネット経由でサーバに接続できないので注意)
最近は、P2Pストリーミングなんてテクニックも出てきているが、これってどうなんでしょ??(勉強不足)ちなみに、Win95機(CPU=83MHz)で RealPlayer8-BASICと、WinAmp2.81を比較してみた結果は、勝負にならないくらいRealPlayerの方が重い。
RealPlayerの「統計情報」で見ると、パケットは全部受信できているのに頻繁に音飛びが発生する。
これは、おそらくCPU負荷がでかいため、再生が追いつかないのだろう。これに比べて、WinAmpでは、音飛びはまったくない。
そういう事情もあるので、Icecastのストリーミングは、できれば、WinAmpで聴いてほしい・・・と。
やはり、MP3ストリーミング・クライアントの王道はWinAmpということで・・(^^;
なお、曲名送出ONの状態では、WinAmpであれば、バージョン2.81でも3.0でも受信はできるが、曲名表示は3.0ではできないみたい。
その他、前述の帯域幅(同時接続数制限)の問題もあるわけが、ストリーミング(放送)をやってみたい方(ただし地元に限る)は、検討の上、サーバを解放するので、メイルでもいただければと思う。
また、なんかおもしろい使い方があれば、ぜひご教示願いたい。
最後に、文中で例としてあげた「www.zcr.jp:8883」というポートは、あくまでも例であるので、念のため。