Home.

Technik-Blog

Willkommen auf meinem
Notiz - Blog
Blog

Kmoser's Tech-Blog

Sonntag
04
Mai 2014

Ubuntu 14.04 - DLNA - MediaTomb

Bin zwischenzeilich zu einer anderen Lösung gekommen mit der ich jetzt sehr zufrieden bin. Einfach einen Raspberry Pi nehmen und Kodi installieren. Dann reichen auch normale Dateifreigaben per NFS oder SMB um die eigene Mediensammlung abzuspielen.

DLNA (Digital Living Network Alliance) ist ein Standard für Geräte in der digitalen Unterhaltungselektronik, mit dem es möglich ist unterschiedliche Geräte mit Multimedia-Inhalten zu versorgen.

Unter Ubuntu gibt es eine ganze Reihe freier und kommerzieller DLNA Server. In diesem Beitrag werde ich den DLNA Server MediaTomb testen. Dieser Server wird wohl nicht mehr weiterentwickelt (Projektseite). Laut ChangeLog war die letzte Änderung 2010.

Eine gute Anleitung gibt es wie immer unter ubuntuusers.de.

Installation

Die Installation ist sehr einfach aus den offiziellen Quellen möglich:

sudo apt-get install mediatomb

Konfiguration

Die Konfiguration erfolgt in der Datei /etc/mediatomb/config.xml, welche im XML Format vorliegt und ist etwas anspruchsvoller als z.B. bei minidlna oder ushare.

sudo nano /etc/mediatomb/config.xml

In der Konfigurationsdatei kann man ziemlich viel konfigurieren. Als wichtigste Einstellung legt man den Basispfad der Mediendateien unter config > server > home fest. Also z.B.

<home>/media/data/mediafiles</home>

Umlautprobleme

In der Standardkonfiguration werden Dateinamen mit Umlauten am ersten Umlaut abgeschnitten. Die Lösung hierfür war aber schnell gefunden. Die folgenden Zeilen müssen zusätzlich in die config > import - Sektion in der Konfigurationsdatei /etc/mediatomb/config.xml

<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>

Danach muss außerdem die Datenbank neu erstellt werden.

Datenbank neu erzeugen

Falls man man die Datenbank neu erzeugen lassen will muss man den Server stoppen

sudo service mediatomb stop

Dann benennt man die alte DB-Datei um. Der Pfad zu der Datei mediatomb.db ist in der der Konfigurationsdatei /etc/mediatomb/config.xml unter

config > server > home

definiert.

cd /var/lib/mediatomb/
sudo mv mediatomb.db mediatomb.db.bak

Startet man jetzt den Server jetzt neu, wird eine neue leere Datenbank angelegt. Hat man keine Verzeichnisse die überwacht werden sollen in der Konfiguration definiert, muss man diese noch über das Web-Interface hinzufügen. Damit ist die Datenbank neu erzeugt.

Verzeichnisse festlegen

Verzeichnisse mit Multimedia-Inhalten kann man entweder über die Web-Oberfläche hinzufügen oder direkt in der Konfigurationsdatei festlegen indem man folgende Zeilen in die <import> - Sektion hinzufügt.

<autoscan use-inotify="auto">
<directory location="/home/media" mode="inotify" recursive="yes" hidden-files="no"/>
</autoscan>

Damit wird das Verzeichnis /home/media und dessen Unterverzeichnisse mittels inotify zu den Autoscan Verzeichnissen hinzugefügt.

Firewall

Sollte eine Firewall auf dem Server aktiv sein, müssen folgende Ports freigeschalten werden:

Weboberfläche

Die Weboberfläche kann man aktivieren indem man in der Konfigurationsdatei das Attribut

ui enabled="yes"

unter config > server > ui setzt. Über die Weboberfläche kann man weitere zu scannende Verzeichnisse festlegen.

Port Protokoll Richtung
1900 TCP beide
1900 UDP beide
49152 TCP beide

Praxis

Auf meinem Samsung UE55H6290 lassen sich mp3s abspielen und es werden auch die AlbumArt Thumbs angezeigt. Vorwärts und rückwärts spulen lässt sich jedoch nicht. Mit BubbleUPNP auf einem Android Gerät funktioniert das Springen innerhalb von mp3 Tracks.

Fehlersuche

Für die Fehlersuche empfiehlt es sich das Log unter /var/log/mediatomb.log im Auge zu behalten:

tail -f /var/log/mediatomb.log

Außerdem kann man mediatomb auch manuell starten und die Debug-Ausgabe aktivieren. Vorher deaktiviert man den Service und führt mediatomb dann über die Kommandozeile aus.

sudo service mediatomb stop
sudo mediatomb -D -u mediatomb -c /etc/mediatomb/config.xml

Das startet mediatomb mit der Konfiguration unter /etc/mediatomb/mediatomb.xml (-c) und mit dem Benutzer mediatomb (-u) und gibt zusätzlich Debug Infos aus (-D).

Auf diese Weise konnte ich feststellen, dass die Abstürze von mediatomb beim Abspielen von Medien-Inhalten verursacht wurden von der Einstellung <mark-played-items> in der Konfigurationdatei. Siehe dazu auch den Bugreport auf launchpad.net.

Fügt man einen Content - Typ innerhalb der <mark-played-items> - Sektion in der Konfigurationsdatei hinzu stürzt mediatomb nicht mehr ab:

<mark-played-items enabled="yes" suppress-cds-updates="yes">
  <mark>
    <content>video</content>
  </mark>
  <string mode="prepend">*</string>
</mark-played-items>

Da diese Funktion tatsächlich nur richtig Sinn bei z.B. TV-Serien macht, habe ich diese auch nur für Video aktiviert.

Transcoding

Script

INPUT="$1"
OUTPUT="$2"
VIDEO_CODEC="mpeg2video"
VIDEO_BITRATE="4096k"
AUDIO_CODEC="mp2"
AUDIO_BITRATE="192k"
AUDIO_SAMPLERATE="48000"
AUDIO_CHANNELS="2"
FORMAT="dvd"
exec /usr/bin/ffmpeg -threads 2 -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \
-acodec ${AUDIO_CODEC} -ab ${AUDIO_BITRATE} -ar ${AUDIO_SAMPLERATE} -ac  {AUDIO_CHANNELS} \
-f ${FORMAT} - > "${OUTPUT}" #2>/dev/null

bla

avconv -i - -codec:v libx264 -s vga -preset ultrafast -f mpegts -codec:a libmp3lame -ac 2 -y OUTFILE

bla

<transcoding enabled="yes">
  <mimetype-profile-mappings>
    <transcode mimetype="video/x-matroska" using="video-common"/>
  </mimetype-profile-mappings>
  <profiles>
    <profile name="video-common" enabled="yes" 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="mediatomb-transcode-video-ffmpeg" arguments="%in %out"/>
      <buffer size="10485760" chunk-size="262144" fill-size="524288"/>
    </profile>
  </profiles>
</transcoding>

bla

Parameter Erklärung
-i Lesen von stdin
-codec:v libx264 Benutze den libx264 Codec für die Videoausgabe
-s vga Erzeuge eine Ausgabe in VGA Größe (in a bid to lower computation cost) (qvga, vga, svga)
-preset ultrafast Argument für den libx264 Codec der bestimmt lieber schnell als genau zu sein
-f mp4 Ausgabeformat ist mp4
-codec:a libmp3lame Audio in mp3 kodieren
-ac 2 benutze die ersten beiden Audiokanäle und verwerfe den Rest (x264 doesn't handle >2 audio channels)
-y Überschreiben ohne zu fragen. Ohne kann der Prozess in mediatomb hängen bleiben.

Fazit

 

Ähnliches gilt für uShare. Er ist recht einfach zu installieren nur es fehlen einfach die Zusatzfunktionen, insbesondere auch wieder das Transcoding.

Mediatomb ist der vielseitigste freie DLNA Server mit einem hohen Funktionsumfang. Dafür verlangt er auch ein bisschen mehr Konfigurationsaufwand. Mit der Standardkonfiguration kann man aber schon gut leben, sofern man mal den Bug mit den Abstürzen im Griff hat. Leider scheint mediatomb nicht mehr weiterentwickelt zu werden. Die letzten Änderungen waren 2010. Sehr schade...