media tomb aufsetzen
Nachdem ich schon seit einiger Zeit eine PS3 besitze machte ich mich auf die Suche nach einem dazu passendem Media Server, der unter OpenSUSE 11.0 läuft. Zunächst fiel mir dazu TwonkyVision ein – der kostet allerdings knapp 30€. Beim Googlen sichtete ich media tomb, der Streaming Server ist kostenlos und über das packman-Repository stehen auch fertige Pakete für OpenSUSE 11.0 bereit.
Es wird natürlich eine Datebank für den Mediaserver benötigt. Ich bevorzuge hier MySQL aus Performancegründen. Falls noch nicht geschehen muß also zunächst die MySQL-Datenbank installiert werden und der Autostart per rc-Skripte eingerichtet werden. Das gleiche gilt für media tomb. Hier muß noch das zusätzliche Paket zur MySQL-Unterstützung bei der Installation mit ausgewählt werden.
Zunächst also den MySQL-Dienst starten:
/etc/init.d/mysql start
Danach muß man eine Datenbank samt zugehörigen User im MySQL anlegen.
mysql -p -u root mysql> CREATE DATABASE mediatomb; mysql> GRANT ALL ON mediatomb.* TO 'mediatomb'@'localhost';
Danach muß die Konfigurationsdatei /etc/mediatomb.conf für das Startskript bearbeitet werden.
## This is a sambel configuration file for the MediaTomb daemon script ## used on Fedora Core ## By default the configuration will be created in /etc/mediatomb ## Network interface on which the server will run, you need to edit this! MT_INTERFACE="eth0" ## User defined command line options that may be passed to the server MT_OPTIONS="" ## MediaTomb will be started on port 50500 MT_PORT="50500" ## MediaTomb will run as mediatomb MT_USER="mediatomb" MT_GROUP="mediatomb" ## Location of the PID file MT_PIDFILE="/var/run/mediatomb.pid" ## Location of the log file MT_LOGFILE="/var/log/mediatomb" ## Location of the config file/database MT_HOME="/etc" MT_CFGDIR="mediatomb"
Der Name für das Standard-Netzwerkinterface muß eingetragen werden, der Rest kann auf Default bleiben.
Im Anschluß muß die Konfigurationsdatei /etc/mediatomb/config.xml für media tomb angepaßt werden.
Datenbanktyp auf MyQSL einstellen:
<storage> <sqlite3 enabled="no"> <database-file>mediatomb.db</database-file> </sqlite3> <mysql enabled="yes"> <host>localhost</host> <username>mediatomb</username> <database>mediatomb</database> </mysql> </storage>
PS3-Unterstützung aktivieren:
<protocolInfo extend="yes"/><!-- For PS3 support change to "yes" -->
Unterstützung für Umlaute in Dateinamen aktivieren (Unicode-Zeichensatz UTF-8):
<import hidden-files="no">
<scripting script-charset="UTF-8">
<common-script>/usr/share/mediatomb/js/common.js</common-script>
<playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
<virtual-layout type="builtin">
<import-script>/usr/share/mediatomb/js/import.js</import-script>
</virtual-layout>
</scripting>
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>
AVI-Playback für PS3 ermöglichen:
<!-- Uncomment the line below for PS3 divx support --> <map from="avi" to="video/x-divx"/>
Das Startskript /etc/init.d/mediatomb enthält 2 Fehler. Diese müssen korrigiert werden, damit der Dienst korrekt starten kann.
...
case "$1" in start) # Start daemon. echo -n "Applying multicast settings to $MT_INTERFACE... " # those settings are necessary for us to react to M-SEARCH requests route add -net 239.0.0.0 netmask 255.0.0.0 $MT_INTERFACE >/dev/null 2>&1 ifconfig $MT_INTERFACE allmulti touch $MT_PIDFILE chown $MT_USER $MT_PIDFILE mkdir -p "/$MT_HOME/$MT_CFGDIR" chown $MT_USER "/$MT_HOME/$MT_CFGDIR" ...
Danach kann der media tomb – Dienst gestartet werden:
/etc/init.d/mediatomb start
Jetzt ist es wichtig das Startprotokoll /var/log/mediatomb auf Fehlermeldungen oder Warnungen zu prüfen:
2008-10-18 20:11:13 INFO: Loading configuration from: /etc/mediatomb/config.xml 2008-10-18 20:11:13 INFO: Checking configuration... 2008-10-18 20:11:13 INFO: Setting filesystem import charset to UTF-8 2008-10-18 20:11:13 INFO: Setting metadata import charset to UTF-8 2008-10-18 20:11:13 INFO: Setting playlist charset to UTF-8 2008-10-18 20:11:13 INFO: Configuration check succeeded. 2008-10-18 20:11:13 INFO: database doesn't seem to exist. automatically creating database... 2008-10-18 20:11:13 INFO: database created successfully. 2008-10-18 20:11:13 INFO: Initialized port: 50500 2008-10-18 20:11:13 INFO: Server bound to: 192.168.178.2 2008-10-18 20:11:14 INFO: MediaTomb Web UI can be reached by following this link: 2008-10-18 20:11:14 INFO: http://192.168.178.2:50500/
Jetzt kann die Bedienoberfläche von media tomb im Browser unter der zuvor im Log genannten URL geöffnet werden. Hier im Beispiel ist das http://192.168.178.2:50500 (die IP-Adresse variiert natürlich, der Port 50500 ist Standard bei OpenSUSE).
Zunächst muß ein Ordner mit Mediendateien angegeben werden, der darauf indiziert wird. Mann kann dabei einstellen ob das regelmäßig oder event-basierend wiederholt werden soll.
Danach läuft die Indizierung und man kann bald darauf in der Datenbank stöbern.
Nun kann man mit der Playstation 3 als Streaming Client Musik und Videos vom heimischen PC geniessen!
media tomb tunen
Leider unterstützt die PS3 nicht alle gebräuchlichen Audio/Video-Formate. Man kann allerdings den PC nutzen der PS3 unbekannte Formate vor dem Streamen umzuwandeln. Genutzt wird dazu z.B. das Tool ffmeg. Danach können ts-Dateien vom SAT-Receiver, Matroska-Videos und viele weitere Formate auf der PS3 abgespielt werden. Der einzige Nachteil bei transkodierten Streams ist, daß Standardfunktionen wie Pause, sowie Vor- und Rücklauf nicht funktionieren. Es gibt hier nur Start und Stop…
Zunächst 2 Skripte anlegen:
Datei /usr/bin/mediatomb-transcode-audio:
#!/bin/bash
FFMPEG_PATH="/usr/bin/ffmpeg"
INPUT="$1"
OUTPUT="$2"
VIDEO_CODEC="mpeg2video"
VIDEO_BITRATE="4096k"
VIDEO_FRAMERATE="25"
AUDIO_CODEC="mp2"
AUDIO_BITRATE="192k"
AUDIO_SAMPLERATE="44100"
AUDIO_CHANNELS="2"
FORMAT="dvd"
exec "${FFMPEG_PATH}" -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \
-r ${VIDEO_FRAMERATE} -acodec ${AUDIO_CODEC} -ab ${AUDIO_BITRATE} -ar ${AUDIO_SAMPLERATE} \
-ac ${AUDIO_CHANNELS} -f ${FORMAT} - > "${OUTPUT}" 2>/dev/null
Datei /usr/bin/mediatomb-transcode-video:
#!/bin/bash
FFMPEG_PATH="/usr/bin/ffmpeg"
INPUT="$1"
OUTPUT="$2"
VIDEO_CODEC="mpeg2video"
VIDEO_BITRATE="4096k"
VIDEO_FRAMERATE="25"
AUDIO_CODEC="mp2"
AUDIO_BITRATE="192k"
AUDIO_SAMPLERATE="44100"
AUDIO_CHANNELS="2"
FORMAT="dvd"
exec "${FFMPEG_PATH}" -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \
-r ${VIDEO_FRAMERATE} -acodec ${AUDIO_CODEC} -ab ${AUDIO_BITRATE} -ar ${AUDIO_SAMPLERATE} \
-ac ${AUDIO_CHANNELS} -f ${FORMAT} - > "${OUTPUT}" 2>/dev/null
Danach könnte eine Beispielkonfiguration so aussehen:
Datei /etc/mediatomb/config.xml:
<?xml version="1.0" encoding="UTF-8"?> <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"> <server> <ui enabled="yes"> <accounts enabled="no" session-timeout="30"> <account user="mediatomb" password="mediatomb"/> </accounts> </ui> <name>MediaTomb</name> <udn>uuid:52462652-2310-4790-bf19-fd00fefcec24</udn> <home>/etc/mediatomb</home> <webroot>/usr/share/mediatomb/web</webroot> <storage> <sqlite3 enabled="no"> <database-file>mediatomb.db</database-file> </sqlite3> <mysql enabled="yes"> <host>localhost</host> <username>mediatomb</username> <database>mediatomb</database> </mysql> </storage> <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 --> <!-- <custom-http-headers> <add header="X-User-Agent: redsonic"/> </custom-http-headers>
<manufacturerURL>redsonic.com</manufacturerURL>
<modelNumber>105</modelNumber>
-->
<!-- Uncomment the line below if you have a Telegent TG100 -->
<!--
<upnp-string-limit>101</upnp-string-limit>
-->
</server>
<import hidden-files="no">
<scripting script-charset="UTF-8">
<common-script>/usr/share/mediatomb/js/common.js</common-script>
<playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
<virtual-layout type="builtin">
<import-script>/usr/share/mediatomb/js/import.js</import-script>
</virtual-layout>
</scripting>
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>
<mappings>
<extension-mimetype ignore-unknown="no">
<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="m3u" to="audio/x-mpegurl"/>
<map from="pls" to="audio/x-scpls"/>
<map from="flv" to="video/x-flv"/>
<!-- Uncomment the line below for PS3 divx support -->
<map from="avi" to="video/divx"/>
<map from="divx" to="video/divx"/>
<map from="vob" to="video/divx"/>
<map from="mkv" to="video/x-matroska"/>
<map from="mov" to="video/divx"/>
<map from="qt" to="video/divx"/>
<map from="ts" to="video/divx"/>
<map from="mpeg" to="video/divx"/>
<map from="mpg" to="video/divx"/>
<!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
<!-- <map from="avi" to="video/avi"/> -->
</extension-mimetype>
<mimetype-upnpclass>
<map from="audio/*" 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"/>
<treat mimetype="audio/x-mpegurl" as="playlist"/>
<treat mimetype="audio/x-scpls" as="playlist"/>
<treat mimetype="audio/x-wav" as="pcm"/>
<treat mimetype="audio/L16" as="pcm"/>
<treat mimetype="video/x-msvideo" as="avi"/>
<treat mimetype="video/divx" as="avi"/>
<treat mimetype="video/vob" as="avi"/>
</mimetype-contenttype>
</mappings>
</import>
<transcoding enabled="yes">
<mimetype-profile-mappings>
<transcode mimetype="application/ogg" using="audio-common"/>
<transcode mimetype="application/ogg" using="video-common"/>
<transcode mimetype="audio/x-flac" using="audio-common"/>
<transcode mimetype="video/x-flv" using="video-common"/>
<transcode mimetype="video/divx" using="video-common"/>
<transcode mimetype="video/vob" using="video-common"/>
<transcode mimetype="video/x-matroska" using="video-common"/>
</mimetype-profile-mappings>
<profiles>
<profile name="audio-common" enabled="yes" type="external">
<mimetype>audio/L16</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<agent command="mediatomb-transcode-audio" arguments="%in %out"/>
<buffer size="1048576" chunk-size="131072" fill-size="262144"/>
</profile>
<profile name="video-common" enabled="yes" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command="mediatomb-transcode-video" arguments="%in %out"/>
<buffer size="10485760" chunk-size="262144" fill-size="524288"/>
</profile>
<profile name="oggflac2raw" enabled="no" type="external">
<mimetype>audio/L16</mimetype>
<accept-url>no</accept-url>
<first-resource>yes</first-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<agent command="ogg123" arguments="-d raw -f %out %in"/>
<buffer size="1048576" chunk-size="131072" fill-size="262144"/>
</profile>
<profile name="vlcmpeg" enabled="no" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,
ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ts,dst=%out} vlc:quit"/>
<buffer size="1048576" chunk-size="131072" fill-size="262144"/>
</profile>
</profiles>
</transcoding>
</config>
Nach dem Anpassen der Konfiguration muß media tomb neu gestartet werden. Ebenso müssen die zugewiesenen Verzeichnisse in der datenbank gelöscht und neu eingelesen werden.
Anregungen zur Konfiguration gibt es hier:
http://mediatomb.cc/pages/documentation_overview
http://mediatomb.cc/dokuwiki/faq:faq
http://blog.raczylo.com/archives/467/playstation-3-i-filmy-z-komputera
http://volatileint.blogspot.com/2008/08/using-playstation3-as-media-center-with_30.html


Ich habe das ganze noch unter opensuse10.3 probiert und festgestellt, dass das Startscript unter /etc/init.d/mediatomb ggf. angepasst werden muss. Das PID-File sollte mit dem User “mediatomb” angelegt werden ebenso das ConfDir. Per default ist der User nobody eingetragen, was dazu führt, dass der deamon nicht startet weil er keine Berechtigung auf o.g. Files hat.
Änderung im Startscript:
chown nobody $MT_PIDFILE” > chown $MT_USER $MT_PIDFILE
chown nobody “/$MT_HOME/$MT_CFGDIR” > chown $MT_USER “/$MT_HOME/$MT_CFGDIR”
Jetzt sollte sich das ganze auch starten und via yast per Runleveledit eintragen lassen.
Gruß,
ast.
Nachtrag: “>” bedeutet in diesem Fall natürlich ändern in
Da kann ich nur zustimmen, es ist unter OpenSUSE 11.0 nicht anders. Das war mir beim Schreiben des Artikels aber schon wieder entfallen…
Ansonsten noch eine kleine Anmerkung:
Die Zuordnung der mime-types, etc. ist wirklich “quick & dirty” im obigen Beispiel. Es funktioniert zwar, aber schön und durchdacht sieht anders aus
Vor allem sollte sich das prinzipiell auch so konfigurieren lassen, daß nicht alle mime-types transcodiert werden, sondern nur die, die die PS3 nicht verarbeiten kann. Dazu hatte ich aber bisher weder Zeit noch Lust.
Falls jemand eine durchdachtere Konfiguration finden sollte bitte Bescheid geben
Problem bei mediatomb bei /var/log/mediatomb
Hab ich ein Problem:
2008-11-30 18:50:16 INFO: Loading configuration from: /etc/mediatomb/config.xml
2008-11-30 18:50:16 INFO: UUID generated: f55d351a-ffff-400e-b23f-a4ac4e5bf832
2008-11-30 18:50:16 INFO: Checking configuration…
2008-11-30 18:50:16 INFO: Setting filesystem import charset to ANSI_X3.4-1968
2008-11-30 18:50:16 INFO: Setting metadata import charset to ANSI_X3.4-1968
2008-11-30 18:50:16 INFO: Setting playlist charset to ANSI_X3.4-1968
2008-11-30 18:50:16 INFO: Configuration check succeeded.
2008-11-30 18:50:16 ERROR: Could not write pid file /var/run/mediatomb.pid : Permission denied
2008-11-30 18:52:28 INFO: Loading configuration from: /etc/mediatomb/config.xml
2008-11-30 18:52:28 INFO: Checking configuration…
2008-11-30 18:52:28 INFO: Setting filesystem import charset to ANSI_X3.4-1968
2008-11-30 18:52:28 INFO: Setting metadata import charset to ANSI_X3.4-1968
2008-11-30 18:52:28 INFO: Setting playlist charset to ANSI_X3.4-1968
2008-11-30 18:52:28 INFO: Configuration check succeeded.
2008-11-30 18:52:28 ERROR: Could not write pid file /var/run/mediatomb.pid : Permission denied
Kann mir jemand weiterhelfen was ich falsch gemacht habe?
Hallo, wie der “ast bereits zuvor erwähnt hat muss noch das Startskript angepasst werden, das nen Bug enthält.
Mit Editor deiner Wahl /etc/init.d/mediatomb bearbeiten:
…
case “$1″ in
start)
# Start daemon.
echo -n “Applying multicast settings to $MT_INTERFACE… ”
# those settings are necessary for us to react to M-SEARCH requests
route add -net 239.0.0.0 netmask 255.0.0.0 $MT_INTERFACE >/dev/null 2>&1
ifconfig $MT_INTERFACE allmulti
touch $MT_PIDFILE
chown $MT_USER $MT_PIDFILE
mkdir -p “/$MT_HOME/$MT_CFGDIR”
chown $MT_USER “/$MT_HOME/$MT_CFGDIR”
…
Hallo.
Ich habe ein Problem mit Umlauten. Der Name wird dann nicht korrekt angezeigt, endet eben beum ersten Umlaut mit “?”. (Bsp: Herr der Ringe – Die R?”)
Gut, folgende Ergänzung habe ich hier, wie auch in einem anderen Beispielscript gefunden:
UTF-8
UTF-8
UTF-8
Prima, die Namen werden dann auch korrekt angezeigt, aber die Videos lassen sich dann nciht mehr abspielen. ^^
Ebenso alle Zusantzinformationen (Dauer, Codecs, etc.) werden unter Informationen nicht mehr angezeigt.
Hat hierfür jemand eine Lösung?
Korrektur (hier wird ja geparst ^^)
filesystem-charset UTF-8 /filesystem-charset
metadata-charset UTF-8 /metadata-charset
playlist-charset UTF-8 /playlist-charset
(Eckige Klammenr dazudenken)
Hast du nach der Änderung deine Datenbank neu erzeugt? Nach jeder relevanten Änderung in der config.xml mußt du die Datenbankinhalte neu erzeugen. D.h. entweder mit Mysql-Mitteln die Tabellen löschen oder in Mediatomb die indizierten Verzeichnisse löschen und neu hinzufügen.
Guten Tag die Damen und Herren
So – nach der Anleitung im System die … also ich bin ein blutiger Linux-Anfänger. Hat eigentlich alles hingehauen, bis auf das Log:
2008-12-12 19:23:09 INFO: Loading configuration from: /etc/mediatomb/config.xml
2008-12-12 19:23:09 INFO: Checking configuration…
2008-12-12 19:23:09 INFO: Setting filesystem import charset to ANSI_X3.4-1968
2008-12-12 19:23:09 INFO: Setting metadata import charset to ANSI_X3.4-1968
2008-12-12 19:23:09 INFO: Setting playlist charset to ANSI_X3.4-1968
2008-12-12 19:23:09 INFO: Configuration check succeeded.
2008-12-12 19:23:09 ERROR: The connection to the MySQL database has failed: mysql_error (1044): “Access denied for user ”@’localhost’ to database ‘mediatomb’”
Da stimmt wohl was nicht so ganz!? Könnte mir da jehmand einen Tip für die Lösung geben?
Mediatomb benutzt in diesem Konfigurationsbeispiel eine Mysql-Datenbank zur Ablage aller Informationen über die Mediendateien. Am Anfang wird deshalb eine neue Mysql-Datenbank namens mediatomb erzeugt, ebenfalls ein User mediatomb (ohne Passwort), der darauf volle Zugriffsrechte bekommt. Wie oben beschrieben solltest du noch in der Datei /etc/mediatomb/config.xml prüfen ob der Zugriff auf die Mysqldatenbank umgestellt ist und auch Name der DB und des Users mediatomb lauten.
Hier findest du Hilfestellungen um das Zugriffsproblem auf die Datenbank zu lösen:
http://dev.mysql.com/doc/refman/5.1/en/access-denied.html
Viel Erfolg!