mediatombでDLNAサーバを構築
ubuntuサーバを立て出したのは、立ち読みしておもしろそうで、そのまま購入した日経Linuxのせいです。
日経Linux(リナックス) 2016年 10月号 [雑誌]
- 作者: 日経Linux編集部
- 出版社/メーカー: 日経BP社
- 発売日: 2016/09/12
- メディア: Kindle版
- この商品を含むブログを見る
一通りサーバの設定も終わったところで、 「07 MediaTombでDLNAサーバーを構築」をやってみました。DLNAサーバというのは家電、ゲーム機、スマフォで動画や音楽を共有するためのサーバらしいです。MediaTombがそのためのサーバーソフトです。本の説明では非常に簡潔に書かれているのですが、全く一筋縄にはいかず、最後の最後で諦めました。一応たくさんの資料を読んだのでまとめておいて、もし誰かの参考にでもなればと思います。
前提
流れ
mediatombのインストール
$ sudo apt-get install mediatomb
mediatombの設定
設定ファイルは2つあります。
- /etc/default/mediatomb
- /etc/mediatomb/config.xml
手作業でも設定できますが、本ではコマンドですべて設定してしまっています。 私もそれに従いました。
# 共有設定用のweb画面(管理画面)にアクセス可能にする $ sudo sed -i -e ’s/enabled=“no”/enabled=“yes”’ /etc/mediatomb/config.xml # ネットワークデバイス名を確認 $ ip link ... 2: wlp3s0b1: <BROADCAST, ... # 外部からアクセス可能にする (2つ目のINTERFACE=の部分は先程のデバイス名を入れる) $ sudo sed -i -e ’s/INTERFACE=“lo”/INTERFACE=“wlp3s0b1”' /etc/default/mediatomb # システム起動時の自動起動を設定 (本ではsystemctlを使用) $ sudo sysv-rc-conf mediatomb on # ユニバーサルプラグアンドプレイライブラリを更新 $ wget http://bugs.launchpad.net/ubuntu/+source/libupnp/+bug/1571199/+attachment/4638260/+files/libupnp6_1.6.19+git20160116-1_amd64.deb $ sudo dpkg -i libupnp6_1.6.19+git20160116-1_amd64.deb # 再起動 $ sudo reboot
本ではこれでhttp://localhost:50500/にアクセスすれば管理画面が開くとなっていますが、なりませんでした。
$ sudo cat /var/log/mediatomb | tail … ERROR: You enabled both, sqlite3 and mysql but only one database driver may be active at a time!
起動時に失敗しているらしくログを見てみると、sqliteとmysqlが両方onになっているから片方にしろということでした。
$ sudo vi /etc/mediatomb/config.xml … -<sqlite3 enabled=“yes"> +<sqlite3 enabled=“no"> ...
sqlite3だけnoにしてmysqlを有効にしました。 しかし再びエラー。
$ sudo cat /var/log/mediatomb | tail … ERROR: error in configuration, transcoding profile "oggflac2raw" could not find transcoding command ogg123 in $PATH
次はogg123というコマンドがないということなので、vorbis-toolsをinstallします。
$ sudo apt-get install vorbis-tools
三度目のエラー
ERROR: error in configuration, transcoding profile "vlcmpeg" could not find transcoding command vlc in $PATH
似た感じですが、結構悩まされました。結論から言えばvlcは例のVLCのことで、それをinstallするだけで済みます。
$ sudo apt-get install vlc
mysqlの設定
mediatombについて調べていると、mysqlの設定はしなくてもうまくいくっぽいのですが、私のところでは四度目となるエラーがログに記されてました。
ERROR: The connection to the MySQL database has failed: mysql_error (1045): "Access denied for user 'mediatomb'@'localhost' (using password: NO)"
仕方ないので、mysqlにmediatombというユーザを作ってmediatombというデータベースを割り当てます。
$ mysql -u root -p mysql > create database mediatomb; mysql > create user ‘mediatomb’@‘localhost' identified by ‘media tomb’; mysql > grant all privileges on mediatomb.* to ‘mediatomb’@‘localhost’; mysql > flush privileges; mysql > exit; # データベースの雛形作成 $ mysql -u mediatomb -p mediatomb < /usr/share/mediatomb/mysql.sql
デフォルトではmysqlのパスワードはないもので設定されているので、パスワードをconfig.xmlに追加しておきます。
$ sudo vi /etc/mediatomb/config.xml ... <mysql enables=“yes”> <host>localhost</host> <username>mediatomb</username> +<password>mediatomb</password> <database>mediatomb</mediatomb> </mysql>
ここまでやって、やっとエラーは出なくなります。
ブラウザで共有するファイルを選択
http://[server-ipaddr]:50500/にアクセスできます。
ログイン画面はconfig.xmlで指定したユーザー名とパスワードでログインできます (デフォルトはmediatomb:mediatomb)。
左上に [ Database | Filesystem] とあるので、Filesystemを選ぶとサーバの中身が木構造になって表示されます。音声ファイルや動画ファイルのところまで辿り、右の+ボタンを押すと共有されます。共有されたファイルやディレクトリはDatabaseで確認できます。私はなぜか画面を更新しないと確認できませんでしたが。
こちらのサイトで詳しく説明されていました。 How to Add Content to MediaTomb
以上でサーバ側の設定は完了です。
補足
config.xmlにmimetypeを追加
<extension-mimetype ignore-unknown="no”> ... +<map from="mp4" to="video/mp4"/> </extension-mimetype>
config.xmlで日本語設定
<import hidden-files=“no”> +<filesystem-charset>UTF-8</filesystem-charset> +<metadata-charset>CP932</metadata-charset> +<playlist-charset>UTF-8</playlist-charset>
私はこの設定をしても文字化けが直りませんでした。
ubuntuにおけるvlcmpeg
公式サイトによると、vlcmpegはデフォルトだと動かないらしいです。参考にしていたどの日本語のサイトにもなってなかった話でよくわかりません。
<agent command=“vlc”... -vcodec=mp2v +vcodec=mp1v
DLNAクライアントで動画を確認
macで見られるDLNAクライアントには、なんとVLCがありました。
と喜ぶのもつかの間、VLCのローカルネットワーク - ユニバーサルプラグ & プレイに共有ファイルが表示されるはずが、なにも表示されません。サーバのIPアドレスなどを設定しなくていいのかと疑問に思うも、VLC 2.* は、なにもしなくても表示されるようです。ただ、一部で表示されないような不具合もあるようで*1、もしかしたらこれにあたるのかもしれません。サーバ上のログは何もエラーを吐いていませんでした。
VLCは諦めてこちらも無料のKODIと呼ばれるソフトをダウンロードしました。かなり豪華なUIに驚きます。
さっそくDLNAサーバに繋いでみると、ちゃんと登録した共有ファイルの一覧が見れます。見たい動画をプレイリストに登録して、いざ視聴。が、残念ながらここで終わりです。視聴できませんでした。サーバ側はまったくエラーを吐いていません。 mac側のログを見てみると次のようになっていました。
$ cat ~/Library/Logs/kodi.log| tail -n 30 ... 07:12:35 T:140735217373952 NOTICE: DVDPlayer: Opening: http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4 07:12:35 T:140735217373952 WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED 07:12:35 T:4704055296 NOTICE: Creating InputStream 07:12:35 T:4704055296 ERROR: CCurlFile::Stat - Failed: Couldn't connect to server(7) for http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4 07:12:35 T:4704055296 ERROR: CCurlFile::FillBuffer - Failed: Couldn't connect to server(7) 07:12:35 T:4704055296 ERROR: CCurlFile::Open failed with code 0 for http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4 07:12:35 T:4704055296 ERROR: Open - failed to open source <http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4> 07:12:35 T:4704055296 ERROR: CDVDPlayer::OpenInputStream - error opening [http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4] 07:12:35 T:4704055296 NOTICE: CDVDPlayer::OnExit() 07:12:35 T:140735217373952 ERROR: Playlist Player: skipping unplayable item: 0, path [upnp://e0c9f427-1f7a-42b5-9bcd-077b774c87fd/3619/] 07:12:35 T:140735217373952 NOTICE: CDVDPlayer::CloseFile() 07:12:35 T:140735217373952 NOTICE: DVDPlayer: waiting for threads to exit 07:12:35 T:140735217373952 NOTICE: DVDPlayer: finished waiting 07:12:35 T:140735217373952 NOTICE: CDVDPlayer::CloseFile() 07:12:35 T:140735217373952 NOTICE: DVDPlayer: waiting for threads to exit 07:12:35 T:140735217373952 NOTICE: DVDPlayer: finished waiting
Failed: Couldn't connect to server(7)
ここが一番の原因っぽいのですが、調べても私と状況が違うものばかりでてきて、結局力尽きました。(vcodec=mp1vの場合、mp2vとするとまた別のエラーが出ます)
余力があれば、いつか使えるようにしたいですね。
参考
- (Ubuntu) DLNAサーバ mediatomb のインストール (r271-635)
- UbuntuをDLNAサーバーにする。
- MediaTombをUbuntu起動時から有効にする その1 - ブログ練習中
- MediaTomb / Discussion / Help:iconv error when auto-starting mediatomb
- MediaTomb / Discussion / Help:Mediatomb "vlcmpeg" transcoding issue.