Dario Fiege How to run a Radio: Server

Arbeit merken

Übersicht

Das Herzstück eines Internetradios ist der Streamingserver. Hier werden sowohl Live-, als auch im Voraus aufgenommene Beiträge eingespeist und als Audiostream ausgegeben, welcher über einen Link abgerufen und angehört werden kann. Diese Aufgaben werden in zwei Bereiche geteilt. Zum einen gibt es den “Source Client”, in unserem Fall butt (Broadcast using this tool) und LibreTime, sowie den Teil der Software, welcher den Stream an die Hörer weitergibt.  Bisher wurde für diese Aufgabe die Open-Source Software Icecast verwendet.

 

Ubuntu Server und OpenSSH

Der Icecast Dienst wird in unserem Fall auf einem Linux Server installiert. Wenn ihr einen PC zu einem Server umfunktionieren möchtet oder einen Server mietet, welchen ihr selbst bespielen könnt empfehlen wir die Installation des Betriebssytems "Ubuntu Server". Ein einfach verständliches Tutorial zur Installation eines Ubuntu Servers ist hier als Link eingebunden:

Um später auf euren Server zuzugreifen werdet ihr höchstwahrscheinlich OpenSSH benutzen. Das zweite Video beschäftigt sich mit OpenSSH, wie es funktioniert und wie ihr es benutzt.

Der Icecast-Server wird der Ort sein, an dem sich alle Hörer des Senders verbinden. Der Source Client läuft (in der Regel) auf einem anderen Rechner als Icecast. Source Clients senden den Inhalt an Icecast und stellen die Stream-Daten (kodiertes Audio) bereit, die dann von Icecast an die Hörer weitergegeben werden:

“Icecast ist ein Streaming Media (Audio/Video) Server, der derzeit Ogg (Vorbis und Theora), Opus, WebM und MP3 Streams unterstützt. Er kann verwendet werden, um einen Internet-Radiosender oder eine privat laufende Jukebox zu erstellen und viele Dinge dazwischen. Es ist sehr vielseitig, da neue Formate relativ einfach hinzugefügt werden können und unterstützt offene Standards für Kommunikation und Interaktion. Icecast wird unter der GNU GPL, Version 2, vertrieben”

Quelle: Icecast.org

Icecast Installation

Icecast ist für Windows und Linux verfügbar und wird hauptsächlich über die Kommandozeile bedient. In dieser Anleitung werden wir im Detail die Installation für Unix basierte Systeme (Bspw. Ubuntu Server) betrachten, da Icecast ursprünglich für Linux entwickelt wurde und wir deshalb empfehlen einen Linux-Server als Streaming-Server zu nutzen. Die Installation unter Windows und Windows Server unterscheidet sich kaum von der hier beschriebenen Installation für Unix basierte Systeme.

Zunächst müssen folgende Programme installiert werden, welche Icecast braucht um korrekt zu funktionieren: 

libxml2

libxslt, command: apt-get install python-lxml

curl (>= Version 7.10 benötigt)

ogg/vorbis (>= Version 1.0 benötigt)command: sudo apt-get install vorbis-tools vorbisgain 

openssl

Flowchart Server

Für Anleitungen zu diesen Programmen, verlinken wir im Anhang zu den jeweiligen Dokumentationen. Um icecast auf einer Unix-Plattform zu erstellen, geht wie folgt vor. Öffnet das Server-Terminal über SSH (Kommandozeile) und navigiert zum Ordner, in den ihr Icecast heruntergeladen habt. Durch die Kommandos:

./configure

make

make install

wird Icecast installiert und mehrere Ordner im folgenden Verzeichnis erstellt:

/usr/local/etc

Nach der Installation muss der Icecast Server konfiguriert werden. Die Konfigurationsdateien befinden sich standardmäßig im Unterverzeichnis /conf. Dort befindet sich die Datei  icecast.xml in der alle wichtigen Konfigurationen vorgenommen werden:

<hostname>

DNS-Name oder IP-Adresse, der/die für die Auflistung der Stream-Verzeichnisse verwendet wird. (Über diesen Link und dem zugehörigen Port lässt sich euer Stream abrufen.)

<source-password>

Über dieses Passwort verbinden sich eure Source Clients (beispielsweise butt oder Libretime) mit Icecast.

<admin-password>

Das Administratorpasswort um in Zukunft Veränderungen am Server zu tätigen

<listen-socket>

Dies ist der Port unter dem man euren Server erreicht. 

Standardmäßig kann dieser :8000 oder :8443 sein. 

Es können auf einem einzelnen Icecast-Server mehrere Streams in unterschiedlichen Qualitäten angeboten werden, wir konzentrieren uns in dieser Kurzanleitung jedoch auf die Einrichtung eines einzelnen Streams. Solltet ihr die Absicht haben mehrere Streams anzulegen, findet ihr Anleitungen dazu in der Icecast Dokumentation. (Link im Anhang)

Im Anschluss an die Konfiguration des Icecast Clients kann der Server mit folgendem Kommando gestartet werden:

icecast -c /path/to/icecast.xml

/path/to/ ersetzt ihr in diesem Fall mit dem Pfad zur Konfigurationsdatei, welche ihr zuvor angepasst habt. Sollte es keine Fehler geben solltet ihr in der Datei error.log eine ähnliche Nachricht wie diese finden: 

[2003-10-31  13:04:49] INFO main/main.c Icecast 2.3.x server started

Sollten Fehler auftauchen, liegt dies vermutlich an einer Fehlkonfiguration in der Datei icecast.xml. In der Icecast Dokumentation findet ihr den Bereich “FAQ”, sowie ausführlichere Anleitungen, in denen einige gewöhnliche Probleme und ihre Fehlerbehebung aufgeführt sind.

Sollte die Installation erfolgreich sein, könnt ihr euch nun zum einen mit dem Source Client verbinden, als auch euer Audiosignal über die Adresse: <hostname>:<listen-socket> abrufen. 

Beispiel: Eure IP-Adresse lautet 192.168.0.1

Euer Port lautet: :8443

Das bedeutet, dass ihr euren Stream über die Adresse  192.168.0.1:8443 erreichen könnt.

Um ein Audiosignal, welches gestreamt werden soll, auf euren Icecast Server einzuspielen, benötigt ihr einen Source Client. Im nächsten Schritt erfahrt ihr wie ihr butt (broadcast using this tool) einrichtet und ein Live-Audiosignal an euren Streamingserver sendet.

Butt (Broadcast using this tool)

Butt (Broadcast using this tool) ist ein simpler Client, mit welchem ihr Audiosignale (Beispielsweise den Ton eines angeschlossenen Mikrofons) an den Streamingserver (Icecast) senden könnt. Butt ist verfügbar für Windows, Mac und Linux. Diese Software wird nicht auf eurem Streamingserver installiert, sondern auf dem PC von dem aus ihr euren Stream an den Icecast Server senden möchtet (Studio PC). Nach der Installation von butt muss die Verbindung zum Icecast Server eingerichtet werden, sowie die zu streamende Audioquelle ausgewählt werden. Die Benutzeroberfläche von butt ist folgendermaßen aufgebaut:

Im Hauptfenster findet ihr die Buttons Aufnahme (roter Kreis), Stream stoppen (weißes Viereck) und Stream starten (weißes Dreieck), die Lautstärkeüberwachung (dB Anzeige in der Mitte), die Lautstärkeanpassung (Slider), sowie den Log (unterer Bereich) und den Button Einstellungen.

Im ersten Schritt beschäftigen wir uns mit den Verbindungseinstellungen:

Über den Button NEU könnt ihr eine neue Verbindung hinzufügen. Möchtet ihr eine bestehende Verbindung ändern könnt ihr dies über den Button EDIT vornehmen. Wir fügen eine neue Verbindung über den Button NEU hinzu:

Hier tragt ihr die zuvor im Icecast-Server eingestellten Werte ein:

Name: Dies ist ein lokaler Name und dient zur Unterscheidung, sollten ­mehrere Server konfiguriert werden. Er hat keinen Einfluss auf die Verbindung.

Typ: Hier wählt ihr Icecast, da wir das Icecast Protokoll nutzen.

Adresse: Dies ist die Adresse, welche ihr in der Icecast Konfiguration unter dem Punkt <hostname> eingestellt habt.

Port: Dies ist der Port, über welchen ihr euch als Source Client mit dem Icecast Server verbindet. Diesen findet ihr in der Icecast Konfiguration unter dem Punkt <master-server-port> standardmäßig lautet dieser 8001

Passwort: Das Client Passwort habt ihr in der Icecast Konfiguration unter dem Punkt <source-password> festgelegt. 

Icecast Mountpoint: Solltet ihr es nicht anderweitig in der Icecast Konfiguration geändert haben, lautet der Mountpoint: master

Icecast User: Solltet ihr es nicht anderweitig in der Icecast Konfiguration geändert haben, lautet der Username: source. Ihr findet diese Information in der Icecast Konfiguration unter dem Punkt <username>

Sollten alle Eingaben richtig sein, könnt ihr euch mit dem Icecast Server verbinden und Audio streamen. Um euch mit dem Server zu verbinden, und das Streaming zu beginnen, nutzt im Hauptfenster von butt den Play Button (Stream starten). Sollten alle Konfigurationen mit den Icecast Konfigurationen übereinstimmen wird sich der butt Client mit dem Icecast Server verbinden und der Stream kann beginnen.

Wichtig ist, das richtige Audiogerät auszuwählen: Im Menü Einstellungen, können im Tab Audio, das Audiogerät, die Bitrate mit welcher gestreamt wird und der Audio Codec ausgewählt werden. Die Bitrate und Audio Codec sollten mit den Icecast Einstellungen übereinstimmen, in unserem Fall streamen wir im .mp3 Codec mit einer Bitrate von 128 kbps. Die Bitrate bestimmt die Qualität und die Datengröße, welche übermittelt werden muss. Eine Bitrate von 320 kbps bietet die höchste Qualität, übermittelt jedoch auch die doppelte Menge an Daten, was zu einer höheren Belastung von Streaming Server und einer höheren benötigten Bandbreite führt. 128 kbps bietet ein gutes Mittelmaß zwischen Qualität und Datenmenge. Als Audiogerät muss das Gerät ausgewählt werden, welches gestreamt werden soll. In den meisten Fällen ist dies das Audiointerface, an welchem die Mikrofone oder ein DJ-Setup angeschlossen sind. Vor jedem Stream muss diese Einstellung überprüft werden, damit nicht aus versehen beispielsweise das eingebaute Mikrofon eines Laptops ausgewählt ist und Umgebungsgeräusche anstatt der gewollten Audioquelle gestreamt werden. (Das kann sehr unangenehm werden.)

Ob das Audiogerät funktioniert, kann über die Lautstärkeüberwachung im Hauptfenster der butt Aplikation überprüft werden. Dort kann man den Ausschlag (Lautstärke) des Audiogeräts sehen. Der Ausschlag sollte zwischen -12 db und 0 db liegen und kann mit dem Lautstärkeslider angepasst werden. Werte über 0 db führen zu einer Übersteuerung (Clipping), was in jedem Fall vermieden werden sollte.