2月16日変更:BubbleUPnPについての知識が間違っていたので修正しました。
詳しくはこちらを。

いちいちSDカードに音声ファイルを仕込むのは面倒くさいなーと思い、
PCに入れたファイルをいつでもAndroid携帯から再生できるよう、 PCにUPnPサーバーを立てることにしました。
あれこれ試したところBubbleUPnPというソフトとMediaTombというソフトを使うのが簡単だったので、それらを採用しました。
利用の手順や起こったトラブルなどを例のごとくメモしたいと思います。

試した環境

    以下、PCの環境。BubbleUPnPはWindowsやMacでも動くはずです。
  • Dell Inpiron Mini 10v
  • Xubuntu 11.04
  • MediaTomb 0.12.1-0ubuntu1
  • BubbleUPnP Server 0.4

  • 以下、携帯の環境。
  • GALAPAGOS 005SH
  • Android 2.3
  • BubbleUPnP 1.3.0

PC側での設定 - MediaTomb

  1. PC側ではまずはやっぱりmediatombをsudo apt-get install しましょう。
  2. バージョンにもよるようですが、デフォルトではMediaTombはブラウザからの設定をできないようにしているようです。
    今回は簡単にウェブブラウザから設定するので
    sudo gedit /etc/mediatomb/config.xml
    などと実行し、7行目あたりの
    ... ui enabled="no" ...
    という箇所を
    ... ui enabled="yes" ...
    に書き換えましょう(もちろん「...」と書かれた箇所には他の部分が入ります。決して「...」などと入力しないでください)。
  3. 書き換えた設定を読み込むためにMediaTombを再起動する必要があるのですが、ここでハマりました。
    sudo /etc/init.d/mediatomb stop
    sudo /etc/init.d/mediatomb start
    と、一旦終了してから起動させてください。なぜかrestartではうまく読み込んでくれませんでした。

    さらに、再起動した後ブラウザから設定画面を開くためにhttp://localhost:49152/ にアクセスしても、 接続できないと言う旨のエラーが出てしまうことがあります。
    どうやらMediaTombは、起動する度にポート番号を49152か49153のどちらかに変えてしまうようです
    http://localhost:49153/ にアクセスしたら無事表示されるはずです。

  4. 無事設定画面が表示されたら、MediaTombのライブラリに、好きなファイルが入ったディレクトリを追加しましょう。MediaTombのライブラリにファイルを追加しないと、携帯など他の機器から再生することはできません。
    画面左側上半分にある、「Filesystem」と書かれた箇所をクリックしてください。
    ファイルシステムを示すツリーが表示されるはずですので、サーバーに公開してほしいファイルの入ったディレクトリを目指して、ディレクトリの左側にある「+」ボタンをクリックしていってください。
    目的のディレクトリを見つけたら、そのディレクトリをクリックして、画面上部の右端に表示される、
    「+」と書かれ、回転する矢印に囲まれたボタンをクリックしてください。
  5. 「Scan Mode」、「Scan Level」、「Recursive」、「Include hidden files/directories」と書かれた設定項目が表示されます。
    それぞれの設定項目の意味ですが、MediaTombのドキュメントによると、次のような意味だそうです。
    Scan Mode
    「None」で新しくディレクトリにファイルが追加されてもライブラリに追加しない、
    「Timed」で設定した時間毎にディレクトリをスキャンして新しいファイルをライブラリに追加する、
    「Inotify」でinotifyというライブラリを使うことで、ファイルが追加されると速やかにライブラリにファイルを追加する、
    という設定になります。
    Scan Level
    「Basic」でディレクトリの中にファイルが追加・削除された時のみライブラリを更新する、
    「Full」でディレクトリの中のファイルのあらゆる変更(タグの変更なども含める)を検知してライブラリを更新する、
    という設定になります。
    Recursive
    設定したディレクトリのサブディレクトリもライブラリに含める。
    Include hidden files/directories
    隠しディレクトリやファイルもライブラリに含める。
    おすすめ設定を述べますと、Scan ModeがInotifyで、Scan LevelがFull、Recursiveがオン、といったところでしょうか。 皆さんのPCのスペックと相談しながら設定してください。
    設定が決まったら、「Set」と書かれたボタンをクリックしてください。
    MediaTombのライブラリに、設定したディレクトリのファイルが追加されるはずですので、しばしお待ちを。

PC側での設定 - BubbleUPnP Server

MediaTombの設定は以上です。次はBubbleUPnP Serverの設定を説明します。
BubbleUPnPが一体どんな役割を果たしているのか、と申しますと、
MediaTombで公開したファイルをインターネットからでも簡単に再生できるようにするなど、
UPnPサーバーの補助を行うソフトのようです。
今回はAndroid携帯とPCが同じLAN内にあることを想定して設定するため、あまり意味がないかもしれませんが、
今回用いるUPnPクライアント、「BubbleUPnP」を用いる限りは必ず使わないといけないようです。

追記:間違えました。BubbleUPnP ServerはなくてもBubbleUPnPだけで同じLAN内のUPnPサーバーのファイルを再生できるようです。
BubbleUPnPのAndroid Marketでのページによると、 BubbleUPnP Serverを使うことで、UPnPサーバー内のファイルを簡単にインターネット越しに再生することが出来るようになるそうです。
そういうことなんで、今回は当初の趣旨から少し変えて、BubbleUPnP Serverを用いて、外からでもUPnPサーバー内のファイルを再生できるようにする方法を説明することにしました。
aptのリポジトリにもないので少々インストールが面倒ですが、どうかお付き合いください。
  1. http://bubbleguuum.free.fr/upnpserver/ に行ってBubbleUPnP Serverをダウンロードしましょう。
    「Download zip archive」と書かれたリンクをクリックしてzipファイルをダウンロードしてください。
    容量のわりに結構ダウンロードに時間がかかりますので気長に待ちましょう。
    ダウンロードが済んだらやはり適当なディレクトリに解凍しましょう。
  2. 解凍した段階でお気づきの方もいらっしゃると思いますが、BubbleUPnP ServerはJavaでできてます。
    すかさずsudo apt-get install openjdk-6-jre-headless などと実行し、javaをインストールしましょう。
  3. ダウンロードしたzipファイルの中にあるlaunch.shというファイルにchmod +xして実行権を加えたら、./launch.sh と実行し、BubbleUPnP Serverを起動させてください。
  4. BubbleUPnP Serverの起動が終了したら、http://localhost:58050/ にアクセスして、BubbleUPnP Serverの設定画面を開いてください。
  5. 最初に設定画面を開くと、「loginとpasswordを設定しろよ!」みたいな内容の警告が表示されます。
    素直にそれに従い、画面下半分にある、「Cresidential」と書かれた四角の中にある、
    「Login」と「Password」と書かれた欄に、適当な文字列(後で使用するので覚えておきましょう)を入力し、
    その下の「Apply」と書かれたボタンをクリックしてください。
  6. 続いてBubbleUPnPがきちんとMediaTombを認識しているのかどうか確認しましょう。
    同じくBubbleUPnPの設定画面上部にある、「Media Servers」という箇所をクリックしてください。
    すると他に設定しているUPnPサーバーがなければ、
    「MediaTomb」とというサーバーソフトの名前と、MediaTombのアイコンが書かれた項目が表示されているはずです。
    画面右側の「Make this Media Server available in BubbleUPnP for Android」という項目にチェックが入っていることを確認しましょう。
PC側の設定は以上です。

Android側の設定

  1. https://market.android.com/details?id=com.bubblesoft.android.bubbleupnp にアクセスし、Android MarketでBubbleUPnPのクライアントアプリをダウンロード・インストールしましょう。
  2. BubbleUPnPを最初に起動すると、「What's new」と書かれた案内が表示されます。
    「OK」をタップし、次に進みましょう。
    あれやこれやと説明が続きますが、ひとまず「Skip」、「OK」をタップし、先に進んでください。
  3. 画面下部に「NOW PLAYING」「PLAYLIST」「LIBRARY」「DEVICES」の4つのボタンが表示される画面まで来たら、
    メニューボタンを押し、「Settings」=>「Networkds and settings」=>一番上の「Unset」の順番にタップし、
    ネットワークの設定画面を呼び出しましょう。
  4. 設定画面では、次のように設定してください。
    • Name: 適当な名前
    • Server address: BubbleUPnPの設定画面(デフォルトではhttp://localhost:58050/ )で表示される、LAN IP AddressPublic IP Addressの頭に「http:// 」をつけ、末尾に「:58050」と書いた値(例: http://111.222.3.4:58050 )。
    • Login: 先ほどBubbleUPnP Serverの設定画面で設定した値
    • Password: Loginと同様先ほど設定した値
    • その他の設定:そのまま変えない
    以上のように設定したら、右下の「Apply」というボタンをタップして、設定を完了します。
  5. 「戻る」ボタンを何度か押し、設定画面を閉じたら、画面右下の「DEVICES」と書かれたボタンをタップします。
  6. 設定がうまく行っていれば、右側の「Select Library」と言う欄に「MediaTomb [(先ほどネットワークの設定画面で設定したName)]」という項目が表示されているはずです。
  7. その「MediaTomb」と書かれた項目をタップし、今度は画面下部の「LIBRARY」というボタンをタップしてください。
    先ほどMediaTombに登録した曲が表示されるようになります。
    適当なフォルダのアイコンをタップして、きちんと登録されているか確認してください。
他にも細かい設定がアレコレありますが、設定の説明はこの辺で終了とさせていただきます。
次に気が向いたときはトランスコーディングの設定でも行いましょうかね。 BubbleUPnPを使えば割と簡単に設定できそうです。
実際やって見たところ私の環境ではFLACのようなサイズの大きなファイルは音飛びが激しいですし。

トラブルシューティング

最後に、私がMediaTombの設定をしていて困った点とその解決策をメモしておきましょう。
私の場合、一部のファイルが音声ファイルとして認識されず、再生されない、というトラブルが起こりました。
あれこれ悩んだ後、 /var/log/mediatomb.log をよく読んで見たところ、認識されなかったファイルについて、次のような警告が記録されてました。

2012-02-15 23:25:37 WARNING: filemagic returned invalid mimetype for /home/hoge/h/songs/hage.flac regular file, no read permission

どうやらたまたまそのファイルだけパーミッションがWorld-Readableになっていなかったようです。
特に問題がなければ、公開したいディレクトリに対して chmod 0755 -R と実行してまとめて読み込み可能にしちゃいましょう。
それでもやっぱり読み込まれなかった場合
しかしパーミッションを変更した後、mediatombを再起動してもやっぱり読み込めなかったファイルがいくつかありました。
こちらもうんうん悩んだ挙句、一旦mediatombを終了し、
MediaTombがライブラリに取り込んだファイルの情報がおそらくキャッシュされているであろう、
/var/lib/mediatomb.db を削除した上でもう一度mediatombを起動、
改めてライブラリを追加
したところ、うまく認識してくれました。