Icecast とMixxxを使って音声ストリーム放送ができるようにセットアップしてみました。

音声の流れとしては、 Mixxxにて音声ソースを用意して、サ―バーに組み込んだIcecastに送り、Icecastから、接続要請のクライアントに配信する形となります。

Mixxxについてはこちらをご覧ください。使い方などは割愛いたしますが、こちらに、使い方の説明がありますのでご参考にしてください。

サーバーについては、外部サーバーを借りて(VPSなど)構築する形となります。今回は、OSとして、centos7を選択しています。
centos7はインストール済みで、 sudoコマンドが使えるsshユーザーを前提としています。

まずはicecastをインストールしますが、ここではソースからコンパイルしました。あとでわかったことですが、yumで用意されていました^^;
コンパイルに先だって、こちらの「SE奮闘記様のIcecastのコンパイルとインストール」さんのブログを参考にさせて頂きました。
貴重な情報ありがとうございます。

コンパイルに必要なライブラリーをインストールします。
$ sudo yum install libxslt-devel libogg-devel libvorbis-devel vorbis-tools libshout-devel libtheora-devel speex-devel
ソースを取りに行きます。
$ wget http://downloads.xiph.org/releases/icecast/icecast-2.4.4.tar.gz

展開します。
$ tar xzvf icecast-2.4.4.tar.gz

コンパイル会場に移動します。
$ cd icecast-2.4.4
コンフィグを実行します。
$ ./configure
コンパイルします。
$make
インストールします。
$ sudo make install

設定ファイルを保存します。
$ sudo cp /usr/local/etc/icecast.xml /usr/local/etc/icecast.xml.org

設定ファイルを編集します。
$ sudo vim /usr/local/etc/icecast.xml

ロケーションを設定します。
ここでは Tokyo を指定

ソースパスワードを設定します。これは、外部からのソースを接続するときに使用します。外部ソースとしては、Mixxxとなります。Mixxxではこのパスワードを設定します。ここでは、パスワードとして oimo_passとしています。
リレーパスワードも設定します。ここでは 同じく oimo_passとしています。
最後に、WWWからサーバー管理画面に入るための管理パスワードを設定します。
ここでは、同じく oimo_passとしています。

ホストネームを設定します。
ここでは、設定例として仮にoimochan.comとしています。
ポート番号を設定します。
これは、ソースからとクライアント(リスナー)からサーバーに接続するために
必要となります。ここでは、設定例として 7707としています。

root以外で実行するためと、ログファイルが書き込めないというエラー対策のために、ここではapacheユーザーで実行します。

日本語を通すための設定をします。
最後の行の </icecast>の前に 下記ソースを追加します。
この設定は、Mixxxでも同じように設定する必要があります。

ログファイルを設定します。
$su root
#mkdir /var/log/icecast
#chown apache /var/log/icecast
#exit
再度設定ファイルを編集します。
$ sudo vim /usr/local/etc/icecast.xml
先ほど設定したlogディレクトリを設定します。

これで icecastの設定は終わりになります。

次に Mixxxの設定にはいります。

上部タブから「オプション」→ 「設定」を選択します。


ダイヤログの左のメニューから「ライブ放送」を選択します。
ファイル形式を Icecast2に選択
ホストアドレスを「サーバーのホストネーム」を記載 
 ここでは、例として「www.oimochan.com」
ログイン名は「source」
マウントポイントは任意、クライアント(リスナー)でURLをしてするときに必要になります。ここでは「oimo」
ポート番号 ここでは「7707」 icecastの設定ファイルで指定したポート番号を記載します。
パスワード これもicecastの設定ファイルで設定したソースパスワードを設定します。ここでは表示されていませんが「oimo_pass」となります。
日本語を表示するために、「メタデータにUTF-8エンコーディングを使用のチェックを入れます。

あとは、ストリーム名、ウェブサイトなどを設定します。
設定で来たら、適用ボタンを押して、反映します。

ここまできたら、サーバーのicecastのポートを開放し、icecastを起動します。
$ sudo firewall-cmd --add-port=7707/tcp --zone=public --permanent
変更したファイヤーウォールを反映します。
$ sudo firewall-cmd --reload

icecastを起動します。
$ sudo /usr/local/bin/icecast -c /usr/local/etc/icecast.xml

Mixxxでサーバーに接続します。
Mixxxを起動した状態で、CtrlキーとL(小文字)キーを押します。
問題なければ、接続完了のダイアログが表示されます。OKを押し、放送を始めます。

クライアント(リスナー)側では、下記のように指定することで放送を聞くことができます。
サーバーのURL:ポート番号/マウントポイント(Mixxxにて設定)
これまでの設定例では
 hhtp://www.oimochan.com:7707/oimo
  (実際には存在していません。あくまでも例です)

終了する場合は、
まずは、Mixxxですが、再度 CtrlキーとLキーを押すことでサーバーから切断されます。

サーバーのicecastの停止は、CtrlキーとCキーで終了させます。
サーバーのポートを閉じます。
$ sudo firewall-cmd --remove-port=7707/tcp --zone=public --permanent
$ sudo firewall-cmd --reload

これで サーバーのポートが閉じますので、完全に遮断されます。

おすすめの記事