====== Mediatomb -- UPnPメディアサーバ ======
====== 入手 ======
[[http://mediatomb.cc/|Mediatomb]]は、大抵の環境用にバイナリパッケージが用意されている。[[http://vinelinux.org|VineLinux]]でも[[http://www.debian.org|debian GNU/Linux]]でも、apt-getで入手可能。
但し、[[http://www.debian.org|debian]]の場合には、/etc/apt/sources.lstに、mediatomb.ccを追加し、キーを事前に取得しておく必要がある。
[[http://vinelinux.org|VineLinux]]の場合は、特に、追記の必要はない。
なお、Sarge以前を使っている場合には、事前に Etch以降への更新が必要。
/etc/apt/sources.lst
deb http://apt.mediatomb.cc/ etch main
deb-src http://apt.mediatomb.cc/ etch main
後で述べる理由によって、バイナリパッケージの再構築が必要となるので、必ず、deb-srcも追記しておくこと。
キーの取得は次のコマンドにて:
$ wget http://apt.mediatomb.cc/key.asc -O- -q | sudo apt-key add -
====== リビルドの必要性 ======
標準でビルドされているバイナリは、ID3タグの取得にlibtag を利用している。が、ID3タグにCP932 -- 即ち Shift JISを利用している場合には、文字化けを引き起こす。
この問題は、次のいずれかの方法で対処することが出来る。
* ID3タグを UTF16で、すべて作り直す。
* libtag ではなく libid3を使うバイナリを作る。
前者は、将来的にも他のツールなどで生じうる問題を事前に回避できる点で優れているかもしれないが、既に多くのファイルがCP932で作成されている場合に、あまりいいアイディアとも思えない。というか手間がかかりすぎる。
我が家の場合は、Exact Audio Copy + LAMEでリッピングしている関係上、当面、新たにエンコードされるものはすべて CP932で作成されるので、いちいちそれを、UTF16に直すというのも、手間である。
同じサーバ上で動作している mt-daapdも、CP932のID3タグを処理できるので、後者の方法で対応する方が我が家の場合は現実的である。
===== ソースの入手 -- debian GNU/Linux =====
我が家では、グラタンをマルチメディアデータのバックアップ兼メディアサーバとして利用しているので、debian GNU/Linuxのケースを説明する。Vineの場合は、変更すべきファイルは mediatomb.specsだけなのでより簡単だと思われるので、各自やってもらいたい。
ソースの入手は、apt-getで行なうことが出来る。
$ apt-get source mediatomb
ソースが取得され、**カレントディレクトリ**に展開される。なので、予め適当な作業ディレクトリを作っておくべきだろう。
===== 設定ファイルの修正 =====
修正を行なうべきファイルは4つある。すべて、mediatomb-0.11.0/debian の下にある。
* rules
* control
* changelog
* files
特に、キモとなるのは、rules である。
==== rulesの修正 ====
52 --enable-taglib \
53 --enable-ffmpeg \
54 --enable-external-transcoding \
55 --disable-id3lib \
以上のように、taglibを使い、id3libは使わない設定になっているので、これを逆にする。
52 --disable-taglib \
53 --enable-ffmpeg \
54 --enable-external-transcoding \
55 --enable-id3lib \
これで、rulesの変更は終了である。
==== controlの修正 ====
これは、必須でもないが、整合性を考えて行なっておく。
6 Build-Depends: debhelper (>= 4.0.0), automake, quilt, libexpat-dev,
libcurl4-gnutls-dev | libcurl3-gnutls-dev, libavformat-dev, libexif-dev,
libtag-dev, libmagic-dev, libmysqlclient-dev, libsqlite3-dev, libz-dev,
libmozjs-dev
libtag-devへの依存があって、libid3-devへの依存がないので、ここを入れ替える。
6 Build-Depends: debhelper (>= 4.0.0), automake, quilt, libexpat-dev,
libcurl4-gnutls-dev | libcurl3-gnutls-dev, libavformat-dev, libexif-dev,
libid3-dev, libmagic-dev, libmysqlclient-dev, libsqlite3-dev, libz-dev,
libmozjs-dev
==== filesおよび、changelogの修正 ====
再構築自体は、上の二点の修正で出来るが、このままだと、apt-get update/upgradeでパッケージの維持管理を行なう場合に、配布されているバイナリパッケージでの上書きが発生してしまうので、パッケージのシリアル番号を進めて、これが起きないようにする。なお、将来的に、配布パッケージがアップデートされたときに、更新されないという問題が生じうるので、あくまでも自己責任で行なうこと。
この意味がわからない場合には、余計なことはすべきではない。
filesは、作成されるパッケージに関する記述がされている。
1 mediatomb-daemon_0.11.0-1etch1_all.deb net optional
2 mediatomb_0.11.0-1etch1_all.deb net optional
3 mediatomb-common_0.11.0-1etch1_arm.deb net optional
この中で、-1etch1 となっている部分を、たとえば-2etch1 のように変更する。-1.1etch1とかの方がいいかもしれないが、やってないので何ともいえない。
1 mediatomb-daemon_0.11.0-2etch1_all.deb net optional
2 mediatomb_0.11.0-2etch1_all.deb net optional
3 mediatomb-common_0.11.0-2etch1_arm.deb net optional
changelogは、整合性を持たせるための修正である。
1 mediatomb (0.11.0-2etch1) atch; urgency=low
2
3 * use id3lib instead of libtag1 for CP932 ID3 tag files
4
5 -- Hiroyuki Araki Wed, 21 Jan 2009 17:09:05 +0900
6
この部分を先頭に追記する。5行目は自分の名前とやった日付で書いておくこと。このまま写しても別にいいけれど、責任は持てない。3行目は別になんでもいい。1行目のシリアル番号が filesのそれとあうようにだけしておけばいい。
なお、viを使うと、縮退表示がかかっているかもしれない。
===== 再構築 =====
以上の変更をすべて終えたら、mediatomb-0.11.0の下で、ビルドを行なう。
$ dpkg-buildpackage -rfakeroot
あとは、待っていると、一つ上のディレクトリに、filesに書かれている三つのパッケージが出来る。
===== インストール =====
できあがったパッケージをインストールして、完了である。
$ sudo dpkg -i mediatomb*_0.11.0-2etch1*.deb
とでもすればいいだろう。
====== 設定 ======
===== /etc/default/mediatomb =====
システムの起動時に、daemonが起動し、適切に動作を開始するためには、まずこのファイルを修正する。
11 NO_START="yes"
まずは、これを、NO_START=""に修正する。
次に、
19 INTERFACE=""
これを、INTERFACE="eth0" にする。グラタンの内蔵LANを利用する場合はこれで、USBアダプタなどを使っている場合には、それをポインとするデバイスを指定する。まぁ、そういうケースはあまりないだろうが。
===== /etc/mediatomb/config.xml =====
PS3と連動することを前提に記述する。何しろ我が家で現在動作しているクライアントはPS3だけなので。
まずは、PS3で早送りなどの操作ができるようにする。0.11.0には、はじめから、設定が含まれているが、"no"になっているので yes に直す。コメントがついているからすぐに判るだろう。
23
このように、「PS3サポートのためには"yes"にしろ。」と書いてあるので、そのようにするだけである。
23
折角ID3タグでCP932が使われていてもいいように変更したのだから、それが生きる設定を追加する。ついでにファイル名がUTF-8であることを指示する。グラタンにdebianを入れ居るなら、ファイルシステムはUTF-8でエンコーディングされていると思われるが、euc-jpに思い入れがあり、そうなるようにシステムの設定をいじっているヒトは、それとあうようにやって欲しい。
41
42
この間に追記すればいいだろう。
41
42 UTF-8
43 CP932
44
42, 43が追加された行である。
あとは、いくつかのファイルが扱えるように、mappingやmime-typeの追加を適宜行なってやる。
これは、指示通りコメントをとってやる。
あと、このあたりも、〜に追加してやる。これらの拡張子のファイルが存在しないならいらない。
なお、Windowsからアクセスされるフォルダの場合には、Thumbnail.dbなどのファイルが作成されている場合がある。これがスキャンされると、「知らないファイル」が多発するので、これがうざいと感じる場合には、のように ignore-unknownを "yes"にしてやる。但し、これをやると、スキャンされないファイルがあっても気づきにくくなる。どっちがいいのかは各自バランスを考えて設定すること。
===== UI =====
ここまでやったら、daemonを起動する。
$ sudo /etc/init.d/mediatomb start
問題なければ、daemonが起動して、ログが出来る。このログファイルの中にUIへのURIが書かれている。
/var/log/mediatomb.log
2009-01-15 22:34:42 INFO: Server bound to: 192.168.0.28
2009-01-15 22:34:43 INFO: MediaTomb Web UI can be reached by following this link:
2009-01-15 22:34:43 INFO: http://192.168.0.28:49152/
IPアドレスは、サーバのもので、portは 49152を使おうとするが、もし、そこがbusyだったら 49153, 49154...とずらして利用する。特に、サーバを再起動したりすると、ずれることがあるので、49152であることを期待して何かを書いたりしてはいけない。
起動する度に、URIを確認すること。
後は、ブラウザから、URIへアクセスし、FileSystem タブから、ファイルを個別に取り込むか、フォルダごとスキャンするように指定するかする。
なお、Full スキャンの指定は、グラタンをとてもbusyにするのでしない方がいいだろう。ID3タグのみ変更した場合が検出出来なくなるが、そんなことは滅多にないだろう。通常はBasicスキャンにしておけば十分だと思われる。ファイルの追加・削除・移動などはこれで検出される。Timedの間隔は、30分がデフォルトだが、必要に応じて短くしたり長くしたりすればいいだろう。