SHOUTcastを使った自サーバによるMp3ストリーム放送

初出2003/02/13
二版2003/02/14
三版2003/11/10


注意
Mp3ストリーム放送を行う際、著作権が他人にあるMp3ファイルを送信する事は、著作権法違反となります。
御注意下さい。

Windows XP Professional SP1でのインストール画面を使用しています。

※Winampについて
Winamp3.x系列につきましては、2バイト文字処理等にバグがある上、何よりも放送側のDSPプラグインで3.x系列用のものを残念ながら知りません。
よって、視聴側を含み2.x系のみ扱うものとします。
(もしかしたらそのまま3.x系に使えるのかも知れませんが、全く試していません。)
(これを書いている時点でWinamp5beta2が出てますが、こちらも試していません。)

参考にさせていただいたありがたいサイト
用意するもの
ソフトウェアのインストール
放送側設定
視聴側の使い方
ウェッブコンテンツ
FAQ
インストールガイド ScreenShot(画面の取り込み)付きで、インストールの説明をしています。
(VersionUPしたソフトについては、画面に変化がない場合は古い画像をそのまま使って、変化した部分のみ取り込み直しています。
もしかすると、変化しているのに古いままの画像があるかも知れませんので、その場合はご一報下さい)


●参考にさせていただいたありがたいサイト
(リンク許可等、問題あればご一報くださいm(_ _)m)
ネットラジオ(SHOUTcast,icecast)
massive R&D site web
上記サイトのServerの設定ファイルの日本語訳(直接リンク)
ZEAL WEB LABORATORY - SHOUTcast Guide
メススのオジラトッネ

WinMXのチャットの一部屋「初心者の部屋@最低人間」において、mozさんの書き込みを大変参考にさせて頂きました。
この場を借りてお礼をm(_ _)m


●用意するもの
・放送側
※現在のところ、放送に使える再生ソフトはWinamp以外に見つけていません。
Winamp これが無いと音源の用意が出来ません。2.x系列を使用しています。
Winamp日本語化ファイル >Win32工作小屋
SHOUTcast Server 放送サーバ。
SHOUTcast Source DSP WinampからServerへ送信するためのプラグインです。
DSPの日本語化ファイル >Winamp2プラグイン日本語化 ※説明は日本語化していない状態になっています。(次で直す予定です。)
DiCE DynamicDNSサービスを取得した際に、DDNSを自動更新してくれるソフトです。(必須ではないがあると便利でしょう)
・視聴側
Winamp ネットラジオ関係だけでなく、私はmp3はほぼこれだけで再生してます。2.90以降は動画ファイルも再生出来るようになったようです。
RealOne Player 一番動作が重いとのこと。 むしろ使わない方が無難…?
Windows Media Player(WMP) 7.01以降
GSPlayer ここに上げているなかで動作が一番軽いでしょう。ある意味非常に使いやすいです。
Quintessential Player(QCD) 元から日本語化されていて非常に使いやすいPlayerです。
Winampと同じようにGracenoteCDDBにも対応していて、そのデータをタグに埋め込みながらのCDからのリッピングまで出来ます。
Winamp2.x系列用のDSPにも互換性があるようです。(すなわち、QCDでSHOUTcast放送が出来るかも知れません。)


●ソフトウェアのインストール
Windows XP SP1でインストールしています。
特に問題となるような相性などはないようです。
一応、上にも書いたとおりインストールガイドを作りましたので、不安な方はどうぞ。
ただ、この通り行ったからといって問題が起こらないと保証しているわけではないのであしからず。
現時点(ページトップの日付参照)での使用バージョンを記載しておきます。説明はこのバージョンを使っています。

Winamp 2.91
SHOUTcast Server 1.9.2
SHOUTcast Source DSP 1.8.2b
DiCE 1.59
Windows Media Player 9.00.00.3075
GSPlayer 1.86a
RealOnePlayer 2.0 6.0.11.868
QCD 4.10


●放送側設定
・SHOUTcast Serverの設定
このソフトはちょっと難儀なところがあって、「すべてのプログラム」にショートカットが登録されません。
「スタート」→「すべてのプログラム」→「Programs」というフォルダを新しく作って、
そこにショートカットが出来ます。(多分英語環境のソフトのため)
説明図(デスクトップ)

起動自体には影響ありません。適宜移動すると使いやすいかもですけどね。
「Programs」→「SoutCast DNAS」→「SHOUTcast DNAS (GUI)」で起動します。
図の青く反転している項目

さて、 設定を前もって変えておかないと動く動かない以前にPasswordの問題もあります。
「Edit SHOUTcast DNAS configuration」で設定ファイルが開きます。
(設定ファイルの実体は、Serverをインストールしたフォルダの「sc_serv.ini」です。)
図の青く反転している項目
(設定ファイル自体は単なるテキストファイルなので、普通に開いて書き換えても同じことです。
なお、私は「サクラエディタ」というソフトを愛用しているためそちらで書き換えています。
ので、メモ帳と画面が違いますのであしからず)

上で載せた「Serverの設定ファイルの日本語版」を見てもらえるとさらに詳しく書いてありますので、
ぜひとも参考に。

変えるべき点は、
1.MaxUser=32 (21行目)  最大接続人数
2.Password=changeme (29行目)  DSPプラグインとの接続パスワード
あと、ルータのポート開放(UDPポートの開放も含みます)が特定のポートでしか出来ない場合
3.PortBase=8000 (37行目)  外部からの接続を受けるポート
の3つです。

SHOUTcastの放送は、サーバ側とクライアント側が一対一で接続するため、
24Kbps放送で10人繋がると240Kbps帯域が必要となります。
よって、それから考えて最大人数を設定しましょう。

パスワードは、後でDSPプラグインで設定するパスワードをこれと同じにあわせる必要があります。
つまり、WinampDSPプラグインのパスワードが正しくないと、Serverはその放送を許可しない仕組みです。
逆に言うと、デフォルトのままだとアドレス、ポートさえ分かれば誰でも放送できることになります。
しかも、サーバをリモート操作するパスワードがデフォルトだと一緒になっているので遠隔操作されるおそれもあります。
(と言ってもSHOUTcastを遠隔操作してPCをクラッシュさせたり出来るのかというのはよく分かりませんが…)

さて、ポートですが。
ちと変わった(?)仕様になっているようです。
PortBaseで設定したポート+1の二つを使用すると設定ファイルには明記されています。
8000を設定した場合は、8000と8001です。
このうち、外部に向かってデータをやり取りするのは8000だけのようです。
というのもnetstatを使って調べたところ、
WinampDSPからServerへConnectしているときだけTCP8001がESTABLISHEDとなったので、
WinampのDSPプラグインとServerとの接続にポート8001を使っているようです。
私のPCにおいてPortBase=8000と設定したところ、8000ポートでSHOUTcastの生成したサイトにアクセスできるようになりました。
つまり、SHOUTcast Serverにはウェッブサーバの機能もあり、
http://サーバの稼動しているPCのIP:上で設定したポート/ でウェッブサイトを見ることが出来ます。
(http://127.0.0.1:8000/ など。この場合はlocalhostですが)

追記:確認してもらったところ、ポート8000の開放のみで聴くことが出来ました。
ただ、ルータ等を設定する際はTCPおよびUDPともに開放しておいた方が良いようです。
(片方しかできない場合はTCPを。)

さて、それ以外で私に理解できた(と思っている)設定を。(しなくても使えますけどね)

LogFile=sc_serv.log (53行目)  ログの保存ファイル
デフォルトで、Serverをインストールしたフォルダに記録されます。
「none」または空白にすることで無効になります。

ShowLastSongs=10 (67行目)  放送された曲リスト
デフォルトで有効、曲数は10になっています。
これは以下で述べるウェッブサイト上で「これまでに放送された曲目」を見られるようにするための設定です。
行頭に「;」を付けると無効になります。
リストに並べることの出来る曲数は1〜20です。

; WebLog=no (83行目)  ウェッブサーバのログを取るかどうか。
デフォルトで無効(コメントアウト)。
SHOUTcastサーバが生成するサイトを見た人をログとして取る事が出来ます。
ただ、
『DSPプラグインがHTTPプロトコルを使ってリスナー数を取得するため、
 ログが膨れることになるので、これを切る設定にしています。』(from日本語訳)
とあるので、特に必要なとき以外はデフォルトのままがいいでしょう。
(まぁ、長期間・多人数に対して運営でもしない限りそう大きくなるとは言えないですが…)
有効にするには「;」を取って、「yes」にして下さい。
なお、ログの保存先は上のLogFileと同じファイルです。(別には出来ません。)

; AdminPassword=adminpass (143行目)  ウェッブ上からの管理パスワード
デフォルトで無効(コメントアウト)。
Shoutcastが作るウェッブサイトを見ると、
「Admin Login」とありますが、ここでのログインパスワードをPasswordの設定とまた別に設定したいとき
「;」を取って有効にしてください。
ちなみに、探した範囲で説明が無かったので、このAdmin機能についても後述します。
(あまり使うこと無いと思いますけどね。遠隔操作できるので、誰かに管理して欲しいときなどに便利かと。)

まだまだ便利そうな設定はあるのですが、私が良く理解できていないのと、
私自身があまり使いそうにないので(ぉぃ 割愛します。m(_ _)m


・SHOUTcast Source DSP(Winamp plugin)の設定
これはWinampのプラグインなので、Winamp上から操作します。
※QCDへの導入方法はまだ調べていません。
DSPの日本語化パッチがありますが、面倒なので特に難しくないと思いますので、パッチを当ててないままで説明しています。

プラグイン自体を設定する前に、Winamp自体の設定を変えておきましょう。
わかりにくいとの指摘があったので、設定の開き方:ここをクリック→メニュー
拡張子の関連付け 他の再生ソフト等によって設定が変えられることがよくあります。あるいは、Winamp自身が勝手に変えてしまっていたりします。
(デフォルトだとすべてのファイルをWinampが開くようになってしまっています。)
Winampの多重起動許可
なぜこんなことをするのかというと、WinampをSHOUTcast放送だけに使って、mp3ファイルの再生には他のソフトを使っている場合は問題ないのですが、
Winampが拡張子の関連付けを勝手に変えたりするように他の音楽ファイルを再生したときに今放送中のWinampで再生されてしまい、
いきなり曲が変わってしまったりするからです。
(ただ、多重起動設定にしていても時々放送中のWinampで開かれてしまうので、根本的解決にはなってないですね…)

デフォルトでの画面。

SHOUTcastDSP ver1.8.2の説明」を参考に書かせてもらいました。m(_ _)m
というか、私よりこちらのサイトの方が詳しいです…

「Output」タブ
音声出力先や、放送局の名前などの設定をします。 別々に5種類用意できます。
当然同時にも使えます。

「Output」タブの「Connection」で設定するのはPasswordとPort、
それと以下で設定するEncoderのどれを選ぶかです。
Addressは「localhost」のままです。
Password、PortともにServerの設定と同じにして下さい。

「Output」タブの「YellowPages」での設定に付いて。
ConnectでServerに接続を開始します。

Make this server public チェックを入れるとshoutcast.comのサーバに登録を試みます。
外しておいても問題ないようなので、私は外しました。
Description 局の説明です。2バイト文字(日本語とか)を入れると文字化けしますが、
聴く側ではちゃんと見えてます。単に文字化けするだけのようです。
URL ウェッブサイト上で、「Stream URL」となる部分にリンクを貼ります。
管理人のサイトはここ、見たいな使い方ができるかと思います。
Genre 放送する曲のジャンルです。
AIM AOLインスタントメッセンジャーのID だそうです。
ICQ ICQ番号を入れます。
IRC 関連するIRCチャットのチャンネル名を入れます。
Enable Title Updates 聴く側に、流している曲のタイトルやアーティストのサイトURLを伝えることが出来ます。
Autoにしておくと、ファイルに含まれる情報が送信されます。(ID3Tag)
2バイト文字が使えないようです。

Encoder」タブ
放送する際のビットレート(音質と思ってください)を指定します。
5種類設定しておくことが出来ます。

Input」タブ
WinampはそのままWinampで再生した音楽を流します。
Soundcardの方は試してないので分かりません。
とはいっても、読んで字の通りなのでかなり簡単に使えると思います。
私が参考にしたサイトに説明があったのでどうぞ読んでみてください(手抜きという)。


・放送中のServerの表示について。
Serverを起動すると、状態を示すモニターが表示されます。
<02/11/03@09:23:05> [source] listening for connection on port 8001
と表示されたので、Winampからの音源入力を待っている状態です。
ここで、Winampを起動してServerにConnectすると、
<02/11/03@07:31:15> [source] connected from 127.0.0.1
と接続できたことが分かります。

起動から終了までの状況表示の流れ。 (注:再度起動しなおしているので、画面の時刻などが異なります)


・DiCE
ここまでに何度も書いてますが、私はグローバルIPの取得もヴァーチャルホストなどを使ったポート通しもできません。
ので、DynamicDNSサービスを取得する意味自体が無いため、
DiCEについてはテストすることが出来ませんでした。
ただ、DiCE自体は詳しいヘルプがついているのでそちらで大丈夫だと思います。


●視聴側の使い方
一番簡単な再生の方法としては 、上で既に述べたようにSHOUTcastサーバはウェッブサイトを生成しますが、
トップページの「Listen」をクリックすると plsファイルに関連付けられているプレーヤ(WinampやRealOnePlayreなど)が自動起動して再生されるはずです。
うまく行かないときなどに手動でURL入力して使用する際の使い方を以下に述べます。

・Winamp
「ファイルを開く」(図の赤丸)でダイアログが開くので、
そこに「http://サーバIP:ポート/listen.pls」といれて下さい。(例ではローカルを開いています)
これで再生できるはずです。(こんな感じです)

・RealOnePlayer
私の環境でうまく再生できませんでした…(接続中とでて固まります)
ただ、再生できるという話は多数聞いているので大丈夫かと思います。
基本的にWinampと同じ操作感覚でいいと思います。

・GSPlayer
私が見た限りのSHOUTcastにしっかり対応しているプレーヤ中で、一番手軽です。
これもWinampと似た操作でいいです。
起動画面
ファイルを開く
再生中

・WidowsMediaPlayer(WMP) 7.01以降
WMPだけ他とどうも違うようです。(起動画面)
他はlisten.plsまで含めていましたが、WMPだけは「http://サーバIP:ポート/」だけです。
ファイルを開く ここのファイル名を見てください。
再生中

・QCD
どうやらURLにlisten.plsがあってもなくてもいいようです。
起動画面
ファイルを開くURLを追加


●ウェッブコンテンツ
何度か先に述べたように、SHOUTcast Serverにはウェッブサーバとしての機能もあり、
http://サーバIP:ポート/ でそれを利用することが出来ます。
Serverが用意するページを確認するだけであれば、
http://localhost:ポート/ でそれを見ることができる筈です。
(ポートを8000に設定したなら http://localhost:8000/ <-実際にそのページを開きます)
こんな感じのページです。
ここでは、Serverの現在の状態を知ることが出来ます。

Status
index.html、すなわちルートに戻ります。 以下にCurrent Stream Information のつたない説明をしておきます。

Server Status Serverの現在の状態。
up/downは分かったんですが、privateってなんだろう…求む情報!
shoutcast.comにサーバを登録するとpublic、そうでなけれprivateのようです。
DSPのYellowPagesのMake this server publicはこの設定でした。
Stream Status ストリームのビットレートと、現在のリスナー数/上限人数
Listener Peak Serverが起動してから今まででのリスナーの最大人数です。(要するに最高視聴率)
Average Listen Time リスナーの平均視聴時間でしょう。ただ、単純平均でなく、
極端に接続時間の短いリスナーはカウントしていないのかも。
Stream Title DSPプラグインの「Description」に入力した情報が表示されます。
Content Type audio/mpeg となっていますが、これ以外でもServerとしては対応?
Stream Genre DSPプラグインの「Genre」が表示されます。
Stream URL DSPプラグインの「URL」がリンクとして表示されます。
Stream AIM DSPプラグインの「AIM」が表示されます。
Stream IRC IRCのチャンネルへのリンクのようなものが表示されますが、
どうも正常に動作しない模様。Javaチャットのようですが…
Current Song 現時点で流れている曲のタイトルです。※残念ながら2バイト文字に対応してないようです。

Song History
Serverの設定ファイルで、「ShowLastSongs=〜」の項目が有効になっていれば、
このページに今までに流された曲が表示されます。
こんな感じです。
(曲名の2バイト部分が表示されていません。)

Listen
このリンクをクリックすると、plsファイルに関連付けされているプレーヤが起動するはずです。


Stream URL
DSPプラグインで「URL」指定したサイトにリダイレクトされます。


Admin Login
管理者として、IPのBANやログを見たりServerの設定状況を見ることが出来ます。

Login 
ユーザ名は「admin」(固定のようです)。
パスワードは「AdminPassword=〜」を有効にしていればそちらを、無効なら「Password=〜」と同じ物を。
何度もログイン失敗すると「許可されません」とでるので、前のページに戻って再度やり直してください。

管理画面
これは、まだリスナーがいない状態です。
画面(リスナー)
ローカルから繋げて聴いてみたところです。

listeners
admin画面に戻ります。

tail logfile
ログファイルを末尾の付近のみ表示します。

view logfile
ログファイルを全部表示します。

ban list
BANしているIPおよびサブネットのリストです。 ※後述

reserve ip list
予約しているIPのリストです。 (この機能はよく分かりません)

Address Connect Time Underruns Kick IP Ban IP Ban Subnet Reserve IP
127.0.0.1とか。
リスナーのIPが並びます。
接続時間 帯域が足りなくて
切れた回数なんでしょうか…
求む情報!
このIPからの接続を切ります。 このIPからの接続を禁止します。 ※後述。 良く分かりません…
求む情報!

※サブネットBANについて
ひとつのIPだけでなく、連続したIPをまとめてBANします。
確認はしていないのですが、おそらく192.168.0.*(すなわち192.168.0.1〜192.168.0.255)のように
上位24ビットを指定し、BANする形だと思います。

Copyleft:Mp3とか。
引用部分や、SS(ScreenShot)などは当然除外されますが、このコンテンツ自体は無制限に利用できます。
再利用、再加工、再配布などの許可、事前事後の連絡も不要です。(悪意のある改変などは止めてください)
内容については無保証です。
何か間違っていところがあるかもかもしれませんが、
不利益が生じても責任を負いかねますので全て自己責任でお願いします。