ブログ検索

メタ情報
RSS

個人的な興味から、音声ファイルのストリーミング環境を模索しています。ようやくある程度納得できる環境になったので、やはり備忘録的にエントリーしておこうかなと。

ウェブで調べると、Linuxでストリーミング環境を実現するソフトウェアがいくつか見つかりますが、独断と偏見で主なものを挙げてみると・・

サーバ
icecast
SHOUTcast server

ストリーミングのソースを提供するセンダー(?)
ices0.x系 ices2.x系
SHOUTcast trans

これらを適当にチョイスして動かせばそれなりには動くのだけど、使い勝手の良しあし(プレイリストのリピート再生方法が分からないとか)や、mp3への対応具合(ogg vorbisのみとか、ID3タグの読み込みとか、2バイトコードとか)がバラバラで、自分にちょうどいい組み合わせを探すのに苦労しました。ちょっと古いソフトだとコンパイルするだけで一苦労。

紆余曲折を経てたどり着いた組み合わせは、これ。

サーバー SHOUTcast server 1.9.8
センダー ices-0.2.3.wTK-20050101-185243
使用OS CentOS 5.0

センダーに関しては、素敵な改造版icesを公開されている方がいらっしゃって、ありがたく利用させていただきました。とりあえずの最低条件はプレイリストをリピート再生する、mp3のID3V1タグ(含2バイト文字)程度はプレーヤーに表示させる・・・ということであり、それらを満たすものに。

また、比較的安定したシステムができたので、サーバの使用するポート番号をずらして複数起動できることも確認できた。これはなかなか便利。

試験的にひっそりと放送しています上のメニューのPOOLCAST.NETをご覧ください。器はともかく中身をちゃんと作れ・・・という突っ込みはともかく、一通り自分でやってみたいんだぜ。ライフワークみたいなもんです。こうして経過をブログに残すのも楽しいもんです。

顛末については、後半に続く。



■ ストリーミング環境
■ CentOS5.0
■ + SHOUTcast server
■ + ices-0.2.3.wTK-20050101-185243 の構築

■ SHOUTcast server

ここでダウンロード
実行ファイルなのでコンパイルは不要。
/usr/local/shoutcast あたりに展開。

・設定
設定ファイル sc_serv.conf を適宜編集。
ファイアウォールは利用ポートと+1の二つを開けておく。
例)8000番を利用する場合は8001も開ける

・起動

# /usr/local/shoutcast/sc_serv 設定ファイル &

テストの時は & はつけない。停止はCTRL+C。
セキュリティを考慮して実行用ユーザを作ったりするとよい。

・起動確認
起動後にブラウザで http://ホスト名:ポート番号/ を開くとリスナー用とアドミン用の管理画面が見られる。パスワードは設定ファイルに書いたもの。

■ices-0.2.3.wTK-20050101-185243

ここから入ってダウンロード
/usr/local/src/ices あたりに展開。

・コンパイルの準備

configureで 改造部分の有効化、lameによる再エンコード、perlによる制御、xml形式のコンフィグファイルを有効にする場合はこのようなオプションとなる(実際は1行です)。

# ./configure --with-tk-hack --with-lame --with-perl --with-xml-config=/usr/bin/xml2-config

lame や libxml2 が未導入に場合はエラーになるのでパッケージで導入する。
yum のリポジトリに rpmforge を加えておく。
こちらを参照してください。
CentOS で構築する自宅サーバさん
※公式以外のリポジトリの利用は自己責任でお願いします。
yum で lame, lame-devel, libxml2, libxml2-devel を導入。
他にもあるかもしれないが、yum で全部いけるはず。
私の環境にはコンパイラがなかったので gcc も入れた。
libshout を既に導入している場合は削除しておく。
configure をやり直す場合はその都度 config.cache を削除しないとハマる。

※2008-12-01現在、CentOS5.2で試したところ、lameの最新版はlame-3.98.2-1でしたが、icesのconfigure実行時にエラーが出てしまうようです。ひとつ古いlame-3.97-1だと通りました。私はlameとlame-develのRPMは導入せずにlame-3.97のソースをコンパイルして導入しました。ソースはこちらRPMはこのへんで。

・コンパイル & インストール

# make
# make install

実行ファイル群は /usr/local/icecast 以下にコピーされる。

・設定
/usr/local/icecast/etc/ices.conf を適宜編集。
SHOUTcast server の場合のプロトコルは icy 。
後述するプレイリストを指定。
どうやら ices.confの<!– コメント –>中に「–」とハイフンが連なっているところがあるとエラーで弾かれるようなので、その場合はエラーが出なくなるまで適当に調整する。
ちょっとでも文法を誤ると segmentation fault となってしまうので、ドツボだなと感じたら最初からやりなおしてみる。コンフィグファイルはコピーしたものを使おう。

・mp3ファイルとプレイリストの用意
任意のディレクトリにmp3ファイルを配置。
プレイリストはmp3ファイルをフルパスで記述。改行コードはLF。
ID3V1タグの文字コードはShift-JIS。

・起動

/usr/local/icecast/bin/ices -B -c 設定ファイル &

テストの時は & はつけない。

・起動確認
シェルに表示される情報と SHOUTcast server の管理画面で状態を確認する。問題なさそうならクライアントPCでプレーヤーから接続してみる。
http://ホスト名:ポート番号/ を開く。
音が聞こえれば成功。

■ クライアントPCからの放送
Winamp + SHOUTcast DSP などもソース接続が可能。

■ その他
サーバ、センダー共に /etc/init.d/ に起動スクリプトを配置して管理すると便利になります。
かつてリピート再生がうまくいかなかったとき、勢いあまって、libshoutバインドのjava実装系である libshout-java を使ってセンダーを作ったのはよい思い出です。これちゃんと動いたけど、MP3タグのバージョンによっては止まっちゃったりして原因が分からなくて困った。あれ・・今サイトみたら今年も開発が続いているな・・。

Comments are closed.