Murayama blog.

プログラミング教育なブログ

マルチメディアサーバを作るの巻 - DLNAサーバ編

最近Linuxをいじってます。CentOS
Linuxあまあまな僕ですがちょっと勉強がてらいろいろやってみます。


本日のテーマはこちら。


DLNAサーバ。


なにそれ、常識?

Digital Living Network Allianceの略で、電子機器間のネットワーク接続を可能にするガイドラインを定める業界団体を指す。
http://journal.mycom.co.jp/column/osx/226/index.html

ざっくりいうと、サーバ上の動画などをブラビアとかPS3とかで動画を共有できたりするみたいです。


もちろんブラビアPS3も持ってない。


でもやる。


仕組み的にはこんなかんじ。
DLNAサーバたてとけばPCでもテレビでも携帯でもなんでもマルチメディア見れちゃうぜ、の図。

Cacooで書いてみました。Cacoo便利。

DLNAサーバの設定

サーバOSはCentOSの5.2。バージョンとかはあまり気にしない系で。


まずは共有するフォルダを作ります。
書籍を参考にこんなかんじで。

/var/share
        /audio
        /video
        /photos

コマンドも記念に。

mkdir /var/share
cd /var/share
mkdir audio video photos
chmod -R 777 /var/share

DLNAサーバMediaTombのインストール

DLNAサーバにはMediaTombを使います。*1


まずはパッケージがあるのか確認します。

[root@localhost ~]# rpm -q mediatomb
パッケージ mediatomb はインストールされていません。

ありません。
なんでちゃっちゃとyumでインストールします。

[root@localhost ~]# yum install mediatomb
Setting up Install Process
Parsing package install arguments
No package mediatomb available.
Nothing to do

インストールできないと。。


ここでやめようかと一瞬ひるんだけど、
もうちょっとがんばって調べることにしました。


原因はyumで見に行くリポジトリがデフォルトのままだとMediaTombちゃんは見つからないようです。
追加でリポジトリの設定が必要とのこと。
参考にさせていただいたサイト。
2008-01-26 - dandaso備忘録


で、yumの設定ファイル等を追加して再度yumる。

[root@localhost ~]# gedit /etc/yum.repos.d/rpmforge.repo
[root@localhost ~]# gedit /etc/yum.repos.d/mediatomb.repo
[root@localhost ~]# yum install mediatomb
MediaTomb                 100% |=========================|  951 B    00:00     
primary.xml.gz            100% |=========================| 1.1 kB    00:00     
MediaTomb : ################################################## 2/2
rpmforge                  100% |=========================| 1.1 kB    00:00     
primary.xml.gz            100% |=========================| 3.6 MB    00:13     
rpmforge  : ################################################## 10064/10064
Setting up Install Process

(長いので省略)

Transaction Summary
=============================================================================
Install      7 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 8.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/7): perl-DBI-1.609-1.e 100% |=========================| 865 kB    00:03     
(2/7): mediatomb-0.9.1-1. 100% |=========================| 607 kB    00:02     
(3/7): mysql-5.0.77-4.el5 100% |=========================| 4.8 MB    00:01     
(4/7): js-1.7.0-1.el5.rf. 100% |=========================| 1.4 MB    00:05     
(5/7): perl-PlRPC-0.2020- 100% |=========================|  33 kB    00:00     
(6/7): perl-Net-Daemon-0. 100% |=========================|  44 kB    00:00     
(7/7): id3lib-3.8.3-7.el5 100% |=========================| 778 kB    00:04     
警告: rpmts_HdrFromFdno: ヘッダ V3 DSA signature: NOKEY, key ID 6b8d79e6


GPG key retrieval failed: [Errno 5] OSError: [Errno 2] そのようなファイルやディレクトリはありません: '/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag'

YES、、
と思いきや最後でエラーです。
GPGキーがないとのこと。
そもそもどのタイミングで要るのかと調べたところrpmforgeうんぬんでまずかったみたい。
(この辺はかなり適当です)


参考にさせていただいたサイト。
サーバの構築を簡単にするためのステップ (その5:Cobber編 Part1 ) | cafe chantant blog


気を取り直してrpmforgeのRPMパッケージをwgetしてインストール。

# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

で、再度yumったらインストール完了しました。
rpmコマンドでインストールの確認。

[root@localhost ~]# rpm -q mediatomb
mediatomb-0.9.1-1.fc5

OK。


やればできる。


あとはMediaTombを起動させるんだけど、
そのまえにネットワークインタフェースの設定をします。
/etc/mediatomb.confを編集。

## Network interface on which the server will run, you need to edit this!
MT_INTERFACE="eth0"

そんでmediatombを起動。

[root@localhost ~]# service mediatomb start
Applying multicast settings to eth0... Starting mediatomb: [  OK  ]

動作確認。何やら怪しげな画面を確認できました。
http://localhost:50500/
Screenshot-MEDIATOMB - Mozilla Firefox


さて、もう少し設定が残っていて、
mediatombで扱うデータフォーマットを設定します。
MPEG4とかそういうの。
/etc/mediatomb/config.xmlを編集します。
できあがりはこんなかんじになりました。長いけど載せておきます。

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://mediatomb.cc/0.9.1/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/0.9.1/config http://mediatomb.cc/0.9.1/config.xsd">
  <server>
    <protocolInfo extend="yes"/>
    <ui enabled="yes">
      <accounts enabled="no" session-timeout="30"/>
    </ui>
    <name>MediaTomb</name>
    <udn>uuid:24ea6458-567e-4b1a-ab4e-606265aa60ea</udn>
    <home>/etc/mediatomb</home>
    <webroot>/usr/share/mediatomb/web</webroot>
    <storage driver="sqlite3">
      <database-file>mediatomb.db</database-file>
    </storage>
  </server>
  <import hidden-files="no">
    <filesystem-charset>UTF-8</filesystem-charset>
    <metadata-charset>CP932</metadata-charset>
    <virtual-layout type="builtin">
      <script>/usr/share/mediatomb/js/import.js</script>
    </virtual-layout>
    <mappings>
      <extension-mimetype ignore-unknown="no">
        
        <map from="jpg" to="image/jpeg"/>      
        <map from="jpeg" to="image/jpeg"/>
        <map from="gif" to="image/gif"/>
        <map from="png" to="image/png"/>
        <map from="m4v" to="video/mp4"/>
        <map from="mp4" to="video/mp4"/>
        <map from="mpg" to="video/mpeg"/>
        <map from="mpeg" to="video/mpeg"/>
        <map from="m2t" to="video/mpeg"/>

        <map from="mp3" to="audio/mpeg"/>
        <map from="ogg" to="application/ogg"/>
        <map from="asf" to="video/x-ms-asf"/>
        <map from="asx" to="video/x-ms-asf"/>
        <map from="wma" to="audio/x-ms-wma"/>
        <map from="wax" to="audio/x-ms-wax"/>
        <map from="wmv" to="video/x-ms-wmv"/>
        <map from="wvx" to="video/x-ms-wvx"/>
        <map from="wm" to="video/x-ms-wm"/>
        <map from="wmx" to="video/x-ms-wmx"/>
        <map from="wmx" to="video/x-ms-wmx"/>
      </extension-mimetype>
      <mimetype-upnpclass>
        <map from="audio/*" to="object.item.audioItem.musicTrack"/>
        <map from="application/ogg" to="object.item.audioItem.musicTrack"/>
        <map from="video/*" to="object.item.videoItem"/>
        <map from="image/*" to="object.item.imageItem"/>
      </mimetype-upnpclass>
      <mimetype-contenttype>
        <treat mimetype="audio/mpeg" as="mp3"/>
        <treat mimetype="application/ogg" as="ogg"/>
        <treat mimetype="audio/x-flac" as="flac"/>
        <treat mimetype="image/jpeg" as="jpg"/>
      </mimetype-contenttype>
    </mappings>
  </import>
</config>


MediaTombを再起動して、
ブラウザからhttp://localhost:50500/を指定し公開ファイルを選択します。
公開ファイルの選択は画面右上のプラスボタンで決定します。
(地味にこのUIがわかりにくくてけっこうはまりました)


以上でとりあえず、、サーバ設定は完了です。
あとはDLNAクライアントを用意すればOKです。


DLNAクライアント編につづく。

参考

Ubuntuで作るLinuxサーバー (日経BPパソコンベストムック)

Ubuntuで作るLinuxサーバー (日経BPパソコンベストムック)

*1:Tombの意味は墓標。センスいいんだか悪いんだか