【24回】Raspberry Piでストリーミングサーバ(icecast2)を構築

セカンドライフという仮想世界をご存知でしょうか?
自由度の高い仮想世界で自由に建物やアイテムが作れ、仮想世界の通貨で売買できそれを現実世界の現金にもできるというものです。

最盛期よりもユーザは減ったものの現在もセカンドライフは健在しています。
自由に建物を設置するためには自分の土地を持つ必要がありますが月額の費用がとても高額です。

そこで、セカンドライフをオープンソースにしたサーバ「OpenSim」で自分だけの仮想世界を作ることもできます。

そんな仮想世界の中で音楽を流すためにストリーミングサーバが必要となります。
今回はこのストリーミングサーバの構築と設定をしたいと思います。
配信するのは自分のサイト(https://www.8yazaki.jp/)で公開しているオリジナル曲です。

以前、OpenSimのグリッドサーバを公開している「Japan Open Grit」でコンサートしたときの映像も紹介しておきます。

仮想世界内ではアバターがピアノに座り、ストリーミングサーバを経由して音を流していました。同時にYouTubeで実際の演奏映像も配信したものです。

icecast2のインストールと設定

インストール

sudo apt-get install icecast2

設定

sudo vi /etc/icecast2/icecast.xml

変更点

<authentication>
    <source-password>hackme</source-password>
    <relay-user>relay</relay-user>
    <relay-password>hackme</relay-password>
    <admin-user>admin</admin-user>
    <admin-password>hackme</admin-password>
</authentication>

source-password:ストリーミングする配信ツールからicecastサーバに接続するためのパスワードです

relay-password:リレーを受けるときのパスワードです

admin-password:Webブラウザからアクセスできる管理画面にログインするためのパスワードです

その他は<hostname>、<port>、<location>、<admin>あたりを必要に応じて変更してください。

サーバの動作確認

ブラウザからラズベリーパイのIPを入力(ホスト名を変更していなければ「raspberrypi.local」でもOK)しポートを8000に指定します
例:http://raspberrypi.local:8000

cecast2のページ

Ezstreamのインストールと設定

icecast2とicesの組み合わせが多いと思います(昔私もこの組み合わせでした)が、設定が面倒だったのでicecastの公式サイト(http://icecast.org)でicesと同じく公開されている「Ezstream」を使ってみます

インストール

sudo apt-get install ezstream

設定ファイルの作成

設定ファイルのサンプルはEzstreamのサイト(http://icecast.org/ezstream/)からダウンロードできるソースデータの中にあります。

zstreamのソースがダウンロードできるところ

ダウンロードした圧縮ファイルを解凍すると「examples」というディレクトリがあります。今回はその中の「ezstream_reencode_mp3.xml」を使用します。

サンプル設定ファイルの内容

<ezstream>
    <url>http://localhost:8000/stream</url>
    <sourcepassword>hackme</sourcepassword>
    
    <format>MP3</format>
    <filename>playlist.pl</filename>
    
    <playlist_program>1</playlist_program>
    
    <svrinfoname>My Stream</svrinfoname>
    <svrinfourl>http://www.oddsock.org</svrinfourl>
    <svrinfogenre>RockNRoll</svrinfogenre>
    <svrinfodescription>This is a stream description</svrinfodescription>
    <svrinfobitrate>128</svrinfobitrate>
    <svrinfochannels>2</svrinfochannels>
    <svrinfosamplerate>44100</svrinfosamplerate>
   
    <svrinfopublic>0</svrinfopublic>
    <reencode>
        
        <enable>1</enable>
        
        <encdec>
            
            <format>FLAC</format>
            <match>.flac</match>
            <decode>flac -s -d --force-raw-format --sign=signed --endian=little -o - @T@</decode>
            
        </encdec>
        <encdec>
            
            <format>MP3</format>
            <match>.mp3</match>
            
            <decode>madplay -b 16 -R 44100 -S -o raw:- @T@</decode>
            <encode>lame --preset cbr 128 -r -s 44.1 --bitwidth 16 - -</encode>
        </encdec>
        <encdec>
            
            <format>VORBIS</format>
            <match>.ogg</match>
            <decode>oggdec -R -b 16 -e 0 -s 1 -o - @T@</decode>
            <encode>oggenc -r -B 16 -C 2 -R 44100 --raw-endianness 0 -q 1.5 -t @M@ -</encode>
        </encdec>
    </reencode>
</ezstream>

変更点

<url>http://localhost:8000/stream</url>
この「stream」の部分を好みの名称に変更

<sourcepassword>hackme</sourcepassword>
icecast2で設定したパスワードに変更

<filename>playlist.pl</filename>
「/home/pi/Music/playlist.txt」に変更
ファイル名やパスは環境に合わせてください。このプレイリストファイルの作成方法は後述します

<stream_once>0</stream_onece>
この1行を追加
0にするとプレイリストをループ再生してくれます

<svrinfoname>My stream</svrinfoname>
<svrinfourl>http://www.oddsock.org</svrinfourl>
<svrinfogenre>RockNRoll</svrinfogenre>
<svrinfodescription>This is a stream description</svrinfodescription>
<svrinfobitrate>128</svrinfobitrate>
<svrinfochannels>2</svrinfochannels>
<svrinfosamplerate>44100</svrinfosamplerate>
あたりを必要に応じて変更
私は・・・
<svrinfoname>Free BGM</svrinfoname>
<svrinfourl>https://www.8yazaki.jp/</svrinfourl>
<svrinfogenre>feeling</svrinfogenre>
<svrinfodescription>Original Musics</svrinfodescription>
<svrinfobitrate>128</svrinfobitrate>
<svrinfochannels>2</svrinfochannels>
<svrinfosamplerate>44100</svrinfosamplerate>
としました。

プレイリストファイルの作成

プレイリストファイルはパスを含めたファイル名を1行ずつ記載していけばいいだけなのですが特定のディレクトリ内のmp3ファイルから半自動的に作成する方法を取りたいと思います

vi ~/update_playlist.sh
#!/bin/bash

rm /home/pi/Music/playlist.txt
find /home/pi/Music/*.mp3 >> /home/pi/Music/playlist.txt

piユーザのホームディレクトリにシェルスクリプトファイルを作成し、以下の手順でプレイリストを生成しています
1.古いプレイリストファイルを削除
2.piユーザのMusicディレクトリにあるmp3ファイルをテキストファイルに書き出し

こうすることでmp3ファイルをMusicディレクトリに追加後このバッシュファイルを実行するだけでプレイリストを最新にしてくれます。

ezstreamの起動

ezstream -c ./ezstream_mp3.xml

起動ができたらicecastのページを開いて配信されていることを確認します


コメント

タイトルとURLをコピーしました