小ネタ ... ネットワークから(しか)使用できないMP3プレーヤ†
|
曲を登録中 (ってKonquerorでファイルをコピーしてるだけだけど…) |
これは、
- DEC Digital HiNote Ultra II
- CPU: Pentium 100MHz
- Mem: 40MB
- HDD: 1GB
での実行例です。こんなスペックでも十分実用になっています。
インストール後のシステムサイズは40MBをちょっと切るくらいで、
それを差し引いたHDDの空き容量にMP3ファイルを格納できます。
1GBのHDDだと大体300曲くらい入るようです。
現役引退マシンの活用方法としていかがですか?
- OpenBSD 3.7をベースに使用
- 運用に無関係な部分を削除、ベースシステムをスリム化
- MP3の演奏には、portsのmpg123を使用
- OS起動時に演奏スクリプトが自動起動。所定のディレクトリをスキャンし、エンドレスでMP3ファイルを再生する。
- 演奏プロセスは、専用のユーザアカウントから一般ユーザとして実行される。
- 演奏プロセスは、高いプロセス優先度で実行される。
インストール†
ネットワークインストールができるようになりました。
インストールの手順は、通常のOpenBSDのインストール手順とほとんど一緒です。
- インストール用のブートメディアを作成し、そのメディアで起動。
- 通常のOpenBSD 3.7の配布物に含まれているものからFDやCD-ROMなどを作成。
- 通常の手順に従ってインストール。ただし、手順の一部は以下の内容で行う;
- パッケージの取得方法 ... http
- サーバ名 ... kaw.ath.cx
- サーバ上のパス ... dl/pub/OpenBSD/jukebox
- インストールするパッケージ ... メニューに表れたbsd, base37.tgz, site37.tgz を全て指定(allと入力)する。
- タイムゾーン ... 必ず Japan を指定(それ以外は削除されているため)。
- インストールの最後でMP3 Playerのパスワードの設定を要求されるので、入力する。
- インストール後、リブートして再立ち上げする。Wizard of OS が聞こえてくればOK。
使用方法†
演奏コンテンツをいじるには、以下のアカウントを使用する。
- ユーザ名 ... mp3play
- パスワード ... インストール時にMP3 Playerのパスワードで入力したもの。
このアカウントを用いて、ftp, sftp, scpなどでアクセスする。
曲の登録†
ユーザmp3playのホームディレクトリは以下のようになっている。
/home/
|--mp3play/
|--jukebox/
|--attic/ コンテンツの一時退避
|--ctrl/ 演奏の制御のためのファイルを格納
|--playlist/ 演奏するコンテンツを格納
|--play.sh 演奏の制御スクリプト
演奏するファイルは、MP3形式で、ファイル名が .mp3で終わるもの。
これを /home/mp3play/jukebox/playlist 以下にコピーすると自動的に
演奏される。
playlist以下にサブディレクトリがあった場合、その下も再帰的に
辿って演奏される。
聞きたくなくなった曲は、単純に削除すればよい。
ディレクトリatticに一時的に退避しておくこともできる。
ftpでアクセスした場合は、chrootされるので、ホームディレクトリが
トップディレクトリのように見え、その上のディレクトリ階層には移動
できない。
Tips†
- 再生を停止したい
- MP3ファイルを削除するかあるいは別のディレクトリに退避する。
/home/mp3play/jukebox/ctrl/pauseというファイル(空ファイルでよい)を作ると、そのファイルが存在している間、再生が一時的に停止する。
- 動作をカスタマイズしたい
- /home/mp3play/jukebox/ctrl/mpg123optsというファイルの内容がMP3プレーヤ mpg123 の実行時にコマンドラインオプションとして渡されるので、ここでカスタマイズ。
- スクリプトを停止したい
- /home/mp3play/jukebox/ctrl/exitという名前のファイルを作成する。
- 音が途切れるんだけど…
- 冒頭にあげた動作環境ではごくたまに音声が瞬断する現象が見られた。カーネルをGENERICから動作ハードウェアに合わせたものにconfigしなおして作成したカーネルでは瞬断はなくなった。
(インストール内容には、コンパイラもカーネルソースもないため、カーネルの作成は別のシステムで行うなどの必要あり)
なお、MP3プレーヤはプロセス優先度を-15にreniceして実行しているため、ほぼ常時
最優先で実行されるようになっている(ただし、演奏に負荷が掛かっている場合は、MP3ファイルの転送速度が低下する場合がある)。
現行バージョンでの制限†
- mpg123に渡すオプションは、プレイリストの先頭でのみ読み込まれる。
TODO†
- 前項の制限を解消する。
- 制御スクリプトの多機能化
- rescan ... プレイするファイルの再スキャン
- shutdown ... システムの停止
- repeatでない演奏モード
- ...etc
- メールインターフェースって可能?
- 画面に何か表示させる?
- 今んところ、/usr/games/grdc が置いてあるだけ。
FrontPage