18日に導入したDLNAサービス。
REGZA 37Z3500からは再生以前にサーバとして見えていない、というところで止まっていたのだが、調べてみるとどうやら<protocolInfo extend="yes"/>の設定を行って「DMS-1.50対応」を機能させる必要があるそうだ。
ただ、Ubuntuを10.10以降に上げるか、mediatombを0.12.1に上げないと、その設定も効かないらしい。
ということで、何はともあれmediatombを0.12.1に上げる事にして、必要そうなパッケージを一式インストール。
yano@GT110b:~$ sudo apt-get install libdlna-dev libexpat-dev libmpeg4ip-dev libmp4v2-dev libtag1-dev libavcodec-dev libavformat-dev libffmpegthumbnailer-dev libexif-dev libcurl4-dev libmagic-dev libdvdnav-dev
素直にmediatomb-0.12.1.tar.gzをbuildしてみたのだが、
yano@GT110b:~$ cd ~/software/dlna/というエラーに見舞われる。
yano@GT110b:~/software/dlna$ wget http://downloads.sourceforge.net/mediatomb/mediatomb-0.12.1.tar.gz
yano@GT110b:~/software/dlna$ tar xvf mediatomb-0.12.1.tar.gz
yano@GT110b:~/software/dlna$ cd ~/software/dlna/mediatomb-0.12.1
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ autoreconf -i
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ make
~~~~
../src/metadata/ffmpeg_handler.cc:181: error: ‘CODEC_TYPE_VIDEO’ was not declared in this scope
../src/metadata/ffmpeg_handler.cc:212: error: ‘CODEC_TYPE_AUDIO’ was not declared in this scope
どうやら14日にgit://source.ffmpeg.org/ffmpeg.gitから導入したffmpeg…ていうか、libavが改版されているために、2010年8月リリースのmediatomb-0.12.1が追従できていない模様。
ffmpegをubuntu提供版に入れ直すのは薮さかではないのだが、公式リポジトリのffmpegはlibfaacが有効になっていない問題があるので、Ubuntu11.10でffmpegのlibfaacを使う Unknown encoder ‘libfaac’を参考にMedibuntuからffmpegとlibavcodec-extraを差し替えて、もう一度mediatomb-0.12.1のbuild。
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ sudo apt-get -q update
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ sudo apt-get -q update
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ sudo apt-get --reinstall install ffmpeg libavcodec-extra-52
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ make && sudo make install
…だが、結局ubuntu提供版のffmpegではトランスコードが荒くて使い物にならない印象だったので、14日にgit://source.ffmpeg.org/ffmpeg.gitから導入したffmpegに戻し、mediatombは/usr/local/includeではなく/usr/include配下にあるubuntu提供版のヘッダファイルしか見えないように細工してbuild。
yano@GT110b:~$ sudo mv /usr/local/include /usr/local/.include
yano@GT110b:~$ cd ~/software/dlna/mediatomb-0.12.1
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ autoreconf -i
yano@GT110b:~/software/dlna/mediatomb-0.12.1$ make
設定ファイル/etc/mediatomb/config.xmlはこんな感じ。「protocolInfo extend」と「mp4」関係の追加がポイントかな。
yano@GT110b:/etc/mediatomb$ diff -bc /etc/mediatomb/config.xml.orig /etc/mediatomb/config.xml/usr/local/bin/mediatomb-ffmpeg-video.shは
2c2
< <config version="1" xmlns="http://mediatomb.cc/config/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/1 http://mediatomb.cc/config/1.xsd">
---
> <config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd">
9,10c9,10
< <accounts enabled="no" session-timeout="30">
< <account user="mediatomb" password="mediatomb"/>
---
> <accounts enabled="yes" session-timeout="30">
> <account user="admin" password="XXXXXXXX"/>
13c13
< <name>MediaTomb</name>
---
> <name>MediaServer</name>
16,18c16,18
< <webroot>/usr/share/mediatomb/web</webroot>
< <storage>
< <sqlite3 enabled="yes">
---
> <webroot>/usr/local/share/mediatomb/web</webroot>
> <storage caching="yes">
> <sqlite3 enabled="no">
21c21
< <mysql enabled="no">
---
> <mysql enabled="yes">
23a24
> <password>mediatomb</password>
27c28,29
< <protocolInfo extend="no"/><!-- For PS3 support change to "yes" -->
---
> <protocolInfo extend="yes"/>
> <!-- For PS3 support change to "yes" -->
45c47
< <ffmpegthumbnailer enabled="no">
---
> <ffmpegthumbnailer enabled="yes">
56a59,60
> <filesystem-charset>UTF-8</filesystem-charset>
> <metadata-charset>UTF-8</metadata-charset>
58,59c62,63
< <common-script>/usr/share/mediatomb/js/common.js</common-script>
< <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
---
> <common-script>/usr/local/share/mediatomb/js/common.js</common-script>
> <playlist-script>/usr/local/share/mediatomb/js/playlists.js</playlist-script>
61,62c65,66
< <import-script>/usr/share/mediatomb/js/import.js</import-script>
< <dvd-script>/usr/share/mediatomb/js/import-dvd.js</dvd-script>
---
> <import-script>/usr/local/share/mediatomb/js/import.js</import-script>
> <dvd-script>/usr/local/share/mediatomb/js/import-dvd.js</dvd-script>
81a86,93
> <map from="mpg" to="video/mpeg"/>
> <map from="MPG" to="video/mpeg"/>
> <map from="mpeg" to="video/mpeg"/>
> <map from="mp4" to="video/mp4"/>
> <map from="m4v" to="video/mp4"/>
> <map from="ts" to="video/vnd.dlna.mpeg-tts"/>
> <map from="iso" to="video/dvd"/>
> <map from="ISO" to="video/dvd"/>
131c143
< <transcoding enabled="no">
---
> <transcoding enabled="yes">
136a149,151
> <transcode mimetype="video/mp4" using="ffmpeg-video"/>
> <transcode mimetype="video/mpeg" using="ffmpeg-video"/>
> <transcode mimetype="video/x-ms-wmv" using="ffmpeg-video"/>
147,148c162,163
< <profile name="vlcmpeg" enabled="no" type="external">
< <mimetype>video/mpeg</mimetype>
---
> <profile name="vlcmpeg" enabled="yes" type="external">
> <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC</mimetype>
154a170,177
> <profile name="ffmpeg-video" enabled="yes" type="external">
> <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC</mimetype>
> <!--
> <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=10;DLNA.ORG_CI=0</mimetype>
> -->
> <agent command="/usr/local/bin/mediatomb-ffmpeg-video.sh" arguments="%in %out"/>
> <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
> </profile>
#!/bin/bash
FFMPEG_PATH="/usr/local/bin/ffmpeg"
INPUT="$1"
OUTPUT="$2"
OPT_VCODEC="-vcodec mpeg2video"
OPT_VBRATE="-b 5M"
#OPT_VFRATE="-r 25"
OPT_ACODEC="-acodec mp2"
OPT_ABRATE="-ab 128k"
OPT_AFRATE="-ar 44100"
OPT_ACHS="-ac 2"
OPT_ASPECT="-aspect 4:3"
#OPT_ASPECT="-aspect 16:9"
#OPT_THREADS="-threads 0"
#FORMAT="dvd"
FORMAT="mpegts"
exec "${FFMPEG_PATH}" -i "${INPUT}" -f ${FORMAT} \
${OPT_VCODEC} ${OPT_VBRATE} ${OPT_VFRATE} \
${OPT_ACODEC} ${OPT_ABRATE} ${OPT_AFRATE} ${OPT_ACHS} \
${OPT_ASPECT} ${OPT_THREADS} - > "${OUTPUT}"
【参照】
●デジ備忘 http://www.degi.saloon.jp/
┣DLNAサーバーを試す[MediaTomb][ubuntu]編 – REGZAへ認識させる 2010年11月6日
┗DLNAサーバーを試す[MediaTomb]編 – トランスコードしてREGZAから視聴 2010年12月1日
●ORBIT SPACE http://www.orsx.net/blog/
┗Ubuntu11.10でffmpegのlibfaacを使う Unknown encoder ‘libfaac’
●Ubuntu Japanese Wiki https://wiki.ubuntulinux.jp/
┗UbuntuTips/Server/DLNAserver
●MediaTomb - Free UPnP MediaServer http://mediatomb.cc/
┗MediaTomb - Browse Files at SourceForge.net
●FFmpeg http://ffmpeg.org/