趣味のプログラム工房

Ububtu11.04をDLNAレンダラー化

このたび、キューブ型のホームサーバ用のマシンを組んだので、それを音楽再生用のマシンにしてDLNAを使いiPhoneから操作できるようにしようとセットアップしました。

でも、Linuxマシンをメディアサーバ化するソフトはそれなりにあるみたいですが、レンダラー化するソフトってなかなかいいのがないんですね。
使いやすいDLNAクライアントすらない状態。

レンダラーとして唯一まともに動いたのがXBMCでした。
いわゆるメディアセンター系のソフトでレンダラーとしてだけ使えればいい自分としてはいささかオーバースペック。CPUも使いすぎなわけです。

また、iPhoneからの操作性がいまいち。
ここら辺はiPhoneで使ってるDLNAクライアントの操作性もあると思うのですが、iPhoneがスリープ状態になると次の曲が再生されないのはいただけない。
いろいろ試したなかでiPhoneで一番使いやすいDLNAクライアントのPlugPlayerからの操作が特にダメ。
8playerでは、スリープボタンを押さなければいいのですが、PlugPlayerでは、無操作時間によるスリープでも次曲を再生してくれません。。。


ほかに、何かよさそうなレンダラーソフトは無いかとUbuntuのSynapicパッケージマネージャを見ていると、、、あるじゃないですか!!
それが「rygel」というソフトです。
「rygel」に「rygel-playbin」というMedia Renderer Pluginを入れることで、いい感じに動きます!!と思ったのですが、、これがまた微妙にうまくいかない。
「rygel」は軽くていいソフトなのですが、、、肝心のPlugPlayerで動かない。
レンダラーとして認識してくれません。
8playerからは問題なく動きます。


何が悪いんだ、、、


とりあえず、DLNA間でやりとりしている設定ファイル(XML)を見ることにします。
設定ファイルの場所は
~/.config/Rygel/Playbin.xml (/home/ユーザ/.config/Rygel/Playbin.xml)

とりあえず、いろいろ試してわかったことは、
deviceTypeの値は「1」が良さそうです。(デフォルトは2になってます。)
ということで、
urn:schemas-upnp-org:device:MediaRenderer:2を
urn:schemas-upnp-org:device:MediaRenderer:1に変更します。

また、合わせて、
serviceTypeの部分も1から2へ変更します。

これで、PlugPlayerで動くようになります!!、、、が!
この、rygel-playbinというソフト、起動の度に設定ファイルが初期化される!!
なので、一度動くようになっても、再起動すると動かなくなりますorz
しかも、設定変更済みの設定ファイルを読み込み専用とするとrygel-playbinが起動しません。

なので、rygelを起動させるスクリプトで、設定ファイルを設定済みファイルで上書きすることにしました。

boot起動スクリプトより抜粋
/etc/init.d/rygel

sudo -u ユーザ rygel &
sleep 10
cat _Playbin.xml>Playbin.xml
exit 0
;;


てかんじ。
設定ファイルがユーザのディレクトリにあるため、sudo -u で任意のユーザ権限で実行するようにします。
また、sleepは起動待ちです。
&によるバックグラウンド実行にしているため、プロセス起動完了前に設定ファイルを上書きしても意味がないためです。
で、設定ファイルの上書きですが、cpコマンドではなくcatで行っているのは、何となくです。
更新日時も変えた方がいいのかなーって。

これでいい感じのネットワークオーディオプレイヤーシステムの完成!
(ただし、今の状態では音楽の再生にはiphoneが必須です。あくまでもレンダラーのため)
iphoneからの操作でパソコンで音楽が流せます!

2011年09月27日