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 にコメントして下さい。
| 固定リンク
この記事へのコメントは終了しました。
コメント
そういえばFreeBSD6.0も出ましたね。
http://www.freebsd.org/releases/6.0R/announce.html
#試してみようっと。
投稿: だきわ | 2005年11月 7日 (月) 17:03