**超小ネタ ... ネットワークから(しか)使用できないMP3プレーヤ [#yfff556d]
 ~
 |&ref(jukebox.png);|
 |CENTER:曲を登録中&br;SIZE(9){(ってKonquerorでファイルをコピーしてるだけだけど…)}|
 これは、
 -DEC Digital HiNote Ultra II
 --CPU: Pentium 100MHz
 --Mem: 40MB
 --HDD: 1GB
 
 での実行例です。こんなスペックでも十分実用になっています。~
 インストール後のシステムサイズは40MBをちょっと切るくらいで、
 それを差し引いたHDDの空き容量にMP3ファイルを格納できます。
 1GBのHDDだと大体300曲くらい入るようです。~
 現役引退マシンの活用方法としていかがですか?
 **概要 [#w389f639]
 -OpenBSD 3.7をベースに使用
 -運用に無関係な部分を削除、ベースシステムをスリム化
 -MP3の演奏には、portsのmpg123を使用
 -OS起動時に演奏スクリプトが自動起動。所定のディレクトリをスキャンし、エンドレスでMP3ファイルを再生する。
 -演奏プロセスは、専用のユーザアカウントから一般ユーザとして実行される。
 -演奏プロセスは、高いプロセス優先度で実行される。
 -OpenBSD 3.7をベースに作成しました。
 -運用に無関係な部分を削除、ベースシステムをスリム化しました。
 -MP3の演奏には、portsのmpg123を使用しています。
 -OS起動時に演奏スクリプトが自動起動。所定のディレクトリをスキャンし、エンドレスでMP3ファイルを再生します。
 -MP3ファイルはローカルに格納したものの他、ネットワーク経由で取得しながら再生を行うこともできます。
 -演奏プロセスは、rootでない専用のユーザアカウントから一般ユーザとして実行されますので、安全です。
 -演奏プロセスは、高いプロセス優先度で実行されますので、他のタスクによって中断されにくくなっています。
 **インストール [#ke82c8ed]
 ネットワークインストールができるようになりました。
 インストールの手順は、通常のOpenBSDのインストール手順とほとんど一緒です。
 インストールの手順は、通常のOpenBSDのインストール手順とほぼ同じで、
 現在、kaw.ath.cxからHTTPによるネットワークインストールが可能です。
 +インストール用のブートメディアを作成し、そのメディアで起動。
 --''通常のOpenBSD 3.7の配布物に含まれているもの''からFDやCD-ROMなどを作成。
 +通常の手順に従ってインストール。ただし、手順の一部は以下の内容で行う;
 +通常の手順に従ってインストール。ただし、手順の一部は以下の内容を指定して下さい;
 --パッケージの取得方法 ... ''http''
 --サーバ名 ... ''kaw.ath.cx''
 --サーバ上のパス ... [[''dl/pub/OpenBSD/jukebox''>http://kaw.ath.cx/dl/pub/OpenBSD/jukebox/]]
 --インストールするパッケージ ... メニューに表れたbsd, base37.tgz, site37.tgz を''全て指定''(''all''と入力)する。
 --タイムゾーン ... 必ず ''Japan'' を指定(それ以外は削除されているため)。
 --インストールの最後で''MP3 Playerのパスワード''の設定を要求されるので、入力する。
 +インストール後、リブートして再立ち上げする。[[Wizard of OS>http://www.openbsd.org/lyrics.html#37]] が聞こえてくればOK。
 **使用方法 [#v86766c0]
 演奏コンテンツをいじるには、以下のアカウントを使用する。
 -ユーザ名 ... ''mp3play''
 -パスワード ... インストール時に''MP3 Playerのパスワード''で入力したもの。
 システムを起動すると、ジュークボックスは自動的に再生状態になります。
 
 このアカウントを用いて、ftp, sftp, scpなどでアクセスする。
 演奏したい曲を登録するには、インストール時にパスワードを登録した
 ''mp3play''ユーザで行います。
 
 FTPやscpなどを用いて以下に説明するディレクトリ下にコンテンツや
 URLリストをを転送します。
 また、sshでログインし、シェルによる操作を行うこともできます。
 ***曲の登録 [#s0a63dd6]
 ユーザmp3playのホームディレクトリは以下のようになっている。
 ユーザmp3playのホームディレクトリの下は次の図のようになっています。
  
  /home/
    |--mp3play/
        |--jukebox/
            |--attic/     コンテンツの一時退避
            |--attic/     データの一時退避や作業用
            |--ctrl/      演奏の制御のためのファイルを格納
            |--playlist/  演奏するコンテンツを格納
            |--oneshot/   一回だけ演奏するコンテンツを格納
            |--oneshot_finished/
            |             oneshotで演奏済みのコンテンツを格納
            |--spool0     繰り返し演奏するコンテンツ格納用
            |--spool1     spool0と同じ
            |--playlist-> spool0あるいはspoo1へのシンボリックリンク
            |            (現在演奏している方)
            |--play.sh    演奏の制御スクリプト
 演奏するファイルは、MP3形式で、ファイル名が ''.mp3''で終わるもの。
 これを /home/mp3play/jukebox/playlist 以下にコピーすると自動的に
 演奏される。
 playlist以下にサブディレクトリがあった場合、その下も再帰的に
 辿って演奏される。
  
 演奏するコンテンツには以下の2種類があります;
 :MP3ファイル|MP3形式の音声ファイルそのもの。ファイル名が ''.mp3''で終わる。
 :URLファイル|MP3ファイルのURLが列挙されたファイル。ファイル名は ''.url''で終わる。
 
 聞きたくなくなった曲は、単純に削除すればよい。
 ディレクトリatticに一時的に退避しておくこともできる。
 このようなファイルを spool0, spool1あるいはoneshot以下にコピーすると
 そのファイルが再生されます。URLファイルの場合は、FTPあるいはHTTPで
 ネットワーク経由でファイルの取得を行いながら再生を行います。
 
 ftpでアクセスした場合は、chrootされるので、ホームディレクトリが
 トップディレクトリのように見え、その上のディレクトリ階層には移動
 できない。
 **Tips [#f6fe01d7]
 :再生を停止したい|MP3ファイルを削除するかあるいは別のディレクトリに退避する。~
 ''/home/mp3play/jukebox/ctrl/pause''というファイル(空ファイルでよい)を作ると、そのファイルが存在している間、再生が一時的に停止する。
 :動作をカスタマイズしたい|''/home/mp3play/jukebox/ctrl/mpg123opts''というファイルの内容がMP3プレーヤ ''mpg123'' の実行時にコマンドラインオプションとして渡されるので、ここでカスタマイズ。
 :スクリプトを停止したい|''/home/mp3play/jukebox/ctrl/exit''という名前のファイルを作成する。
 :音が途切れるんだけど…|冒頭にあげた動作環境ではごくたまに音声が瞬断する現象が見られた。カーネルをGENERICから動作ハードウェアに合わせたものにconfigしなおして作成したカーネルでは瞬断はなくなった。~
 (インストール内容には、コンパイラもカーネルソースもないため、カーネルの作成は別のシステムで行うなどの必要あり)
 playlist以下にサブディレクトリがあってもOKです。その場合はサブディレクトリを再帰的にたどって再生されます。
 
 なお、MP3プレーヤはプロセス優先度を-15にreniceして実行しているため、ほぼ常時
 最優先で実行されるようになっている(ただし、演奏に負荷が掛かっている場合は、MP3ファイルの転送速度が低下する場合がある)。
 **現行バージョンでの制限 [#d7f01537]
 spool0あるいは、spool1にコンテンツを置いた場合は、それらは繰り返して
 演奏されます。
 最初、spool0に置いてあるコンテンツを順に演奏し、終わったものからspool1
 に移動します。spool0にある全部を演奏し終わると、今度は逆にspool1からspool0
 にファイルを移動しつつ演奏します。以下それを無限に繰り返します。
 ファイルの移動にあたってはディレクトリ構造も保存されます。
 
 oneshotは、文字どおり一回だけ演奏したいファイルを格納しておきます。
 演奏が終わったファイルはoneshot_finishedに退避されます。
 
 再生は、繰り返し演奏より一回だけの演奏の方が優先されます。
 よって、繰り返し演奏を行っている最中にoneshotに曲を登録すると、
 それらを割り込んで演奏することができます。
 
 **再生の制御 [#f6fe01d7]
 動作を制御したい場合はctrlディレクトリ以下にファイルを作成します。
 
 以下のファイルはファイルが存在するかどうかで制御を
 行います。ファイルの内容は見ないので、空ファイルでOKです。
 :ctrl/rescan|コンテンツファイルを再スキャンします。FTPなどでファイルを登録した場合は、現在の曲が一巡しないと登録したファイルが再生されませんが、rescanを行うと、次曲以降の再生で反映されます。
 :ctrl/clean|コンテンツディレクトリ(spool0, spool1, oneshot, oneshot_finished)内の非コンテンツファイルや空のディレクトリを消去します。
 :ctrl/pause|このファイルが存在している間、演奏を停止します。
 :ctrl/exit|現在の曲演奏の終了後、演奏スクリプトを終了します(OSは停止しません)。
 :ctrl/restart|現在の曲演奏の終了後、演奏スクリプトを再起動します(スクリプトのデバッグ以外には使用しないでしょうが…)。
 :ctrl/reboot|現在の曲演奏の終了後、OSをリブートします。
 :ctrl/halt|現在の曲演奏の終了後、OSを停止します。ハードウェアが対応していれば、コンピュータの電源も切断されます。
 
 以下のファイルはスクリプトの起動および終了時の処理を記述します。
 スクリプト内で ''.'' コマンドを使用して読み込まれます。
 :ctrl/init|演奏スクリプト開始時にユーザが行う処理を記述します。音量の設定、ネットワーク取得時のプロキシの指定などです。
 :ctrl/finish|演奏スクリプト終了時にユーザが行う処理を記述します。
 :ctrl/mpg123opts|MP3再生ソフト mpg123 起動時に渡すコマンドラインオプションを記述します。
 
 以下のファイルはスクリプト実行時に自動的に作成され、ユーザがいじることはできません。
 :ctrl/reverse|このファイルが存在するとき、再生方向がspool1 -> spool0であることを表します。
 :ctrl/playing|再生スクリプトが実行中に作成されるディレクトリです。スクリプトが多重に起動することを防止しています。
 
 **Tips [#o33c03df]
 :音が途切れるんだけど…|冒頭にあげた動作環境ではごくたまに音声が瞬断する現象が見られました。カーネルをGENERICから動作ハードウェアに合わせたものにconfigしなおして作成したカーネルでは瞬断はなくなりました。~
 (インストール内容には、コンパイラもカーネルソースもないため、カーネルの作成は別のシステムで行う必要があります)。
 
 **現行バージョンでの制限 [#k9450dcd]
 -mpg123に渡すオプションは、プレイリストの先頭でのみ読み込まれる。
 -曲再生の中断は今のところできない、すべて挙動は曲の変わり目で行われる。
 **TODO [#g7b50b4f]
 -前項の制限を解消する。
 -制御スクリプトの多機能化
 --rescan ... プレイするファイルの再スキャン
 --shutdown ... システムの停止
 --repeatでない演奏モード
 --...etc
 -メールインターフェースって可能?
 -画面に何か表示させる?
 --今んところ、/usr/games/grdc が置いてあるだけ。
 ----
 [[FrontPage]]
Top Index Search Recent Backups  Help  RSS