Streaming Archives - Technik - Blogbasis.net https://technik.blogbasis.net/tag/streaming Die Basis des freien Wissens – Technik Wed, 04 Mar 2015 09:55:12 +0000 de hourly 1 https://wordpress.org/?v=6.8.1 DMS – Simpler DLNA Server https://technik.blogbasis.net/dms-simpler-dlna-server-04-03-2015 https://technik.blogbasis.net/dms-simpler-dlna-server-04-03-2015#respond Wed, 04 Mar 2015 09:55:12 +0000 http://technik.blogbasis.net/?p=1313 Hallo Leute,

heute möchte ich ein kleines Tool vorstellen mit dem man direkt aus einem Ordner heraus einen DLNA Server aufsetzen kann. So kann man ohne umständliche Konfiguration oder Indexierung Videos auf den Fernseher streamen.

Ich hatte früher zum Streamen die Software „miniDLNA“ genutzt. Leider musste man bei einem neuen Titel die komplette Datenbank erneut aufbauen. Das war inbesondere auf dem Pi ein zeitaufwendiger und entsprechend langweiliger Prozess.

Zunächst wollte ich die Lösung als kleines Projekt in Python implementieren, jedoch gibt es keine wirklich tollen Bibliotheken für das DLNA-Protokoll.

Zufälligerweise bin ich beim Googlen auf das Programm „DMS“ von anacrolix gestoßen. Dieses erfüllt genau meine Anforderungen:

  • Ohne Indexierung direkt aus einem Ordner heraus Daten streamen
  • Keine Konfiguration nötig

Unter Arch-Linux kann man sich das von bitwave erstellte, gleichnamige AUR-Package installieren.

yaourt dms

Ansonsten können folgende Befehle zur Installation verwendet werden. Voraussetzung dafür ist, dass man Go installiert hat.

> go get bitbucket.org/anacrolix/dms
> $GOPATH/bin/dms

Um einen bestimmten Pfad bzw. Ordner zu streamen, muss man nur den Parameter „-path“ angeben:

dms -path="/mnt/usbStick"

Dann wird auf Port 1338 ein HTTP Server geöffnet, dessen Nutzen habe ich allerdings noch nicht ganz verstanden. Wichtiger ist dann wohl, dass Port 1900 (UDP) belegt wird.

Man sollte natürlich nicht vergessen, die beiden Ports in der Firewall freizuschalten.

~ Sebastian

]]>
https://technik.blogbasis.net/dms-simpler-dlna-server-04-03-2015/feed 0
Icecast2 Streaming Server unter Linux aufstetzen https://technik.blogbasis.net/icecast2-streaming-server-unter-linux-aufstetzen-23-08-2013 https://technik.blogbasis.net/icecast2-streaming-server-unter-linux-aufstetzen-23-08-2013#respond Fri, 23 Aug 2013 21:42:09 +0000 http://technik.blogbasis.net/?p=850 Das Team++ hatte bei mir einen Icecast2 Streaming Server angefragt, da ich die Bereitstellung in der letzten Folge angeboten hatte. Wie immer möchte ich meine Schritte für interessierte Leser kurz festhalten und erläutern.

Was ist Icecast2 ?

Grob gesagt ist Icecast eine Software mit der man Streams (meist Musik) im Internet bereitstellen kann. Zum Beispiel können so Podcasts an größere Zuhörermengen verteilt werden, oder Hobby-DJs lassen ihre Zuhörer das Set live genießen.

Die Installation von Icecast2

Es gibt – wie fast immer – zwei Wege der Installation. Einerseits kann man Icecast2 direkt aus den Paketquellen der meisten Distributionen (Linux) installieren. Das klappt oft mit dem folgenden Befehl:

sudo apt-get install icecast2

Andererseits kann man sich den Quelltext herunterladen und diesen selbst kompilieren. Letzteres habe ich getan, sodass ich mein Vorgehen folgend beschreiben werde.

Als erstes wechseln wir in den RAM und erstellen einen temporären Ordner:

cd /tmp && mkdir icecast && cd icecast

Danach laden wir den Quelltext herunter und entpacken diesen:

wget http://downloads.xiph.org/releases/icecast/icecast-2.4-beta3.tar.gz .
tar xfv icecast-2.4-beta3.tar.gz
rm icecast-2.4-beta3.tar.gz
cd icecast-2.3.99.3

Die Versionsnummern können sich in der Zukunft ändern. Gegebenenfalls müssen diese angepasst werden. 

Nach dem entpacken prüfen wir, ob alle Abhängigkeiten vorhanden sind und die Konfiguration der Installationsdateien aus:

./configure

Ist der Prozess erfolgreich beendet, kann man den Quelltext kompilieren und das Programm installieren:

make
sudo make install

Unsere Konfiguration wird später auf einigen Verzeichnissen bzw. Dateien aufbauen, welche wir nun anlegen:

sudo mkdir /usr/local/share/icecast/conf
sudo mkdir /usr/local/share/icecast/logs
sudo touch /usr/local/share/icecast/logs/access.log
sudo touch /usr/local/share/icecast/logs/error.log
sudo chown -R nobody:nogroup /usr/local/share/icecast/logs

Damit wäre dieser Schritt soweit abgeschlossen. Als nächstes folgt die Konfiguration.

Die Konfiguration von Icecast2

Die Konfigurationsdatei müssen wir manuell anlegen, und dazu haben wir vorhin schon den Ordner „conf“ erzeugt. Öffnet daran die Datei „config“ mit einem Editor eurer Wahl :)

sudo vim /usr/local/share/icecast/conf/config

Die Konfiguration basiert auf XML, und muss mit „<icecast>“ beginnen bzw. mit „</icecast>“ enden. Dazwischen packen wir die verschiedenen Konfigurationsblöcke, welche ich nach und nach erläutern werde. Eine genaue Erklärung der Einstellungsmöglichkeiten findet man in der Doku von Icecast2.

<limits>
    <clients>100</clients>
    <sources>2</sources>
    <threadpool>5/</threadpool>
    <queue-size>102400</queue-size>
    <client-timeout>30</client-timeout>
    <header-timeout>15</header-timeout>
    <source-timeout>10</source-timeout>
</limits>

Diese Einstellungen bestimmen die Softwarelimits des Icecasts. Laut der Doku reichen diese für kleine bis mittelgroße Streams und können ohne Erklärung einfach übernommen werden.

<authentication>
    <source-password>Source-PW</source-password>
    <relay-password>Relay-PW</relay-password>
    <admin-user>Adminuser</admin-user>
    <admin-password>Admin-Pw</admin-password>
</authentication>

In diesem Block setzt man die Logindaten. Einerseits für die Administration über den Webserver, andererseits zum Streamen. Diese Felder sollten unbedingt mit einem sicheren Passwort gefüllt werden.

<hostname>Icecast hosted by gehaxelt</hostname>
<listen-socket>
        <port>8000</port>
        <bind-address>IP</bind-address>
</listen-socket>

Hier könnt ihr den Hostnamen des Icecast Servers setzen. Zudem müsst ihr die IP-Adresse setzen und ggf. den Port anpassen, falls dieser euch nicht gefällt.

<fileserve>1</fileserve>
<paths>
    <basedir>/usr/local/share/icecast</basedir>
    <logdir>/logs</logdir>
    <pidfile>/icecast.pid</pidfile>
    <webroot>/web</webroot>
    <adminroot>/admin</adminroot>
    <alias source="/" dest="/status.xsl"/>
</paths>

Die erste Einstellung weist Icecast an, die Daten über den Webserver aufzubereiten (um diesen später ggf. zu administrieren). Ansonsten sollte man die Pfade so übernehmen können. Hinweis: Wir werden später Icecast in ein chroot stecken, sodass die weiteren Pfade relativ zum Base-Pfad sein müssen.

<logging>
    <accesslog>access.log</accesslog>
    <errorlog>error.log</errorlog>
    <loglevel>2</loglevel>
</logging>

Wir wollen natürlich – wie die NSA – alles protokollieren. Folgende Loglevel gibt es dabei:

  • 1 – Error
  • 2 – Warn
  • 3 – Info
  • 4 – Debug

Das Loglevel 2 ist meiner Meinung nach ausreichend.

<security>
    <chroot>1</chroot>
    <changeowner>
        <user>nobody</user>
        <group>nogroup</group>
    </changeowner>
</security>

Mit dem letzten Block versetzen wir Icecast nach dem Starten in ein chroot, und wechseln die Benutzerrechte auf nobody:nogroup.

Icecast2 Server starten bzw. stoppen

Um den Server zu stoppen, führt ihr einfach icecast mit Rootenrechten aus, und übergebt das entsprechende Config-File.

sudo icecast -c /usr/local/share/icecast/conf/config -b

Mit der Option „-b“ verabschiedet sich Icecast in den Hintergrund und läuft als Daemon weiter. Ihr solltet dann beim Aufrufen von [IP]:8000 auf die Willkommensseite von Icecast kommen. Ihr benötigt die Rootrechte, damit sich Icecast nach der Initialisierung ins chroot verschieben kann.

Um den Server wieder zu stoppen genügt ein killall:

sudo killall icecast

Fazit

Die Einrichtung von Icecast2 ist wirklich kein großes Problem, da die Konfiguration sehr übersichtlich ist, und ein vorkompiliertes Paket in den Paketquellen vorhanden ist. Das Streamen von Musik bzw. Podcasts über den eigenen Server ist nun kein Problem mehr.

~Sebastian

 

]]>
https://technik.blogbasis.net/icecast2-streaming-server-unter-linux-aufstetzen-23-08-2013/feed 0