« SigUCCS 2005 Fall Conference | トップページ | 山手線の事故のニュースを聞いて »

2005年11月 7日 (月)

FreeBSDでライブ音声MP3ストリーミング

2005年11月時点で、FreeBSD (僕の場合は 4.11-STABLE)でライブ音声MP3ストリーミング(マイク端子や音声入力端子の内容をストリーミングで流す)を行なう方法を、いろいろ調べた。日本語で書かれた説明がなかったり、日本語でも古いバージョンについて記されたものが多かったりして、調査はかなり面倒だったが、結果として非常に簡単に実現できることがわかったので、ここに備忘録を兼ねてメモを残します。(なお、海外出張の直前に「ライブ音声MP3ストリーミング」を行なった理由は、御賢察ください。)

[1] まず、boot時のBIOS設定で、音声デバイス(Audio)を有効にします。あるいは、audio カードを取り付けます。

[2] kernelで音声デバイスを有効にします。GENERICカーネルを使っている人はほとんどいないでしょうが、

# cd /usr/src/sys/i386/conf/
# make LINT

としてから、LINTの中の音声関係の設定を kernel configuration に取り込みます。ちょっと古めのマザーボード(810,815,845)の音声デバイスならば、

------------------------------
device pcm
------------------------------

の1行だけ有効にしておけばいいでしょう。それが終ったら

# cd /usr/src
# make -j4 KERNCONF=YOURKERNNAME buildkernel
# make KERNCONF=YOURKERNNAME installkernel
# sync;sync;reboot

で再起動します。(上記 YOURKERNELNAMEは、各自のカーネル名にしてください。)

[3] 再起動したら、

# dmesg |grep pcm

としてください。

pcm0: <Intel ICH2 (82801BA)> port 0xe000-0xe03f,0xdc00-0xdcff irq 11 at device 31.5 on pci0
pcm0: <Avance Logic ALC200 AC97 Codec>

のようにデバイスが認識されていればOkです。

/usr/sbin/mixer

でミキサーの設定を確認します。

/usr/sbin/mixer rec 50

などして、レベル設定をします。その後、念のため、PCのマイク入力/ライン入力などにマイクやラジオチューナーなどを付けて、cat /dev/dsp などして、音の変化と画面の変化が対応することを確認します。

[4] /usr/ports を最新のものにします。cvsup などを使って下さい。

[5] icecast2 を導入します。

% su
# cd /usr/ports/audio/icecast2
# make install

icecast2 は、Apach と同じようなネットワーク用のサーバーです。これがあれば、既に録音済みの MP3ファイルなどをストリーミングで流すこともできます。

[5-1] インストールが終ったら設定ファイル /usr/local/etc/icecast.xml を書き直します。
[5-1-1] hackme と書かれている文字列を探して、それを自分用のパスワードにします。ただし、暗号化されないで保存されるので、あまり秘密度が高いものはここに使わないようにして下さい。
[5-1-2] 139行目あたりに
<logdir>
というところがあります。最初はloglevelを4にしておきます。動作確認が終ったら最後にここを1か2に戻しましょう。
[5-1-3] 162行目あたり(ファイルの下の方)に
<changeowner>
という部分がコメントアウトされているので、コメントアウトを削除して、適切なユーザ名に入れ換えます。damonはrootで動くと危険なので、一般ユーザモードで動かします。
[5-2] /etc/rc.conf に icecast_enable="YES" を追加します。

echo icecast_enable=\"YES\" >> /etc/rc.conf

[5-3] 起動テストをしてみます。

# /usr/local/etc/rc.d/icecast2.sh start

です。なお、終了させるときは

# /usr/local/etc/rc.d/icecast2.sh stop

です。

[5-4] web browser で http://サーバー名:8000/ を開きます。ユーザ名は admin で、パスワードは先ほど設定したものです。そして、動作していることを確認します。

[6] darkice を導入します。darkiceは音声入力デバイスから音声を受けとって、mp3形式(ogg vorbisも可能)に変換して、icecast2に転送します。

% su
# cd /usr/ports/audio/darkice
# make install

[6-1] 設定ファイル /usr/local/etc/darkice.cfg を書き直します。
[6-1-1] まず [general] と [input] はそのままです。
[6-1-2] [icecast-0] の部分はコメントアウトか削除して下さい。
[6-1-3] [icecast2-0] の下の部分は修正必要です。僕の場合はこんな感じです。

------------------------------
bitrateMode = cbr # constant bit rate
format = mp3 # format of the stream: ogg vorbis | mp3
bitrate = 96 # bitrate of the stream sent to the server
server = (サーバー名) # host name of the server
port = 8000 # port of the IceCast2 server, usually 8000
password = (パスワード) # source password to the IceCast2 server
mountPoint = hogehoge.mp3 # mount point of this stream on the IceCast2 server
name = DarkIce trial # name of the stream
description = Trial # description of the stream
url = (あなたのweb URL) # URL related to the stream
genre = onsei # genre of the stream
public = no # advertise this stream?
------------------------------
上記のパスワードは、icecast2と同じものにします。

[6-1-4] [shoutcast-0] の部分はコメントアウトか削除して下さい。

[6-2] 起動ファイル /usr/local/etc/rc.d/darkice.sh を自分で作ります。

------------------------------
#!/bin/sh

/usr/sbin/mixer rec 50

(/bin/sleep 30; /usr/local/bin/darkice -c /usr/local/etc/darkice.cfg ) &
------------------------------

こんな感じでいいです。↑

[6-3] /usr/local/etc/rc.d/darkice.sh を使って darkice を起動します。

[7] 動作確認します。

[7-1] web browser で http://サーバー名:8000/ を開き、 Mount Point を見ます。

[7-2] xmms あるいは RealPlayer(Linux, Mac, Windows), Windows Media Player などの mp3 プレイヤーで http://サーバー名:8000/hogehoge.mp3 を開きます。無事に音が出れば Ok です。

[7-3] 動作しているときもそうでないときも、ログファイルを確認します。 /var/log/icecast/ の下にファイルがあります。

[7-4] もし、クライアントが Linux/FreeBSD などであれば、

%% ssh -L 8000:サーバ名:8000 サーバ名

でログインして、ログインを保持したままクライアントから xmms などで http://localhost:8000/hogehoge.mp3 を開きます。こうすればストリーミングの内容も暗号化されます。

[8] うまく動作していることが確認できたら、サーバーを reboot します。rebootしても自動的に icecast2, darkice が動作することを確認します。

[9] あとは、あちこちの web ページを見て、他の設定について探して下さい。そして、いろいろな技?を、この blog にコメントして下さい。

|

« SigUCCS 2005 Fall Conference | トップページ | 山手線の事故のニュースを聞いて »

コメント

そういえばFreeBSD6.0も出ましたね。
http://www.freebsd.org/releases/6.0R/announce.html
#試してみようっと。

投稿: だきわ | 2005年11月 7日 (月) 17:03

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/140645/6939751

この記事へのトラックバック一覧です: FreeBSDでライブ音声MP3ストリーミング:

« SigUCCS 2005 Fall Conference | トップページ | 山手線の事故のニュースを聞いて »