CLI-Tool
anacrolix/dms avatar
anacrolix/dms

dms: UPnP-DLNA-Medienserver im Terminal mit ffmpeg-Transkodierung

Ein UPnP DLNA Digital Media Server, der grundlegende Videotranskodierung umfasst. Getestet auf einem Panasonic Viera-Fernseher, mehreren Android UPnP-Apps und Chromecast.

748 Sterne115 ForksGoBSD-3-Clause
GitHub

Auf einen Blick

Was ist das?
anacrolix/dms stellt ein Medienverzeichnis per UPnP und DLNA ins lokale Netz und transkodiert bei Bedarf mit ffmpeg. Der Beitrag zeigt Installation, FreeBSD-Dienst und die Abhängigkeiten im PATH.
Für wen ist es gedacht?
dms eignet sich für alle, die ein Medienverzeichnis ohne Datenbank und ohne Weboberfläche per DLNA ins lokale Netz bringen wollen und ffmpeg bereits installiert haben. Wer Zugriffskontrolle, eine Beschränkung auf eine Netzwerkschnittstelle oder dokumentierte Konfigurationsoptionen braucht, findet im README keine Antwort.
Darf ich es kommerziell nutzen?
Ja. BSD-3-Clause ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 34 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Go, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 14. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

dms als UPnP-DLNA-Server: Verzeichnis statt Datenbank

dms ist ein UPnP-DLNA-Medienserver, geschrieben in Go und lizenziert unter BSD-3-Clause. Er läuft im Terminal und stellt Inhalte direkt aus dem Dateisystem bereit, entweder aus dem aktuellen Arbeitsverzeichnis oder aus einem beim Aufruf angegebenen Pfad. Es gibt keine Datenbank und keinen Index, das Verzeichnis selbst ist die Quelle.

Die Repository-Beschreibung nennt als getestete Abspielgeräte einen Fernseher von Panasonic aus der Viera-Reihe, mehrere Android-Anwendungen mit UPnP-Unterstützung sowie Chromecast. Die README selbst beschreibt weder eine Testumgebung noch Ergebnisse, sie enthält lediglich zwei Bildverweise ohne Erläuterung.

SSDP auf allen Schnittstellen und was das im Netz heißt

Die SSDP-Komponente sendet Anfragen und antwortet auf allen verfügbaren Netzwerkschnittstellen. Das ist bequem, weil Abspielgeräte im lokalen Netz den Server ohne weitere Konfiguration finden. Es hat eine Kehrseite: Ein Rechner, der neben dem Heimnetz noch eine virtuelle Bridge oder eine VPN-Verbindung hat, kündigt den Server auch dort an.

Die README dokumentiert keine Möglichkeit, die Ankündigung auf eine Schnittstelle zu beschränken. Ebenso wenig kommen Portnummern, Protokolldetails oder eine Zugriffskontrolle vor. Wer den Server in einem Netz mit mehreren Segmenten betreibt, muss die Absicherung deshalb außerhalb von dms lösen.

Rohdateien, mpeg2 PAL-DVD und WebM für Chromecast

dms kündigt die Rohdateien an und liefert sie aus. Zusätzlich bietet es dort, wo es möglich ist, transkodierte Alternativströme an. Als Beispiele nennt die README mpeg2 im Profil PAL-DVD sowie WebM für Chromecast. Vorschaubilder entstehen beim Durchsuchen, sofern sie sich erzeugen lassen.

Welche Formate im Einzelfall entstehen, hängt von den installierten Helferprogrammen ab. Eine Liste unterstützter Eingabeformate sucht man in der README vergeblich, auch zu Qualitätsstufen, Bitraten und Codec-Optionen für die Transkodierung steht dort nichts.

ffprobe, ffmpeg und ffmpegthumbnailer im PATH

Für Medieninformationen wie Bitrate und Dauer ruft dms ffprobe oder avprobe auf. Transkodiert wird mit ffmpeg oder avconv, die Vorschaubilder erzeugt ffmpegthumbnailer. Alle diese Programme müssen in dem PATH liegen, den dms beim Start sieht. Fehlt eines, wird nur die davon abhängige Funktion abgeschaltet, der Server läuft weiter und gibt weiterhin die Rohdateien aus.

Beim Werkzeugweg zeigt sich dieselbe Struktur: avconv aus dem Libav-Projekt tritt an die Stelle von ffmpeg, ohne dass sich an der Konfiguration von dms etwas ändert. Wer bewusst auf Transkodierung verzichtet, lässt die Helfer weg und erhält einen reinen Auslieferer, der die vorliegenden Dateien unverändert anbietet.

Installation per go install und der FreeBSD-Dienst unter helpers/bsd/dms

Die Installation setzt eine eingerichtete Go-Umgebung mit $GOPATH voraus. Der Befehl lautet go install github.com/anacrolix/dms@latest, der Start erfolgt danach über "$GOPATH"/bin/dms. Kommandozeilenoptionen, Konfigurationsdateien und Umgebungsvariablen sind im README nicht dokumentiert, auch nicht die Syntax für das Übergeben eines Medienverzeichnisses, obwohl die Funktion erwähnt wird.

Für FreeBSD liegt eine Dienstdatei im Repository unter helpers/bsd/dms. Sie wird nach /etc/rc.d oder /usr/local/etc/rc.d installiert, danach kommen Zeilen in die Datei /etc/rc.conf. Verpflichtend ist dms_enable="YES", hinzu kommen optional dms_root="/path/to/my/media" für das Medienverzeichnis und dms_user="myuser" für das Konto, unter dem der Dienst läuft. Für Linux oder macOS enthält das README keine vergleichbare Anleitung.

Dynamische RTSP-Streams und die Lücken der README

Neben Dateien kann dms dynamische Ströme anbieten, die erst beim Abruf entstehen, als Beispiel nennt das README einen Live-RTSP-Stream. Erzeugt werden sie von einer externen Anwendung, wiederum mit ffmpeg als Beispiel. Wie dms von einem solchen Strom erfährt, wie ein Client ihn anfordert und welches Protokoll das Helferprogramm sprechen muss, bleibt in der README offen.

Für den Betrieb heißt das, dass sich diese Funktion nur über die Helferkette einrichten lässt, eine dokumentierte Konfiguration existiert nicht. Wer Live-Quellen einbinden will, prüft am besten zuerst, ob das Zusammenspiel mit dem eigenen RTSP-Eingang überhaupt trägt, bevor ein Abspielgerät daran hängt.

BSD-3-Clause, Finanzierung und die Releases von v1.6.0 bis v1.8.0

Die Lizenz ist BSD-3-Clause. Der Lizenztext nennt Matt Joiner mit der Adresse anacrolix@gmail.com als Urheber und erlaubt Weitergabe und Nutzung in Quell- und Binärform unter drei Bedingungen: Der Urheberrechtshinweis muss in Quellverteilungen erhalten bleiben, in Binärverteilungen in der Dokumentation erscheinen, und die Namen der Urheber dürfen ohne schriftliche Genehmigung nicht zur Bewerbung abgeleiteter Produkte dienen. Gewährleistung und Haftung sind ausgeschlossen.

Der erste Abschnitt des README wirbt um Finanzierung über GitHub Sponsors und verweist für konkrete Wünsche auf die Issueliste, außerdem auf die Dateien CHANGELOG.md und FAQ.md. Bei den Veröffentlichungen liegt v1.8.0 vom 28. Juli 2026 vor, davor v1.7.2 vom Juli 2025 und v1.6.0 vom Mai 2023. Zwischen den beiden älteren Veröffentlichungen liegen damit mehr als zwei Jahre.

Redaktionelles Fazit

dms eignet sich für alle, die ein Medienverzeichnis ohne Datenbank und ohne Weboberfläche per DLNA ins lokale Netz bringen wollen und ffmpeg bereits installiert haben. Wer Zugriffskontrolle, eine Beschränkung auf eine Netzwerkschnittstelle oder dokumentierte Konfigurationsoptionen braucht, findet im README keine Antwort. Vor dem Einsatz sollte geprüft werden, ob ffprobe, ffmpeg und ffmpegthumbnailer im PATH des Dienstes liegen, sonst fallen Bitraten, Transkodierung und Vorschaubilder stillschweigend weg.

Offizielle Quellen

  1. Official README
  2. Project repository
  3. Release notes
Community-Notizen

Community-Notizen