Inhaltsverzeichnis
DLNA (Digital Living Network Alliance)
DLNA ⇒ Digital Living Network Alliance
⇒ Im Switch bzw. Router muss UPnP aktiviert werden!
DLNA-Server-software
MiniDLNA
MiniDLNA heißt jetzt ReadyMedia (Es wird von einem NETGEAR-Mitarbeiter für die ReadyNAS-Produktlinie entwickelt.)
ServiIO
es benötigt JAVA!
Subsonic
es benötigt JAVA!
Emby
es wird MONO benötigt!
Gerbera
läuft hauptsächlich auf verschiedenen Linux-Distributionen aber auch auf macOS
FreeBSD
MediaTomb + FreeBSD 12
- MediaTomb installieren und konfigurieren von Christoph Hoffmann - 01.03.2012
> pkg install net/mediatomb
...
New packages to be INSTALLED:
mediatomb: 0.12.1_24
gcc8: 8.2.0_4
ffmpegthumbnailer: 2.2.0_8
spidermonkey17: 1.7.0_4
libexif: 0.6.21_4
mysql56-client: 5.6.43
taglib: 1.11.1_2
...
> chown mediatomb:mediatomb /usr/local/etc/mediatomb/config.xml
> vi /usr/local/etc/mediatomb/config.xml
...
<server>
<ui enabled="yes" show-tooltips="yes">
<accounts enabled="yes" session-timeout="30">
...
</server>
...
> service mediatomb restart
Starting mediatomb.
Leider gab es bei mir ein paar Rechte-Probleme, so dass mediatomb keinen Socket aufmachen konnte.
ich hatte keine Lust mehr noch länger nach der Ursache für den Fehler zu suchen (vielleicht später), deshalb habe ich ihn kurzer Hand so gestartet (macht man ja eigentlich nicht):
> /usr/local/bin/mediatomb -d -l /var/log/mediatomb/mediatomb.log -m /Export/mm/ -a /Export/mm/ > netstat -anp tcp | fgrep 49152 tcp4 0 0 *.49152 *.* LISTEN > tail /var/log/mediatomb/mediatomb.log ... 2019-02-01 20:39:57 INFO: Configuration check succeeded. 2019-02-01 20:39:57 INFO: Initialized port: 49152 2019-02-01 20:39:57 INFO: Server bound to: 192.168.1.1 2019-02-01 20:39:58 INFO: MediaTomb Web UI can be reached by following this link: 2019-02-01 20:39:58 INFO: http://192.168.1.1:49152/ 2019-02-01 20:39:58 INFO: Adding /Export/mm/
MediaTomb muss einen Port geöffnet haben, dann kann man seinen Status per HTTP abfragen: http://192.168.1.1:49152
MiniDLNA + FreeBSD 10.1
MiniDLNA (ReadyMedia) und Serviio laufen auch in einer Jail.
MiniDLNA arbeitet leider nur mit einem einzigen Prozess je System, da es den Port 1900 (SSDP-Discovery-Traffic) auf alle IPs (nicht konfigurierbar) öffnet. Um mehrere MiniDLNA-Dienste gleichzeitig auf dem selben System zu betreiben, kann man Jails mit jeweils eigenen IPs benutzen. Mit virtuellen Netzwerkkarten, die über einr Bridge mit der physikalischen Netzwerkkarte verbunden sind, hat es bei mir nicht funktioniert.
ACHTUNG!
leider verursacht inotify Abstürze des Programmes, deshlab ist es sinnvoll es abzuschalten inotify=no und entweder bei neuen Filmen das Programm neu zu starten oder es zyklisch neu zu starten. Hier könnte man eine Variable erhöhen… aber welche?
hier wird es jeden Morgen um 6 Uhr restartet für einen rescan:
# echo "0 6 * * * root service minidlna stop ; sleep 1 ; service minidlna rescan" >> /etc/crontab
Dieses Programm ist sehr einfach, hat aber ein paar Schwächen:
- wenn man mehr als einen MiniDLNA-Server im Netz betreibt, kann es sein, dass man nicht alle findet;
- der MiniDLNA-Server kann nur ein paar Tausend Multimediadateien exportieren;
> mkdir /var/db/minidlna /opt > pkg install net/minidlna > chown dlna:dlna /var/db/minidlna > vi /usr/local/etc/minidlna.conf ... network_interface=sk0 ... #media_dir=/opt # Musik (Audio) media_dir=A,/opt/Audio # Videos media_dir=V,/opt/Video # Bilder media_dir=P,/opt/Video ... friendly_name=MiniDLNA ... uuid=550e8400-e29b-41d4-a716-446655440001 ... > echo 'minidlna_enable="YES"' >> /etc/rc.conf > killall -9 minidlnad > ps alx|fgrep minidlna > service minidlna start > ls -lha /var/db/minidlna/ > tail -f /var/log/minidlna.log hier kann man schön sehen, wie das Verzeichnis bzw. die Verzeichnisse durchsucht und indiziert werden: > top
Um die Datenbank zu aktuallisieren, muß (als "root") ein kompletter ReScan des Verzeichnisses angestoßen werden:
> killall -9 minidlnad ; sleep 1 ; service minidlna rescan > tail -f /var/log/minidlna.log
MiniDLNA muss seinen Port geöffnet haben
# netstat -anp tcp | fgrep 8895 tcp4 0 0 *.8895 *.* LISTEN
dann kann man seinen Status per HTTP abfragen: http://192.168.1.1:8895/
Serviio + FreeBSD 11.1
Dieser DLNA-Server soll alle DLNA-Funktionen unterstützen, er kann auch (im Gegensatz zum MiniDLNA-Server) mit 20000 Multimediadateien gut umgehen.
die Jail bauen
> ezjail-admin create multimedia 192.168.2.206
Multimedia-Verzeichnis anlegen
> mkdir -p /usr/jails/multimedia/mm
…hier wir das Originalverzeichnis mit den Multimediadateien per bind-mount anmontiert
> echo '/PATH/TO/MEDIA /usr/jails/multimedia/mm nullfs ro 0 0' >> /etc/fstab.multimedia > ezjail-admin stop multimedia > ezjail-admin start multimedia
in die Jail wechseln
> ezjail-admin console multimedia
ein paar Basis-Programme installieren
> pkg install shells/bash misc/mc sysutils/screen misc/gnu-watch archivers/unzip ftp/wget converters/base64 net/bmon net-mgmt/iftop
die BASH laden (es arbeitet sich in ihr einfach besser)
# bash ; exit
ggf. einen DLNA-Benutzer anlegen
# pw useradd dlna -m -d /home/dlna
den FFmpeg (Video-Player) konfigurieren
AMR_NB kann aktiviert werden
AMR_WB kann aktiviert werden
ASS muss aktiviert werden! (ASS = Subtitles rendering via libass)
DRM kann aktiviert werden
FDK_AAC sollte aktiviert werden
LAME sollte aktiviert werden
# cd /usr/ports/multimedia/ffmpeg && make config WITH_RTMP=YES WITH_X11GRAB=YES WITH_FAAC=YES WITH_LAME=YES WITH_AMR_NB=YES WITH_AMR_WB=YES
den Portmaster installieren, um Serviio besser installieren zu können
# pkg install graphics/dcraw # pkg install ports-mgmt/portmaster
Serviio installieren (das dauert einige Zeit - auf älteren Systemen ein paar Stunden)
# portmaster net/serviio # chown dlna:dlna /var/log/serviio/serviio.log
# echo 'serviio_enable="YES"' >> /etc/rc.conf # echo serviio_args=\'-Dserviio.advertisementDuration=\"15\" -Dserviio.remoteHost=\"192.168.2.206\"\' >> /etc/rc.conf # echo 'serviio_lang="de_DE.UTF-8"' >> /etc/rc.conf # vi /etc/resolv.conf
Serviio starten
# /usr/local/etc/rc.d/serviio start
# less /var/log/serviio/serviio.log
leider wird aber (wegen eines Fehlers im Start-Stop-Skript) der Status immer als "aus" angezeigt:
# /usr/local/etc/rc.d/serviio status command_args="-Dserviio.advertisementDuration="15" -Dserviio.remoteHost="192.168.2.206" &" serviio is not running
Damit der Status auch richtig ausgegeben wird, muss in der ServiIO-Version 1.9.2 noch eine kleine Anpassung in der Start-Stop-Datei vorgenommen werden.
# vi /usr/local/etc/rc.d/serviio
Es ist diese Zeile so abzuändern
serviio_pid=$(ps -wwwaU ${serviio_user} | awk '/java.*org.serviio.MediaServer/ {print $1}')
das sie so aussieht:
serviio_pid=$(ps -wwwaU ${serviio_user} | awk '/java.*serviio.home/ {print $1}')
Die Änderung ist hier vorzunehmen:
/java.*org.serviio.MediaServer/ /java.*serviio.home/
- /usr/local/etc/rc.d/serviio
#!/bin/sh # $FreeBSD: head/net/serviio/files/serviio.in 371092 2014-10-18 06:28:39Z netchild $ # # PROVIDE: serviio # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following line to /etc/rc.conf[.local] to enable serviio: # # serviio_enable="YES" . /etc/rc.subr name=serviio rcvar=serviio_enable command=/usr/local/sbin/serviiod load_rc_config $name : ${serviio_user="dlna"} if [ -n "${serviio_lang}" ]; then export LANG=${serviio_lang} fi _dirs="/var/db/serviio /var/db/serviio/home /var/log/serviio" start_precmd="mkdir -p $_dirs; chown $serviio_user $_dirs" echo "command_args=\"$serviio_args &\"" command_args="$serviio_args &" stop_cmd="$command -stop" status_cmd=${name}_status serviio_status() { #serviio_pid=$(ps -wwwaU ${serviio_user} | awk '/java.*org.serviio.MediaServer/ {print $1}') serviio_pid=$(ps -wwwaU ${serviio_user} | awk '/java.*serviio.home/ {print $1}') if [ -n "${serviio_pid}" ]; then echo "${name} is running as pid ${serviio_pid}" else echo "${name} is not running" return 1 fi }
Jetzt wird auch angezeigt, dass serviio läuft, wenn es läuft…
# service serviio status serviio is not running # service serviio start Starting serviio. # service serviio status serviio is running as pid 77390
Konfigurationsoberfläche von Serviio
man ruft die IP oder den Hostnamen der Jail mit folgender Ergänzung auf: :23423/console ⇒ http://192.168.2.206:23423/console
> firefox --new-tab http://192.168.2.206:23423/console
Jetzt kann man Serviio in einer schönen Oberfläche konfigurieren, die Sprache der Oberfläche wird rechts oben ausgewählt.
Web-GUI für Serviio
Emby + FreeBSD 12
Emby-Oberfläche zum konfigurieren: http://192.168.1.1:8096
Binär-Installation
Leider gibt es nicht immer für die aktuellste Version ein Binärpaket:
> pkg add -f https://github.com/MediaBrowser/Emby.Releases/releases/download/4.0.1.0/emby-server-freebsd_4.0.1.0_amd64.txz Fetching emby-server-freebsd_4.0.1.0_amd64.txz: 100% 17 MiB 1.4MB/s 00:13 Installing emby-server-4.0.1.0_1... pkg: wrong architecture: FreeBSD:11:amd64 instead of FreeBSD:12:amd64 ===> Creating groups. Using existing group 'emby'. ===> Creating users Creating user 'emby' with uid '989'. pw: user 'emby' disappeared during update pkg: PRE-INSTALL script failed Failed to install the following 1 package(s): https://github.com/MediaBrowser/Emby.Releases/releases/download/4.0.1.0/emby-server-freebsd_4.0.1.0_amd64.txz
Installation aus dem Ports-Tree
glücklicherweise gibt es Emby auch im Ports-tree:
> cd /usr/ports/multimedia/emby-server
> make clean
===> Cleaning for emby-server-3.5.3.0
> make
===> License UNKNOWN accepted by the user
===> emby-server-3.5.3.0 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by emby-server-3.5.3.0 for building
===> Extracting for emby-server-3.5.3.0
=> SHA256 Checksum OK for emby-server-freebsd_3.5.3.0_amd64.tar.xz.
===> Patching for emby-server-3.5.3.0
===> emby-server-3.5.3.0 depends on file: /usr/local/libdata/pkgconfig/x11.pc - found
===> emby-server-3.5.3.0 depends on file: /usr/local/libdata/pkgconfig/xcb.pc - found
===> emby-server-3.5.3.0 depends on shared library: libass.so - found (/usr/local/lib/libass.so)
===> emby-server-3.5.3.0 depends on shared library: libfontconfig.so - found (/usr/local/lib/libfontconfig.so)
===> emby-server-3.5.3.0 depends on shared library: libfreetype.so - found (/usr/local/lib/libfreetype.so)
===> emby-server-3.5.3.0 depends on shared library: libfribidi.so - found (/usr/local/lib/libfribidi.so)
===> emby-server-3.5.3.0 depends on shared library: libgnutls.so - found (/usr/local/lib/libgnutls.so)
===> emby-server-3.5.3.0 depends on shared library: libopus.so - found (/usr/local/lib/libopus.so)
===> emby-server-3.5.3.0 depends on shared library: libsmbclient.so - found (/usr/local/lib/samba4/libsmbclient.so)
===> emby-server-3.5.3.0 depends on shared library: libsqlite3.so - found (/usr/local/lib/libsqlite3.so)
===> emby-server-3.5.3.0 depends on shared library: libtheora.so - found (/usr/local/lib/libtheora.so)
===> emby-server-3.5.3.0 depends on shared library: libva.so - found (/usr/local/lib/libva.so)
===> emby-server-3.5.3.0 depends on shared library: libvorbis.so - found (/usr/local/lib/libvorbis.so)
===> emby-server-3.5.3.0 depends on shared library: libwebp.so - found (/usr/local/lib/libwebp.so)
===> emby-server-3.5.3.0 depends on shared library: libx264.so - found (/usr/local/lib/libx264.so)
===> emby-server-3.5.3.0 depends on shared library: libzvbi.so - found (/usr/local/lib/libzvbi.so)
===> emby-server-3.5.3.0 depends on shared library: libiconv.so - found (/usr/local/lib/libiconv.so)
===> Configuring for emby-server-3.5.3.0
===> Staging for emby-server-3.5.3.0
===> emby-server-3.5.3.0 depends on executable: mono - found
===> emby-server-3.5.3.0 depends on file: /usr/local/libdata/pkgconfig/x11.pc - found
===> emby-server-3.5.3.0 depends on file: /usr/local/libdata/pkgconfig/xcb.pc - found
===> Generating temporary packing list
===> Creating groups.
===> Creating users
...
> make install
===> Installing for emby-server-3.5.3.0
===> Checking if emby-server already installed
===> Registering installation for emby-server-3.5.3.0
Installing emby-server-3.5.3.0...
...
If you had mediabrowser installed before the project was
renamed to emby-server, you may want to rename the user and
group (note that moving the database is not supported):
# pw groupmod 989 -n mediabrowser -l emby
# pw usermod 989 -n mediabrowser -l emby -g emby -c Emby\ Server
To automatically start Emby Server at boot time:
# echo 'emby_server_enable="YES"' >> /etc/rc.conf
To then manually start Emby Server without rebooting:
# service emby-server start
Once started, visit the following webpage to configure:
http://localhost:8096/
===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/lib/emby-server/lib/libavformat.so.58.12.100
This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/emby-server
If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type 'make deinstall'
to deinstall the port if this is a concern.
For more information, and contact details about the security
status of this software, see the following webpage:
https://emby.media/
Allerdings ist das nicht immer die neueste Version, aktuell ist zur Zeit die Version 4.0.1.0, im Ports-Tree liegt aber noch die Version 3.5.3.0.
Ubuntu 14.04 / Mint 17.2
Mediatomb
MediaTomb ist ein "UPnP MediaServer" mit einer hübschen Weboberfläche. Er arbeitet im Vordergrund des Userland.
> aptitude install mediatomb
uShare
uShare ist ein kleiner und einfacher "UPnP-/DLNA-MediaServer" mit einem built-in HTTP-Server.
> aptitude install ushare > dpkg-reconfigure ushare
http://blog.technical-life.at/2010/06/dlna-upnp-server-auf-ubuntu-installieren-und-konfigurieren/
