2007-09-12

Apache:MP3を使ってみる

mod_perlを利用するApache:MP3と言うモジュールを使ってみた。

Apache:MP3はApacheでIcecast互換のストリーミングをするためのモジュールです。
Icecastはライブストリーム方式のため、リアルタイムで音声データを送出する必要があるが、ファイルベースの時にも同じようにエンコードデータを送るのも効率が悪いし、リソースも勿体無い。
Apache::MP3はそんな部分を補うであろう、ファイルストリーミングを行うモジュールです。

今回はFreeBSD6.2、Apache2環境でテスト。

まずは、mod_perlを入れなくては無いが、今回は実験なのと面倒なので、DSOで対応。
portsのwww/mod_perl2からインストールする。
入れた後、httpd.confに無いなら、LoadModule perl_module libexec/apache2/mod_perl.soを追加。

Apache::MP3モジュールをインストール
私はここで、cpanからインストールしたのだが、portsに存在するので、portsからインストールするのをお奨めします。
cpanから入れると、後々、依存関係がおかしいと言われます。(pkgdb -Fする事に)

http.confに
SetHandler perl-script
PerlHandler Apache::MP3
PerlSetVar AllowDownload No #ファイルダウンロードの禁止設定
を追加。

また、必要ならAddTypeを設定しておく。
AddType audio/mpeg .mp3 .MP3
AddType audio/playlist .m3u .M3U
AddType audio/x-scpls .pls .PLS
AddType application/x-ogg .ogg .OGG #oggフォーマット用

この設定だと、/song以下にデータを置く事になる。
これで、Icecast互換ストリーミングする事が出来ます。

ブラウザでhttp://example.com/Songsにアクセスするとプレイリストが表示される。
ただし、標準だとルートのapache_mp3ディレクトリのcss・画像ファイルを参照しますが、このままでは存在していないので、Apache::MP3のtar.gz(ここで良いと思います)をダウンロードしてきて中から、apache_mp3ディレクトリごとapacheのドキュメントルートにコピーします。

まあ、使い道なのですが、個人使用ならファイル共有でアクセスしたほうが便利だと思います。
Icecastのライブストリーミングに対してオンデマンドストリーミングの部分を補うことが出来ると思います。
Apacheの制御が使えるので、アクセス制限等がやり易いので使い道はあると思います。

私的には、オンデマンドストリームの要?だと思っているシークですが、(クライアントはWin)
  • WindowsMediaPlayer11 シークバーを操作すると初めから再生される
  • iTunes7 シークバーを操作すると、動かしても無視され続きからになる
  • Winamp5.5 シーク出来る
  • RealPlayer11 受信した領域のみシーク出来る
と言う事で、長いコンテンツだと厳しいかなと思いつつ、Icecastライブだと思えば聞くほうは良いのかな?とも思います。

0 コメント:

コメントを投稿