#norelated
* icecast2によるストリーミングサーバの構築 [#w9694a04]
- 秋月のWebラジオキット(http://akizukidenshi.com/catalog/g/gK-01579/)を組み立てて、世の中のストリーミングサーバが聴けるようになったが、ローカルのmp3も聴きたいと思ったので、icecast2を使ってストリーミングサーバを構築してみた

* icecastのインストール [#q83534e8]
- 予備知識:icecast(放送局のイメージ?)はices(番組のイメージ?)と組み合わせる
- aptを使うのが最も楽
 # apt-get intall icecast2 

* icecastの設定 [#q92e9262]
 # vi /etc/default/icecast2
-編集する箇所
 ENABLE=true

 # vi /etc/icecast2/icecast.xml
-編集する箇所
 <source-password>hackme</source-password>
 <relay-password>hackme</relay-password>
 略
 <admin-password>hackme</admin-password>
 略
 <listen-socket>
  <port>8000</port>
  <bind-address>127.0.0.1</bind-address>
 </listen-socket>
 略
 <hostname>localhost</hostname>

--ここはどうしたものか・・
--プロセスをみるとicecast2/icecastで動作しているのでとりあえずは放置
 <changeowner>
  <user>nobody</user>
  <group>nogroup</group>
 </changeowner>

* icecast起動 [#l0aad533]
手動の場合、
 /usr/bin/icecast2 -b -c /etc/icecast2/icecast.xml
だが、スクリプトがあるはずなので
 /etc/init.d/icecast2 start
ブラウザで
 http://hogehoge:8000
で確認してみる。あがらない場合は、icecast.xmlのhostnameあたりが怪しい。

* icesのインストール [#r58faf98]
これもaptでいれるのが楽。だが・・・
 # apt-get install ices2
どうやら、現在aptで入るicesはices2で、mp3は不可のよう。
なのでソースからコンパイルする。
その前に、icecast2を入れるだけでices2も入ってしまうので念のため
 # apt-get purge ices2
で消しておく。

まずはライブラリ類をaptで入れる。libcを入れる前に、まずコンパイルできないか確認しとおいた方が良いかも。
 # apt-get install libc6 libc6-dev
 # apt-get install gpp 
 # apt-get install g++
 # apt-get install file
 # apt-get install libshout3 libshout3-dev

icesのソース取得&コンパイル
 % wget http://downloads.xiph.org/releases/ices/ices-0.4.tar.gz
 % tar xzvf ices-0.4.tar.gz
 % cd ices-0.4
 % ./configure
したら
  XML     : yes
  Python  : no
  Perl    : no
  LAME    : no
  Vorbis  : no
  MP4     : no
  FLAC    : no
となったので、なんとなく
 # apt-get install lame liblame-dev
(要www.debian-multimedia.orgリポジトリ)
 % ./configure --with-lame
とすると
  XML     : yes
  Python  : no
  Perl    : no
  LAME    : yes
  Vorbis  : yes
  MP4     : no
  FLAC    : no
なので
 % make
 # make install
configure/makeに失敗する場合、エラーをみてaptで不足しているライブラリ類を入れる。
特にmakeしたことが無いシステムだと上記のライブラリでは不足な予感。

* icesの設定 [#p7eb9290]
設定ファイルのテンプレートは
 /usr/share/doc/ices2/examples/ices-playlist.xml
か(obsolute?)
 /usr/local/etc/ices.conf.dist
にあるはず(prefxi指定してなければ)。
 /usr/share/doc/ices2/examples/ices-playlist.xml(ices2)
にあるはず(prefix)指定してなければ)。

 # cp /usr/local/etc/ices.conf.dist /usr/local/etc/ices.conf

 # vi /usr/local/etc/ices.conf
-編集する箇所(抜粋) BB-SHOUTに合わせてみた例。
 <Playlist>
   <File>/hoge/huga/playlist.txt</File>
 </Playlist>
 
 <Background>1</Background>
 
 <Verbose>1</Verbose>
  
  <Stream>
    <Server>
      <Password>icecast側で設定したパスワード</Password>
    </Server>
    <Mountpoint>/ices2</Mountpoint>
    <Name>MP3 player</Name>
    <Bitrate>192</Bitrate>
    <Reencode>1</Reencode>
    <Genre>Default genre</Genre>
  </Stream>

 # vi /hoge/huga/playlist.txt
-たとえば
 /hoge/huga/1.mp3
 /hoge/huga/2.mp3

-どっかのディレクトリにmp3をまとめて置いていてリストを楽に作りたい場合は、
 # vi make_list.sh
とか作って、
 #!/bin/sh
 ls /hoge/huga/mp3s/*mp3   > /hoge/huga/playlist.txt
と記述し、実行権限を与えて、実行
 # chmod 755 make_list.sh
 # ./make_list.sh

* ices起動 [#pbd71884]
-rootで起動すると怒られるのでユーザを作成する(いや必要ないかも。現バージョンではrootであがる?)
 groupadd ice
 useradd -g ice -d /var/empty/ice -s /sbin/ice ice
 passwd ice
でもicecast2のパッケージインストール時に作成されたicecast2/icecastでいいかも。

-ユーザiceになって
 ices -B -c  /usr/local/etc/ices.conf
-Bオプションはバックグラウンドの意味
-あがらない場合は、/tmp/ices.logをみつつ、hostname,パスワードの設定を再確認。
firewallにも要注意。


-とはいえいちいち手で起動するのはメンドイ
-/etc/rc3.d/をみるとicecastは20番目
-無難に98とか99に追加しようと思ったが、skeltonを元に新しく作るのもやっぱ面倒
-- debianでのrc.local http://vimrc.hp.infoseek.co.jp/diary/cat_debian.html
-- init.d スクリプトを書こう http://surf.ap.seikei.ac.jp/~nakano/linux/init.d.html
-というわけでicecast2内に書いてしまった
- /etc/init.d/icecast2
-- 適当なところに定義を書く
 ICES="/usr/local/bin/ices"
 
 start_ices() {
 
  $ICES -B -c /usr/local/etc/ices_sleep.conf &
 
   return 0
 }
 
 stop_ices() {
        ps aux | grep ices
        ices_num=`ps aux | grep ices | wc -l`
        if [ $ices_num -ge 2 ];then
                killall -KILL ices
        fi
   return 0
 }


-- あとはicecast2の起動、停止、再起動部分に追加
   start)
 略
	start_ices
	;;
   stop)
       stop_ices
 略
	
 略
   restart)
       stop_ices
 略
       start_ices
	;;
 略

- 確認
 /etc/init.d/icecast2/start|stop|restart
とかしてみる
あとはブラウザ(ポート8000)でみて再生してみる

* 音声レベル平均化のために [#m618163f]
-もうどれがどれだが整理が・
- mp3->WAV->平均化->mp3の流れ、かな
- [[http://www.linux.or.jp/JF/JFdocs/MP3-CD-Burning/prepare.html]]
** mp3->WAV [#nbd2edc1]
 mpg123 -w athena.wav athena.mp3

** sox [#i6218da9]
-なんでmpg123じゃダメなんだっけ・
*** インスコ [#mc2b166a]
-ソース
 ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/
-パッケージ
 apt-get install sox

*** 実行 [#af9a675a]
 sox moto.wav -c 2 -r 44100 out.wav
 sox -t wav -r 44100 -s -w -c 2 track.wav track.raw

** normalize [#c56f6687]
-音声レベルの平均化
*** インスコ [#i9fa0fc8]
-ソースの場合
 http://linuxbandwagon.com/wavnorm/
-パッケージなら先にsources.listに追加
 deb http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted
 deb-src http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted
 apt-get update
 apt-get -s upgrade
 apt-get -u upgrade
-mp3再生SW「mpg321」とともにいれる
 apt-get install mpg321
 apt-get install  normalize-audio

*** 実行 [#oec8a918]
-そのままだとたぶん実行できないので修正
[[http://d.hatena.ne.jp/gmaxlab/20070428/1177775944]]

 normalize-mp3 --bitrate 128 german.mp3 english.mp3

** lame [#d464aef9]
- WAV->mp31変換
*** インスコ [#q6313675]
- /etc/apt/sources.listに
 deb ftp://ftp.nerim.net/debian-marillat/ testing main
追加
 #apt-get update
 #apt-get install lame

*** 実行 [#b2ea23a7]
 lame -f -b 128 out.wav german_n.mp3

* 参考 [#sba59ff9]
- [[http://taka.no32.tk/wiki/?icecast]]
- [[http://209.85.175.104/search?q=cache:zsG1ZWhGiOoJ:funaori.com/linux/index.php%3FMP3%25A5%25B9%25A5%25C8%25A5%25EA%25A1%25BC%25A5%25E0%25A5%25B5%25A1%25BC%25A5%25D0+ices+mp3&hl=ja&ct=clnk&cd=4&gl=jp&lr=lang_ja&client=firefox]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS