[V] DLNA Server – ps3mediaserver

Die ps3mediaserver Installation

Nachdem der Rechner an sich jetzt läuft, machen wir uns daran, den DLNA Server zu installieren.

Ich habe mich hier für den ps3mediaserver entschieden und nicht für Twonkyserver oder Mediatomb.
Twonkyserver kostet Kohle und mediatomb kann nicht transcoden im headless Mode.
Bringt uns also beides nichts.

Der ps3mediaserver ist ein einfaches Java Paket, das auf ein paar Linux Binaries zugreift um die abzuspielenden Datein lesen zu können.
Im Prinzip wird der mplayer gestartet und das was dort rauskommt wird an die Playststion gestreamt.

Also müssen wir nur den mplayer ans laufen kriegen und das Java Paket mit ein wenig Konfiguration starten.
Damit wir aber die volle Power unserer 4 (virtuellen) Kerne nutzen können, müssen wir die mplayer Binary aber von Hand mit multithreading Support kompilieren.

mplayer Multithreading
Multithreading ist im eigentlichen mplayer nicht drin.
Es gibt aber eine spezielle ffmpeg-mt Multithreading Version die man nutzen kann.

Falls durch irgendwelche Abhängigkeiten bei euch der mplayer oder ffmpeg installiert wurde, ist jetzt ein guter Zeitpunkt die Sachen zu deinstallieren.

apt-get remove mplayer ffmpeg libswscale0

Dann ffmpeg-mt kompilieren

git clone http://git.gitorious.org/ffmpeg/ffmpeg-mt.git (das dauert ein wenig)
cd ffmpeg-mt/
rm -rf libswscale/
git clone git://git.mplayerhq.hu/libswscale
./configure –enable-gpl –enable-shared
make && make install

Jetzt die mplayer Sourcen ziehen und die ffmpeg-mt Sourcen vom ffmpeg ins mplayer Verzeichnis kopieren.
Wenn man diesen jetzt kompiliert, hat man die Multithreading Version.
Die Binaries kommen dann nach /usr/local/bin

cd /root/installation
wget http://www.mplayerhq.hu/MPlayer/releases/mplayer-export-snapshot.tar.bz2
bunzip2 mplayer-export-snapshot.tar.bz2
tar xvf mplayer-export-snapshot.tar
rm -f mplayer-export-snapshot.tar.bz2
cd mplayer-export-2010-10-29/ffmpeg/
rm -rf libavcodec libavformat libavutil
cp -a ../../ffmpeg-mt/libavcodec ../../ffmpeg-mt/libavformat/ ../../ffmpeg-mt/libavutil/ .
./configure
make
cp mencoder mplayer /usr/local/bin/

ps3mediaserver
Wenn der mplayer einmal geht, muss nur noch der ps3mediaserver runtergeladen, konfiguriert und gestartet werden.
Das Programm bekommt man unter http://code.google.com/p/ps3mediaserver/downloads/list

Ab hier arbeiten wir mit unserem normalen User, nicht mehr mit root.
Bei mir ist das angelone.
Benutzt direkt meine PMS.conf und WEB.conf, dann sind alle Einstellungen soweit schonmal voreingestellt und Ihr habt die digitallyimported Shoutcast Streams im Webradio.

Die Installation geht wie folgt
Die Versionsnummern ändern sich natürlich mit der Zeit:

cd /home/angelone
wget http://ps3mediaserver.googlecode.com/files/pms-generic-linux-unix-1.20.412.tgz
tar xvfz pms-generic-linux-unix-1.20.412.tgz
cd pms-linux-1.20.412/
rm WEB.conf
wget http://www.myangelone.de/files/WEB.conf
wget http://www.myangelone.de/files/PMS.conf

In PMS.conf müsst Ihr in der ersten Zeile das Homedir des PMS anpassen auf eures.
Und weiter unten habe ich “network_interface = eth0”, dass müsst Ihr ändern auf das Interface, auf das Ihr streamen wollt, also wlan0 oder eth0.
Es geht leider nur 1 pro PMS Instanz.
Man kann den aber wohl 2x starten, kopiert euch dafür das ganze Programmverzeichnis und ändert im neuen die Config auf das andere Interface.
Die Config ist blöderweise gar nicht dokumentiert, da muss man etwas spielen.
Oder den PMS mit GUI auf dem Desktop starten, alles einstellen und dann die PMS.conf auf den DLNA Server kopieren.

An dem Punkt seit Ihr jetzt fertig.
Der PMS muss jetzt nur noch gestartet werden und wenn euer Netzwerk korrekt konfiguriert ist, taucht der auf der PS3 im XMB auf.

Damit der PMS immer läuft, behelfe ich mir mit dem Programm “screen”.
Mittels screen kann man eine virtuelle Console aufmachen und das Terminal danach schliessen.
Der Vorteil hier im Gegensatz zu der Variante, dass man den PMS als Service startet ist, dass man sehen kann, was das Teil so tut.
Der Nachteil ist, dass man den PMS nach einem Reboot von Hand starten muss.

Das geht wie folgt (alles als normaler User):

screen
cd /home/angelone/pms-linux-1.20.412/
./PMS.sh

An dem Punkt läuft alles.
Man kann diese virtuelle Console jetzt mit
CTRL+A D
Verlassen und ist wieder in der normalen Console.

Man kommt per “screen -r” wieder in die Console rein.
Der erste Start dauert ein wenig, weil der PMS sich eine Bibliothek mit den im Userdir vorhandenen Mediendateien anlegt.

Benutzung

Man kann jetzt auf der Playstation durch die Ordner browsen und die Videos abspielen.

In jedem Ordner ist oben ein #–TRANSCODE–# Ordner.
Das ist ein virtueller Ordner in dem man zu jedem Videofile die Transcoding Einstellungen einzeln anwählen kann.
Hat man z.B. eine .mkv mit deutschem und englischem Ton, kann man über den Transcode Ordner auswählen, welchen Ton man abspielen will.
Das selbe mit Untertiteln.

Es gibt dann so ähnliche Einträge:

[Mencoder] {Audio: mp3/Sub: SSA ENG}
[Mencoder] {Audio: mp3/Sub: SSA JAP}

Man startet das Video mit den gewünschen Einstellungen dann über den jeweiligen Eintrag.

Wenn das nicht stimmt, kann man in der screen Console gucken wo das Problem liegt.
Meist schmiert der mencoder Thread ab aus irgend einem Grund.
In dem Fall hilft meist das beenden und neustarten des PMS per CTRL+C und ./PMS.sh
Das Programm ist bei weitem nicht perfekt, aber ich bin damit bisher ganz gut gefahren.

Was auf jeden Fall eher mangelhaft funktioniert ist das Szenenbrowsen über die Quadrattaste der Playstation.
Hier schmiert der PMS regelmässig ab.
Irgendwann wird das auch mal gefixed.

Wenn Ihr irgend ein Videoformat nicht abspielen könnt, dannliegt das am mplayer.
In dem Fall muss der mplayer neukompiliert werden mit dem passenden Codec.
Dazu gibt es eigentlich immer irgendwo ein Tutorial im Internet.

Ob das Multithreading funktioniert seht Ihr, indem Ihr wärend der Wiedergabe eines Videos einen Processviewer wie “top” aufmacht.
Da muss dann irgendwo ein mencoder Thread sein, der mehr als 100% CPU nutzt.

Viel Spass mit eurem neuen DLNA Server!