動かざることバグの如し

近づきたいよ 君の理想に

icecast2+icesでmp3ストリーミング配信してみる(ubuntu server)

目的

mp3垂れ流しで聴きたい

環境・使うアプリケーション

  • Ubuntu Server 14.04
  • Icecast 2.3.3(ストリーミングサーバー)
  • IceS 0.4(Icecastに曲を送り続ける)

IceSの最新版は2.0.2だがライセンス上の問題でmp3を扱えないようなので旧バージョンを使う。

Icecastのインストール

sudo apt-get install icecast2

設定画面出てきてパスワード設定させられるはず(デフォルト:hackme)

あとから設定変更するには/etc/icecast2/icecast.xmlを弄ればよい

再起動

sudo service icecast2 restart

IceS

IceSはapt-getでインストール出来ないためコンパイルする。

依存ライブラリのインストール

sudo apt-get install make g++ libxslt-dev libvorbis-dev libshout3-dev libmp3lame-dev

ダウンロード&インストール

wget http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz  
tar -xvzf ices-0.4.tar.gz  
cd ices-0.4/  
./configure --with-lame=/usr/local/lib  
make  
sudo make install

初期設定

再生したいmp3ファイルを一式配置し、そのディレクトリ上で以下実行

find  -name "*.mp3" | sort >> /var/music/playlist.txt

適当にices.confでも作ってIceSの設定ファイルを作成

<?xml version="1.0"?>
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
  <Playlist>
    <!-- This is the filename used as a playlist when using the builtin
         playlist handler. -->
    <File>/var/music/playlist.txt</File>
    <!-- Set this to 0 if you don't want to randomize your playlist, and to
         1 if you do. -->
    <Randomize>1</Randomize>
    <!-- One of builtin, perl, or python. -->
    <Type>builtin</Type>
         If you use the builtin playlist handler then this is ignored -->
    <Module>ices</Module>
    <!-- Set this to the number of seconds to crossfade between tracks.
         Leave out or set to zero to disable crossfading (the default).
    <Crossfade>5</Crossfade>
    -->
  </Playlist>

  <Execution>
    <!-- Set this to 1 if you want ices to launch in the background as a
         daemon -->
    <Background>0</Background>
    <!-- Set this to 1 if you want to see more verbose output from ices -->
    <Verbose>0</Verbose>
    <!-- This directory specifies where ices should put the logfile, cue file
         on your server. -->
    <BaseDirectory>/tmp</BaseDirectory>
  </Execution>

  <Stream>
    <Server>
      <!-- Hostname or ip of the icecast server you want to connect to -->
      <Hostname>localhost</Hostname>
      <!-- Port of the same -->
      <Port>8000</Port>
      <!-- Encoder password on the icecast server -->
      <Password>hackme</Password>
      <!-- Header protocol to use when communicating with the server.
           Shoutcast servers need "icy", icecast 1.x needs "xaudiocast", and
           icecast 2.x needs "http". -->
      <Protocol>http</Protocol>
    </Server>

    <!-- The name of the mountpoint on the icecast server -->
    <Mountpoint>/ices</Mountpoint>
    <!-- The name of the dumpfile on the server for your stream. DO NOT set
         this unless you know what you're doing.
    <Dumpfile>ices.dump</Dumpfile>
    -->
    <!-- The name of you stream, not the name of the song! -->
    <Name>Default stream</Name>
    <!-- Genre of your stream, be it rock or pop or whatever -->
    <Genre>Default genre</Genre>
    <!-- Longer description of your stream -->
    <Description>Default description</Description>
    <!-- URL to a page describing your stream -->
    <URL>http://localhost/</URL>
    <!-- 0 if you don't want the icecast server to publish your stream on
         the yp server, 1 if you do -->
    <Public>0</Public>

    <!-- Stream bitrate, used to specify bitrate if reencoding, otherwise
         just used for display on YP and on the server. Try to keep it
         accurate -->
    <Bitrate>128</Bitrate>
    <!-- If this is set to 1, and ices is compiled with liblame support,
         ices will reencode the stream on the fly to the stream bitrate. -->
    <Reencode>0</Reencode>
    <!-- Number of channels to reencode to, 1 for mono or 2 for stereo -->
    <!-- Sampe rate to reencode to in Hz. Leave out for LAME's best choice
    <Samplerate>44100</Samplerate>
    -->
    <Channels>2</Channels>
  </Stream>
</ices:Configuration>

実行

ices ices.conf