次のページ 前のページ 目次へ

11. MP3 のストリーミング

ストリーミングサーバは TCP ベースのネットワークで MP3 ファイルの送信を 可能にします。また、インターネットや局所的なネットワーク(イントラネッ ト)でも同様のことができます。

接続の形式は WEB サーバと非常に似ており、クライアント(MP3 プレイヤー) がサーバへ接続するとファイルが配信されます。

ストリーミングサーバの設定は非常に簡単です。まず Icecast、次に Fluid の順に説明します。

11.1 Icecast

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

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

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 の使い方を学びましょう。:)

11.2 Fluid

パッケージを展開したら、展開したディレクトリへ移動して 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 コマンドで作成したも のと同じ形式になります。

11.3 帯域の検討

MP3 サーバにおいてビットレートの設定を高くしすぎると、 ストリーミングは大量の帯域を消費する可能性があります。

この現象を考察してみましょう。T1 回線は 1.55 Mbps ほどの容量があります。 MP3 を 128kbps ステレオ音声でストリーミングすると、接続する各々のプレ イヤーは 256kbps の帯域を使用するでしょう。従って、6 人のユーザだけが、 その MP3 サーバへ同時に接続できます。そして 256kbps では、多くのモデム 接続のユーザが接続できません!

[訳注 : 必ずしも、ステレオ音声がモノラル音声の 2 倍の帯域を消費す るわけではありません。エンコード形式によっては、2 倍よりもずっと小さく なります。]

従って、サーバがインターネットへ接続している回線の帯域だけではなく、ど のようなユーザが接続してくるのかも考慮して、ストリームのビットレートを 決めなければなりません。56k モデムのユーザが接続するには、24kbps ステ レオがちょうど良い音質の音声になり、一本の T1 回線で同時に 32 個の接続 をほぼまかなえるでしょう。

サーバがイントラネットで動いているとしても、やはり帯域幅の問題を考慮し なければなりません。ネットワークが 10Mbps の場合は特にその必要がありま す。

ISP あるいはネットワーク管理者に、これからストリーミングを始めると知ら せてください。そうしないと、後になってからショックを受けるかもしれませ ん。ある制限値を超えた帯域には、追加料金を課す ISP もあります。そして、 ネットワーク管理者はネットワークがなぜ遅いのかを知りたがっています :)

11.4 著作権の問題

許可や著作権料などの支払いのないストリーミングを、 レコード会社が好まないのはもっともなことでしょう。 それでは、何をストリーミングできるのでしょうか?

[訳注:著作権関連など] ストリーミングには法的な責任が伴うので、 法律の分野にも気を配る必要があるでしょう。

以下に 2 つのリンクを挙げます。ひとつは、技術をとりまく制約をなくすよ う主張している、Electronic Frontier 財団です。もうひとつは、著作権侵害 からアーティストの権利を守ろうとする、米国レコード協会 (RIAA) です。

両方のサイトを見るよう、強く勧めます。また、あなたが実際に住んでいる場 所の、ストリーミングと著作権に関連するサイトも見るよう勧めます。

[訳注 : 日本国内においては、音楽著作権は著作者からの委託を受け、 JASRAC が独占的に管理して います。日本国内で音楽配信を行いたいのなら、必ず見ておきましょう。 ]


次のページ 前のページ 目次へ