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
これで サーバーのポートが閉じますので、完全に遮断されます。