2013年2月23日

【CentOS】好きな曲を好きな時に、ネットラジオサーバーの構築

我が家のサーバーにはmediatombを利用したDLNA対応メディアサーバーが構築してあります。
これで自宅内であれば、スマホ、タブレット、PCなど、ひとつのリソースを複数のデバイスで共有することができるようになってます。

ただ、僕はいい加減で我侭な人間なので、音楽を聞くたびに何百何千とある曲リストから聞きたい曲を探し出す作業が嫌いなのです。くつろぎたいのになぜかストレスが貯まります。
なので、音楽垂れ流しでアクセスすれば自分の聞きたい曲がいつでも聞ける、ネットラジオサーバーを構築してみました。



【ネットラジオ配信サーバ:Icecastの導入】

導入できるアプリケーションは他にもいくつかあったのですが、今回はyumのパッケージが入っているという点も踏まえ、Icecastというサーバを利用することにしました。(※CentOS6.3です)

以下のページを参考にしました。というか以下のページで大体設定できます。
Icecastのコンパイルとインストール - SE奮闘記

(2014/01/29追記)上記ページではIcecastをビルドしてインストールしていますが、実はパッケージはRPMリポジトリで配布されています。そのためRPMリポジトリを追加してやることでyumコマンドから導入できるようになります。
RPMforgeリポジトリ導入(RPMforge) - CentOSで自宅サーバー構築

# wget http://apt.sw.be/RPM-GPG-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt
# rm -f RPM-GPG-KEY.dag.txt
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# rm -f rpmforge-release-0.5.2-2.el5.rf.i386.rpm
# yum -y update rpmforge-release

上記流れでリポジトリの追加ができます。
青文字にしてある箇所はこちら(rpm配布先)から自分の環境に合ったパッケージを選んでください。

(追記ここまで)

# yum -y install Icecast

上記リンクではソースからビルドしてますが、CentOSだったらとりあえずこれだけで必要なものは大方揃います。
インストールが完了したら設定を変更しましょう。

# vi /etc/icecast.xml
(2014/01/29修正)

どの項目を編集すればいいのかは、書くのが面倒なので上記のブログ記事を参照しましょう。(適当)

(2014/02/02追記)デフォルトはループバックからのアクセスしか許可しないように設定されているため、とりあえず設定をコメントアウトしておきます。

(56行目辺り)
<bind-address>127.0.0.1</bind-address>
  ↓
<!-- <bind-address>127.0.0.1</bind-address> -->
↑もしくは自身のI/F(eth0)に設定したアドレスを入力したら通りました。

コメントアウトすることで<hostname>に設定したパラメータが適用されるようです。
→<hostname>localhost</hostname>

正直なぜこれで通るようになったのかよくわかってない。。。

参考:Icecast 2 Config File#Misc Server Settings

(追記ここまで)

サービスとして動作させることができるので、とりあえず動かしてみます。

# service icecast start

セットで自動起動設定などはいかがでしょうか?

# chkconfig icecast on

次にicecast管理ページにアクセスしてみます。
icecast(というかShoutcast互換サービス)はポート8000で待ち受けてるみたいです。

トップページには配信中の番組リストが表示されますが、現在は何も配信されてないので何も表示されません。

音楽の垂れ流しにはIcesというサービスを別に起動する必要があります。

【ネットラジオ配信クライアント:Icesの導入】

CentOSのyumには、Icesのパッケージは入ってないみたいです。もしかしたら他のレポジトリに含まれているのかもしれないですが、自分はよく知らないので、今回はソースからのビルドで行おうと思います。

というか、また同じブログの別記事を参考にさせてもらいました。
【Linux】Icecast serverのクライアントIceSをコンパイル、インストール - SE奮闘記

上記ではそのままmakeしてますが、それだといくつかライブラリが足りない場合があるので、事前にyumからパッケージをインストールしておきます。

# yum -y install libogg libvorbis-devel libshout-devel alsa-lib-devel

入れ終わったら、コンフィグアーするわけですが、上記yumコマンドを見てもわかるように、alsaのライブラリを入れています。

デフォルトだとその他のサウンドドライバ(SunAudioやRoarAudio)も一緒にビルドするようになっていますが、いらないものもあるので切っておきましょう。

# ./configure --desable-sun-audio --desable-roaraudio

後は何も考えずmakeとmake installをば。
で、設定を弄って音楽ファイル用意して、プレイリストを作ってicesを起動すれば成功です。


ちなみにプレイリストは普通のテキストファイルに1行ずつOGGファイルのパスを書いただけのもので大丈夫です。

リンク先の記事にあるIcesに関する情報を補足させてもらいますと、以下のような感じみたいです。
>Ices2はライセンスの絡みから、ライセンスフリーのOggVorbis形式の音楽ファイルのみに対応。
>mp3等を利用したい場合は、旧バージョンのIces0を利用するといける。
>ただしIces0アップデートしてないので、最近のライブラリを利用するとエラー吐いてビルドできない。

別にmp3にこだわる必要はないと思うので、OggVorbisに変換すればいいんじゃないんでないですかね。ちなみに自分はSoundConverterって変換ソフト使ってます。(こちらはUbuntu)


ちなみにビットレートはHigh(〜192kbps)を選べばいいと思います。

こんな具合で、比較的簡単にネットラジオ配信環境は出来ることがわかりました。

【実際に聞いてみた】

ネットラジオの再生には普通の音楽再生ソフトを使うことができます。
たいていの音楽再生ソフトには「URLを開く」的な項目があると思います。これで再生することができます。


Rhythmboxで説明すると、左上の「再生」から「新しいインターネットラジオ局」を選択するか、左のライブラリリストからラジオを選択し「追加する」を選択します。


URLにサーバーのアドレスと、ices.conf内に記述したストリームファイル名を加えたURLを記述し、追加を押します。これで再生することが出来るようになりました。


今回はIcecastでネットラジオサーバの構築をしましたが、WinampのネットラジオサーバーShoutcastも無料で手に入れることができるし、AppleのネットラジオサーバーDarwinStreamingServerを利用するのもいいと思います。