====== DLNA (Digital Living Network Alliance) ======
**DLNA => Digital Living Network Alliance**
=> Im Switch bzw. Router muss **UPnP** aktiviert werden!
===== DLNA-Server-software =====
* [[https://hometheatrelife.com/best-dlna-media-server-software-streaming-media/|Best DLNA Media Server Software for Streaming Media 2018]]
* [[https://www.tecmint.com/best-media-server-software-for-linux/|10 Best Media Server Software for Linux in 2018]]
* [[https://en.wikipedia.org/wiki/List_of_UPnP_AV_media_servers_and_clients#Cross-platform]]
==== MiniDLNA ====
//[[http://sourceforge.net/projects/minidlna/|MiniDLNA]]// heißt jetzt //[[https://wiki.ubuntuusers.de/ReadyMedia|ReadyMedia]] (Es wird von einem NETGEAR-Mitarbeiter für die ReadyNAS-Produktlinie entwickelt.)//
==== ServiIO ====
__es benötigt JAVA!__
[[https://serviio.org]]
==== Subsonic ====
__es benötigt JAVA!__
[[http://www.subsonic.org]] -> [[http://www.subsonic.org/pages/download.jsp|Download]]
==== Emby ====
__es wird MONO benötigt!__
[[https://emby.media]]
==== Gerbera ====
__läuft hauptsächlich auf verschiedenen Linux-Distributionen aber auch auf macOS__
[[https://gerbera.io/]]
===== FreeBSD =====
==== MediaTomb + FreeBSD 12 ====
* [[http://mediatomb.cc]]
* [[https://wiki.ubuntuusers.de/Mediatomb/]]
* [[https://help.ubuntu.com/community/MediaTomb]]
* **[[https://www.com-magazin.de/praxis/ubuntu/multimedia-streaming-mediatomb-38214.html?page=1_mediatomb-installieren-und-konfigurieren|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
...
...
...
> 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 [[::freebsd: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 [[::freebsd:Jail|Jails]] mit jeweils eigenen IPs benutzen.
Mit virtuellen Netzwerkkarten, die über einr [[::FreeBSD:FreeBSD - Bridge|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;
* [[https://de.wikipedia.org/wiki/Digital_Living_Network_Alliance]]
* [[http://linux-bsd-sharing.blogspot.de/2012/06/howto-install-and-setup-minidlna-on.html]]
> 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 ====
* [[http://serviio.org/]]
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/
#!/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 ===
* **[[http://www.serviio.org/support/10-uncategorised/5-getting-started]]**
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 ===
* **[[http://wiki.serviio.org/doku.php?id=phpwebui]]**
==== Emby + FreeBSD 12 ====
* [[https://emby.media]]
* [[https://emby.media/download.html|Downloads]]
* [[https://github.com/MediaBrowser/Emby.Releases/releases/|GitHub]]
* [[https://emby.media/freebsd-server.html|für FreeBSD]]
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/]]