Mediatomb/Construction
install
get source
1. MediaTomb - Free UPnP MediaServer
2. seek-patch ... enable seek play when transcoding.
make
make binary from the source code (version 0.12.1)
# tar xvfz mediatomb-0.12.1.tar.gz # cd mediatomb-0.12.1 # patch -p0 < mediatomb-seek.patch # ./configure --prefix=/usr/local/mediatomb-0.12.1 --disable-sqlite3 # make # make install
bug fix
promblem 1
../src/zmm/object.h:51:32: エラー: declaration of ‘operator new’ as non-function static void* operator new (size_t size);
src/zmm/object.h
#include <new> // for size_t +#include <cstddef> #include "atomic.h"
promblem 2
../src/hash/dbo_hash.h:109:21: エラー: ‘search’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] if (! search(key, &slot)) ^ ../src/hash/dbo_hash.h:109:21: 備考: declarations in dependent base ‘DHashBase<int, dbo_hash_slot<int, AutoscanInotify::Wd> >’ are not found by unqualified lookup ../src/hash/dbo_hash.h:109:21: 備考: use ‘this->search’ instead
他にも類似エラー多発. 「use ‘this->search’ instead」に従って、「search」を「this->search」へ置換。 対象ファイルは下記の3つ
src/hash/dbo_hash.h
src/hash/dbr_hash.h
src/hash/dso_hash.h
promblem 3
../upnp/src/genlib/net/http/webserver.c:336:16: 警告: ‘gMediaTypes’ は静的ですが、静的ではないインライン関数 ‘get_content_type’ 内で使用されます type = gMediaTypes[APPLICATION_INDEX];
tombupnp/upnp/src/genlib/net/http/webserver.c
-XINLINE int +static XINLINE int get_content_type( IN const char *filename, OUT DOMString * content_type )
configuration
MySQLにmediatombのdatabaseを作成、ユーザと権限の設定を行う。
$ mysql -u root -p mysql mysql> create database mediatomb mysql> grant all on mediatomb.* to 'mediatomb'@'localhost' identified by 'mediatomb';
$ mysql -u mediatomb -p mediatomb < /usr/local/share/mediatomb/mysql.sql
mediatomb を起動すると、~/.mediatomb/ ディレクトリに適切なconfig.xml が作成される.
このファイルに databaseのパスワード他、必要な設定を追加/修正を行う
# su - mediatomb -c "/usr/local/mediatomb-0.12.1/bin/mediatomb -i $IPADDRESS -p $PORT -d"
--- config.xml.dist 2017-10-09 11:01:30.000000000 +0900 +++ config.xml 2017-10-09 11:38:28.000000000 +0900 @@ -14,10 +14,11 @@ <mysql enabled="yes"> <host>localhost</host> <username>mediatomb</username> + <password>mediatomb</password> <database>mediatomb</database> </mysql> </storage> - <protocolInfo extend="no"/><!-- For PS3 support change to "yes" --> + <protocolInfo extend="yes"/><!-- For PS3 support change to "yes" --> <!-- Uncomment the lines below to get rid of jerky avi playback on the DSM320 or to enable subtitles support on the DSM units @@ -44,6 +45,8 @@ </extended-runtime-options> </server> <import hidden-files="no"> + <filesystem-charset>UTF-8</filesystem-charset> + <metadata-charset>CP932</metadata-charset> <scripting script-charset="UTF-8"> <virtual-layout type="builtin"/> </scripting> @@ -69,9 +72,17 @@ <map from="mkv" to="video/x-matroska"/> <map from="mka" to="audio/x-matroska"/> <!-- Uncomment the line below for PS3 divx support --> - <!-- <map from="avi" to="video/divx"/> --> + <map from="avi" to="video/divx"/> <!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 --> <!-- <map from="avi" to="video/avi"/> --> + <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="mpg" to="video/mpeg"/> + <map from="m2t" to="video/mpeg"/> + <map from="m2ts" to="video/mpeg"/> </extension-mimetype> <mimetype-upnpclass> <map from="audio/*" to="object.item.audioItem.musicTrack"/>
case of sony
make
make binary from the source code (version 0.12.1)
# tar xvfz mediatomb-0.12.1.tar.gz # cd mediatomb-0.12.1 # patch -p0 < mediatomb-0_12_1_bravia_support_0_1_patch.txt # patch -p0 < mediatomb-seek.patch ... Hunk #2 FAILED at 328. 1 out of 2 hunks FAILED -- saving rejects to file src/transcoding/transcode_ext_handler.cc.rej ...
パッチが競合するので、手作業でパッチをあてる
Index: src/transcoding/transcode_ext_handler.cc =================================================================== --- src/transcoding/transcode_ext_handler.cc (revision 2102) +++ src/transcoding/transcode_ext_handler.cc (working copy) @@ -327,8 +328,12 @@ } chmod(fifo_name.c_str(), S_IWUSR | S_IRUSR); - - arglist = parseCommandLine(profile->getArguments(), location, fifo_name); + + if (seek_pos < 0) { + log_debug("Warning: negative seek %f requested, ignoring\n", seek_pos); + seek_pos = 0; + } + arglist = parseCommandLine(profile->getArguments(), location, fifo_name, seek_pos); log_info("Arguments: %s\n", profile->getArguments().c_str()); Ref<TranscodingProcessExecutor> main_proc(new TranscodingProcessExecutor(profile->getCommand(), arglist));
# ./configure --prefix=/usr/local/mediatomb-0.12.1 --disable-sqlite3 # make # make install
---
update at 2018/07/13 09:29:57
※注:当サイトは特定環境において確認できた事象のみを記述しています。他の環境での動作は一切保証しません。