最近、開発用のサーバとしてマシンを調達して、Linux(CentOS 5.1)を入れてみました。
そのついでにこのマシンをジュークボックスにして自動的に音楽を再生し続けさせるようにしてみます。
具体的な方法は、以下の通り。
前提条件
前提条件として、マシンにサウンドデバイスが搭載されていること(・・あたりまえですが。。)。
また、音声出力端子とアンプ(スピーカ一体型を含む)を接続しておきます。一般的にはステレオミニプラグ<=>RCAケーブルとかPC用のスピーカなら付属のケーブルで接続出来ると思います。
そして、サウンドデバイスがLinuxから認識されていなければなりません。自分の場合は何もしなくても認識された状態だったので良かったのですが、認識されない場合は ALSA のページなどで対応状況の調査をしたりドライバのインストールをしたりする必要があります。
データの用意
まず、再生データを大量に用意します。
私の場合はNASにCDから今までコツコツとMP3にエンコードしたデータをためておいたのでそれをコピーして使いました。
これから作る人は、iTunesとかでも出来ますが音質はあまり期待できないので Exact Audio Copy や LAME 等を使って変換していくのが良いかと思います。また、タグはUTF-8にしておいた方が何かと都合が良いです(Super Tag Editorなどで)。
プレイリストの作成
データを作成しLinuxマシンにコピーしたら、次にプレイリストを作成します。
プレイリストの作成には FAPG というツールを使います。このツールのビルドには、どうやら uriparser が必要らしいのでダウンロードしておきます。
http://www.andreas-mueller.com/mrepo/centos5-i386/RPMS.at-stable/
から、uriparser と uriparser-devel をダウンロードします。
- rpm -ivh uriparser*
- tar zxf fapg-0.41.tar.gz
- cd fapg-0.41
- ./configure && make && make install
こんな感じで、インストールします。
リストの作成は、例えばデータを /home/share/music に入れているとすると、
- cd /home/share/music
- fapg --output=playlist.pls --recursive .
とするだけです。
再生ツールのインストール
今回は再生ツールとして MPlayer を使う事にします。MPlayer でなくてもプレイリストに対応していれば、何でもいいです。
今回は、Dag RPM Repositoryのrpmからインストールします。 /etc/yum.repos.d/dag.repo というファイル名で以下のファイルを作成します。
[dag] name=Dag RPM Repository for Red Hat Enterprise Linux baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag/ gpgcheck=1 enabled=0
そして、以下のコマンドでインストールを行います。
- yum --enablerepo=dag install mplayer
いよいよ再生
基本的に再生はmplayerコマンドを実行するだけなのですが、サーバなのでsshで接続して実行するとクライアントを落とすと再生プログラムも停止してしまいます(バックグラウンド起動はうまくいかないようです)。
そこで、GNU screen を使う事にします。これは普通にyumでインストールできます。
- yum -y install screen
screenには、デタッチ・アタッチという素敵な仕組みがあり、仮想的なスクリーンを作り出してそのスクリーンをバックグラウンドで生かしたままログアウトしたり、別のマシンでログイン後そのスクリーンを表示させたりといったことができます。これを今回利用します。
- screen
- sudo mplayer -shuffle -playlist playlist.pls -loop 0 -ao alsa,oss,
これで、再生状態(Mplayerがコンソールからの操作を待機した状態)になっていると思いますので、Ctrl+A, Ctrl+Dと入力します。
すると、再生した状態のままコマンドに戻るはずです。これは、何が起きているかというと、Ctrl+Aで(デフォルトの状態なら)screenのコマンドモードに切り替わり、Ctrl+Dでscreenのデタッチを行っているということなのです。
コンソールに[detached]という表示があるので分かると思います。
なお、sudoでmplayerを起動しているのは、root権限でないとサウンドデバイスがうまく扱えなかったためです。これは環境によって異なるかもしれません。
もっと良い方法は?
さて、一応これでまぁ満足していますが、曲の選択とか曲名を見たりとかしたいなぁという欲もあります。。
できればWebインターフェイスでプレイヤーを制御したいんですが、そういうフロントエンドはないもんですかねぇ?