DLNA奮闘中

18日に導入したDLNAサービス。

REGZA 37Z3500からは再生以前にサーバとして見えていない、というところで止まっていたのだが、調べてみるとどうやらの設定を行って「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からffmpeglibavcodec-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

2c2
<


9,10c9,10
<
<



13c13
< MediaTomb

MediaServer
16,18c16,18
< /usr/share/mediatomb/web
<
<

/usr/local/share/mediatomb/web


21c21
<


23a24
mediatomb
27c28,29
<



45c47
<


56a59,60
UTF-8
UTF-8
58,59c62,63
< /usr/share/mediatomb/js/common.js
< /usr/share/mediatomb/js/playlists.js

/usr/local/share/mediatomb/js/common.js
/usr/local/share/mediatomb/js/playlists.js
61,62c65,66
< /usr/share/mediatomb/js/import.js
< /usr/share/mediatomb/js/import-dvd.js

/usr/local/share/mediatomb/js/import.js
/usr/local/share/mediatomb/js/import-dvd.js
81a86,93








131c143
<


136a149,151



147,148c162,163
<
< video/mpeg


video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC
154a170,177

video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC


    <agent command="/usr/local/bin/mediatomb-ffmpeg-video.sh" arguments="%in %out"/><br/>
    <buffer size="14400000" chunk-size="512000" fill-size="120000"/><br/>
  </profile></span>
/usr/local/bin/mediatomb-ffmpeg-video.sh
#!/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/