ストリーミングサーバは TCP ベースのネットワークで MP3 ファイルの送信を 可能にします。また、インターネットや局所的なネットワーク(イントラネッ ト)でも同様のことができます。
接続の形式は WEB サーバと非常に似ており、クライアント(MP3 プレイヤー) がサーバへ接続するとファイルが配信されます。
ストリーミングサーバの設定は非常に簡単です。まず Icecast、次に Fluid の順に説明します。
Icecast をダウンロードして tar ファイルを展開したあと、doc/
ディレクトリをよく見ると良いでしょう。HTML のマニュアルは非常に役に立
ち、幅広い情報を含んでいます。
ソースをダウンロードしたら、システムに適した命令を実行しコンパイル作業 を行ってください。
etc
ディレクトリにある設定ファイル icecast.conf
へ(訳注:今あ
なたが設定している) Icecast サーバの名前を正しく記述しなければ、
Icecast は正常に動作しません。サーバ名は IP アドレスへ正確に変換できな
ければなりません。
Icecast を起動したときに以下のメッセージが出たなら、何か問題があります。
-> [05/Jan/2000:17:21:04] WARNING: Resolving the server name [your.server.name] does not work!
etc
ディレクトリにある icecast.conf
を編集してください。
``server_name'' のエントリを追加し、サーバ名を入力してください。サーバ
名が不明なら、hostname
コマンドあるいは /etc/hosts
を見
ればサーバ名が分かります。
必要な変更が済んだら、設定ファイルを bin
ディレクトリへコピーする
か、以下のように -c
オプションで設定ファイルを指定して Icecast を
起動する必要があります。
./icecast -c ../etc/icecast.conf
すべて正しく設定が済んだら、以下のような出力が見えるはずです。
[dj@megajukebox bin]$ ./icecast -c ../etc/icecast.conf -d /home/dj/mp3/icecast/ Icecast Version 1.3.0 Starting... Icecast comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of Icecast under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. [05/Jan/2000:18:36:30] Icecast Version 1.3.0 Starting.. [05/Jan/2000:18:36:30] Using stdin as icecast operator console [05/Jan/2000:18:36:30] Tailing file to icecast operator console [05/Jan/2000:18:36:30] Server started... [05/Jan/2000:18:36:30] Listening on port 8000... [05/Jan/2000:18:36:30] Using [megajukebox] as servername... [05/Jan/2000:18:36:30] Max values: 1000 clients, 1000 clients per source, 10 sources, 5 admins -> [05/Jan/2000:18:36:30] [Bandwidth: 0.000000MB/s] [Sources: 0] [Clients: 0] [Admins: 1] [Uptime: 0 seconds]
-d
オプションはログファイルとテンプレートファイルのディレクトリを
設定します。
以下に、コマンドラインオプションの一覧を挙げます:
-c [filename] 設定ファイルを指定します。コマンドラインオプションは設定ファイルによる 設定を上書きすることに注意してください。カレントディレクトリの icecast.conf は特に指定しなくても既に読み込まれています。従って、 新し い設定ファイルが上書きするものを除き、icecast.conf で記述した設定はす べてサーバが使用します。 -P [port] すべてのクライアントと音源、そして管理用に使用するポートを指定します。 デフォルトは 8000 です。 -m [max clients] クライアントからの接続を許可する最大数を指定します。クライアント接続数 がこの値に達すると、すべてのクライアントとの接続を拒否して 'HTTP/1.0 504 Server Full' と出力します。 -p [encoder password] エンコーダがサーバへ音声データを送る際に使わなければならないパスワード を指定します。crypt() をサポートするようコンパイルしたなら、暗号化済み の文字列を指定しなければなりません。 -b (デーモンのように) Icecast サーバをバックグラウンドで起動します。サー バ管理コマンドを使用するには、Telnet などを使って管理者としてサーバへ 接続する必要があります。 -d [directory] Icecast のログのすべてを指定したディレクトリに作成します。また、 Icecast はこのディレクトリからの相対パスで、テンプレートファイルを探す ようになります。
これでサーバが起動しました。次に、MP3 ファイルを指定してサーバへ接続す る必要があります。
Shout と LiveIce ふたつから、MP3 データをサーバへ配布するアプリケーショ ンを選択できます。
Shout は Icecast にストリーミングを行う MP3 の再生リストを提供します。 Shout は Icecast の配布パッケージに含まれています。
以下のようにして、ストリーミングする MP3 ファイルの再生リストを作成します。
find [MP3 directory] -name *.mp3 -print > playlist
基本的には、Shout を起動するには以下のようにコマンドを実行します。
[dj@megajukebox bin]# ./shout megajukebox -P hackme -p playlist
-P
オプションは Icecast へマウントポイントを追加するために必要と
なるパスワードを指定します。hackme のように適切に設定してくだ
さい。パスワードを変更することを強く勧めます。さもないと、誰かがあなた
のマシンを乗っ取りますよ。:) -p
オプションは再生リストがある場所
を指定します。
コマンドラインオプションの一覧を以下に挙げます。
[dj@megajukebox bin]# ./shout Usage: shout <host> [options] [[-b <bitrate] file.mp3]... Options: -B <directory> - Shout のファイルすべてに使用するディレクトリを指定する -C <file> - 設定ファイルを指定する -D <dj_file> - (system()) で各曲の前に dj_file を実行する -P <password> - パスワードを指定する -S - すべての設定を表示して終了する -V - 冗長出力 -X <desc> - 解説を指定する -a - 自動ビットレート補正を使用する -b <bitrate> - ビットレートの初期値を指定する -d - dj を有効にする -e <port> - 接続するポート番号を指定する -f - 指定したビットレートではないファイルはとばす -g <genre> - 指定したジャンルを使用する -h - この文章を表示する -i - 古い icy ヘッダを使用する -k - 再生リストを切り捨てない(維持する) -l - リピート再生 -m <mount> - マウントポイントを指定する -n <name> - 名前を指定する -o - ビットレート自動設定を使用する -p <playlist> - 再生リスト名を指定する -r - シャッフル再生 -s - ディレクトリサーバへメタデータを送らない(秘密モード) -u <url> - URL を指定する -v - バージョンを表示する -x - cue ファイルを更新しない (計算量の節約) -z - バックグラウンド実行(デーモンモード) -t - タイトルの配布を有効にする
LiveIce にはふたつの動作モードがあります。Icecast へ再生リストを渡せま すし、サウンドカードからの生音声をリアルタイムに流すこともできます。
ソフトウェアを構成するために、 Tar アーカイブを展開して README を読ん でください。その後、LiveIce の動作に必要な mpg123 がインストールしてあ ること、そして動作するかどうかを確認してください。
LiveIce を設定するにはふたつの方法があります。設定ファイルを vi や emacs などで編集する方法と、TK ベースの設定ツールを使う粋な方法のふたつで す :)
liveice.cfg の本質について最も詳しく書いてあるのは LiveIce の Web ペー ジです。liveice.cfg のすべてのオプションについて解説しています。
LiveIce を (MP3 リストからストリーミングする)ミキサーモードにセット する設定ファイルを以下に載せます。
注: 設定ファイルにはコメントを加えてありますので、カット & ペース トしたときに、コメントが次の行へかからないように気を付けてください。そ うしないと、LiveIce は動作しなくなります。
# liveice の設定ファイル(自動生成) SERVER megajukebox # サーバ名 *名前を引ける必要があります* PORT 8000 # Icecast が使用するポート番号 NAME Megajukebox # MP3 プレイヤーとディレクトリサーバに送るサーバ名 # 例) 'Sarah FM' or 'ThisTown: Loud and Heavy Jazz - Internet Radio 24/7' GENRE Live # ジャンルに関する情報 例)'Talk' or 'Dance' DESCRIPTION # 放送局に関する情報 例)'The best for reggae in the North' URL http://megajukebox:8000 # サーバの URL PUBLIC 0 # ディレクトリサーバに放送局と放送内容を知らせたい場合は 1 # それ以外は 0 XAUDIOCAST_LOGIN # ICY_LOGIN か X_AUDIOCAST_LOGIN を指定する。X_AUDIOCAST が良い MOUNTPOINT /techno # X_AUDIOCAST を指定した場合のみ、Icecast ストリームのマウントポイント名を指定する。 # それ以外はデフォルト値の icy_0 PASSWORD hackme # Icecast の管理者パスワード SAMPLE_RATE 44100 # ストリームのサンプリング周波数 STEREO # MONO か STEREO を指定する NO_SOUNDCARD # 以下を見てください HALF_DUPLEX # サウンドカードとの通信方式を指定する。HALF_DUPLEX (半二重) あるいは FULL_DUPLEX (全二重) USE_GOGO # 使用するエンコーダを指定する。README の一覧を確認してください。 BITRATE 128000 # ストリームのビットレートを指定する(以下を参照せよ) VBR_QUALITY 1 # 可変ビットレートを有効にする MIXER # 以下を見てください PLAYLIST /megajukebox/playlist # 再生リストの場所(詳細は本章の後半にあるコマンドをご覧ください) TRACK_LOGFILE track.log # 配信された MP3 ストリーム一覧のファイル名と場所
設定ファイルが書けたら、以下のように LiveIce を起動してください:
[dj@megajukebox liveice]$ ./liveice /megajukebox/playlist 1 opening connection to megajukebox 8000 Attempting to Contact Server connection successful: forking process opening pipe!... writing password Setting up Interface Soundcard Reopened For Encoding Input Format: 16Bit 44100Hz Stereo Output Format: 256000 Bps Mpeg Audio IceCast Server: megajukebox:8000 Mountpoint: /techno Name: megajukebox - this and that radio - broadcasting 24/7 Genre: Techno Url: http://megajukebox Description: a load of digital noise -> but i know you like it :) Press '+' to Finish adding /megajukebox/demotunes/track_1.mp3 adding /megajukebox/demotunes/track_2.mp3 adding /megajukebox/demotunes/track_3.mp3 adding /megajukebox/demotunes/track_4.mp3 /megajukebox/demotunes/track_4.mp3 Adding New Channel 1 Adding New Channel 2 Channel 1 selecting /megajukebox/demotunes/track_1.mp3 Channel 2 selecting /megajukebox/demotunes/track_1.mp3 Playing track_1.mp3 searching for Id3v2 searching for Id3v1 copying the data fixing the nulls adding the url closing input file Using log track.log
最後の行はピークメーターです。
ミキサーモードの操作キー一覧を挙げます:
操作 チャンネル 1 キー チャンネル 2 キー ~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~ チャンネルの次の曲を選択 1 a チャンネルの前の曲を選択 q z チャンネルのスタート/ストップ 2 s チャンネルのリセット w x 音量を大きく 3 d 音量を小さく e c 再生速度を早める 4 f 再生速度を遅くする r v スティッキーモード On/Random/Off 5 g チャンネルの試聴 t b ランダム再生 u m
上記の liveice.cfg はミキサーモードのものです。LiveIce をオーディオモー ドで使用するには、MIXER と書いてある行を NOMIXER へ、NO_SOUNDCARD を SOUNDCARD へ変更し、LiveIce を再起動してください。
正しいオプションを指定し忘れると、面白い警告を受けます;)
946:Error: Line In mode *and* no soundcard??????? Eeejit!
正しく設定し外部の音源を接続したのなら、 ストリーミングできるでしょう =:)
[dj@megajukebox liveice]$ ./liveice /megajukebox/playlist 0 Initialising Soundcard 16Bit 22050Hz Stereo Full Duplex opening connection to megajukebox 8000 Attempting to Contact Server connection successful: forking process opening pipe!... writing password Setting up Interface Soundcard Reopened For Encoding Input Format: 16Bit 22050Hz Stereo Output Format: 32000 Bps Mpeg Audio IceCast Server: megajukebox:8000 Mountpoint: /daves_band_live_at_the_club Name: megajukebox - Dave and the Dynamite - Live at the Roxy Genre: Live/Rock Url: http://megajukebox Description: megajukebox::Louder than a frog in a trashcan..... and almost as musical Press '+' to Finish Lvl: L: 8704 R: 11776
最後の行は信号レベル表示で、入力信号が高すぎると *clip* (切捨て)の警告 が発生します。できるなら、入力のゲインを下げてください。
鋭敏な目をもっているなら、liveice.cfg の最初のコメントに自動的に生成さ れたファイルだと書いてあることに気付くかもしれません。TK ベースの GUI である liveiceconfigure.tk を使っている、あるいは手動で設定変更をした のなら、設定を保存した際に設定ファイルから上記のコメントがなくなります。 GUI を使うか、vi や emacs の使い方を学びましょう。:)
パッケージを展開したら、展開したディレクトリへ移動して README を読んで ください。:)
Fluid には送信、中継、転送の 3 つの基本的なモードがあります。 ここでは、送信についてのみ説明します。
送信に関連する設定ファイルは config/MP3TX.cfg
にあります。
サーバをテストするには、以下のようにして起動してください。
この時点では、デフォルトの設定ファイルで問題ないはずです。
$ java Fluid TX
当たり前の話ですが、まず最初に何らかの形で Java をインストールする必要 があるでしょう。 http://www.blackdown.org で手に入る、 Blackdown による JDK の移植を使用できます。あるいは RedHat を使ってい るなら、Kaffe を使えます。
Fluid にはサンプルの MP3 ファイルがいくつか付属しています。従って、す べて正常に動作すれば、以下の例と似ている出力を目にするはずです(この例 では Kaffe を使用しサーバを起動しましたが、Java を使って起動する必要が あるかもしれません)。
[dj@megajukebox Fluid-Beta2J]$ kaffe Fluid tx ------- Fluid Streaming Server Beta 2 ------- This program is ShareWare(tm) and it will not be crippled in any way because of it. However if you do like the program and will use it commercial purposes, we ask of you to contact us at the address below for pricing info: Eldean AB E-mail: Sjoangsvagen 7 fluid@subside.com S-192 72 Sollentuna SWEDEN Fluid is Copyright Subside (C) 1998 written by Lars Samuelsson http://www.subside.com --------------------------------------------- * Transmission mode * Reading config from: config/MP3TX.cfg Reading playlist: playlist.m3u Server started on port: 2711 Accepting administrator login on port: 2710 P| Dr. Nick - Hello Everybody
上記のような出力になったら、正常に動作しているでしょう。 しかし、デモファイルをストリーミングするだけじゃなくて、 それ以上のことをやりたいですよね!
ストリーミングしたい MP3 の再生リストをコンパイルする必要があります。
このリストはユーザが変更したり配送要求できない静的なリストになります。
これは playlist.m3u
という名前で、デフォルトではルートディレクト
リにあります。
特定のディレクトリ(あるいはディスク)にあるすべての MP3 ファイルについて、 再生リストをコンパイルするには、以下のようにコマンドを使ってください。
find [MP3 directory] -name *.mp3 -print > playlist.m3u
デフォルトではサーバは 2711 番のポートを使用し、リスナーはこのポートへ 接続してきます。このポート番号を変えたいのなら、設定ファイルで変更でき ます。
管理者用ポートへ telnet し、サーバをリモート管理できます。このポートは デフォルトでは 2710 番で、以下のように操作します。
[dj@megajukebox Fluid-Beta2J]$ telnet localhost 2710 Trying 127.0.0.1..megajukebox Connected to localhost.localdomain. Escape character is '^]'. jaguar You are connected to the -Fluid- Streaming Server Type "help" for a command reference help The following commands are available: help conn curr exit curr Information about the currently broadcasted song: Title: Beer Talk Artist: Homer Simpson Album: The Simpsons Year: 1996 Comment: Borrowed this as an example Genre: Comedy
``jaguar
'' はデフォルトの管理者パスワードです。パスワード入力のプ
ロンプトは出ないので、そのまま待っていたりしないでください! パスワー
ドを初期設定から変更するよう勧めます。そうしないと、侵入者を招き入れる
ことになりますよ! パスワードの変更は、以下のように設定ファイルで行い
ます:
[dj@megajukebox config]$ cat MP3TX.cfg 2711 2710 5 4096 32 1000 jaguar playlist.m3u current.txt # --- 各行の説明 --- # 1. (サーバが使用する)ポート番号 # 2. (リモート管理用の)ポート番号 # 3. (サーバが許可する)最大接続数 # 4 読み書きのパケットサイズ [Byte] # 5. MP3 ファイルのビットレート [kbps] (すべての MP3 ファイルは同じビットレートでなければならない) # 6. 曲間のポーズ [msec] # 7. リモート管理用のパスワード # 8. (.m3u 形式の)再生リスト名 # 9. (ID3 タグから)曲情報を書き込むファイル名
ここで参照する m3u 形式の再生リストは、先に find コマンドで作成したも のと同じ形式になります。
MP3 サーバにおいてビットレートの設定を高くしすぎると、 ストリーミングは大量の帯域を消費する可能性があります。
この現象を考察してみましょう。T1 回線は 1.55 Mbps ほどの容量があります。 MP3 を 128kbps ステレオ音声でストリーミングすると、接続する各々のプレ イヤーは 256kbps の帯域を使用するでしょう。従って、6 人のユーザだけが、 その MP3 サーバへ同時に接続できます。そして 256kbps では、多くのモデム 接続のユーザが接続できません!
[訳注 : 必ずしも、ステレオ音声がモノラル音声の 2 倍の帯域を消費す るわけではありません。エンコード形式によっては、2 倍よりもずっと小さく なります。]
従って、サーバがインターネットへ接続している回線の帯域だけではなく、ど のようなユーザが接続してくるのかも考慮して、ストリームのビットレートを 決めなければなりません。56k モデムのユーザが接続するには、24kbps ステ レオがちょうど良い音質の音声になり、一本の T1 回線で同時に 32 個の接続 をほぼまかなえるでしょう。
サーバがイントラネットで動いているとしても、やはり帯域幅の問題を考慮し なければなりません。ネットワークが 10Mbps の場合は特にその必要がありま す。
ISP あるいはネットワーク管理者に、これからストリーミングを始めると知ら せてください。そうしないと、後になってからショックを受けるかもしれませ ん。ある制限値を超えた帯域には、追加料金を課す ISP もあります。そして、 ネットワーク管理者はネットワークがなぜ遅いのかを知りたがっています :)
許可や著作権料などの支払いのないストリーミングを、 レコード会社が好まないのはもっともなことでしょう。 それでは、何をストリーミングできるのでしょうか?
[訳注:著作権関連など] ストリーミングには法的な責任が伴うので、 法律の分野にも気を配る必要があるでしょう。
以下に 2 つのリンクを挙げます。ひとつは、技術をとりまく制約をなくすよ う主張している、Electronic Frontier 財団です。もうひとつは、著作権侵害 からアーティストの権利を守ろうとする、米国レコード協会 (RIAA) です。
両方のサイトを見るよう、強く勧めます。また、あなたが実際に住んでいる場 所の、ストリーミングと著作権に関連するサイトも見るよう勧めます。
[訳注 : 日本国内においては、音楽著作権は著作者からの委託を受け、 JASRAC が独占的に管理して います。日本国内で音楽配信を行いたいのなら、必ず見ておきましょう。 ]