Icecast2
Icecast2 ist ein Streaming Server unter GPL Lizenz. Source Clients wie z.B. Ices2, Darkice oder Mixxx können Audiostreams an den Icecast2 Server senden, die der Icecast2 Server dann verteilt. Icecast2 eignet sich hervorragend für Internet Radio Stationen.
Installation
Icecast2 kann von der Projektseite heruntergeladen und installiert werden. In vielen Linux Distributionen ist der Icecast2 Server in den Quellpaketen enthalten. Im folgenden Beispiel wird Icecast2 aus den Debian Quellen installiert.
root@host:~# apt-get install icecast2 Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Vorgeschlagene Pakete: ices2 Die folgenden NEUEN Pakete werden installiert: icecast2 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 328 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 711 kB Plattenplatz zusätzlich benutzt. Holen: 1 http://ftp.de.debian.org/debian/ wheezy/main icecast2 amd64 2.3.2-9+deb7u2 [328 kB] Es wurden 328 kB in 0 s geholt (562 kB/s). Vorkonfiguration der Pakete ...
Bei der Installation aus den Debian Quellen, aktiviert sich die Paketkonfiguration. Hier kann Hostname oder IP, das Quellenpasswort, Relay Server Passwort und Admin Passwort konfiguriert werden. Die Konfiguration kann jedoch auch später in der Datei „/etc/icecast2/icecast.xml“ vorgenommen werden.
icecast2 (2.3.2-9+deb7u2) wird eingerichtet ... Configuring icecast2.. Done Configuring icecast2.. icecast2 daemon disabled - read /etc/default/icecast2.
Der Icecast2 Steaming Server ist jetzt installiert und muss noch für den Start vorbereitet werden.
Konfiguration
Damit der icecast2 Daemon gestartet werden kann, muss zuerst die Datei „/etc/default/icecast2“ angepasst werden.
Icecast2 Dateien:
- /etc/default/icecast2 ⇒ Steuerungsdatei für das init Script.
- /etc/icecast2/icecast.xml ⇒ Beispiel Konfigurationsdatei.
- /var/log/icecast2 ⇒ Logdateien.
# Defaults for icecast2 initscript # sourced by /etc/init.d/icecast2 # installed at /etc/default/icecast2 by the maintainer scripts # # This is a POSIX shell fragment # # Full path to the server configuration file #CONFIGFILE="/etc/icecast2/icecast.xml" # to CONFIGFILE="/etc/icecast2/icecast-test.xml" # Name or ID of the user and group the daemon should run under USERID=icecast2 GROUPID=icecast # Edit /etc/icecast2/icecast.xml and change at least the passwords. # Change this to true when done to enable the init.d script #ENABLE=false # to ENABLE=true
Als nächstes sollte die Datei „/etc/icecast2/icecast-test.xml“ angepasst werden. Zum testen ist die Standardkonfiguration ganz in Ordnung. Definiert man hier keinen Mount Point, wird hierfür der Standard „/stream“ verwendet. Die Passwörter in der Direktive <authentication>…</authentication> sollte man jedoch bearbeiten. Die Konfiguration hängt natürlich davon ab, ob der Stream Server als Master, Slave oder Relay arbeiten soll.
<limits> <clients>100</clients> <sources>2</sources> <threadpool>5</threadpool> <queue-size>524288</queue-size> <client-timeout>30</client-timeout> <header-timeout>15</header-timeout> <source-timeout>10</source-timeout> <!-- If enabled, this will provide a burst of data when a client first connects, thereby significantly reducing the startup time for listeners that do substantial buffering. However, it also significantly increases latency between the source client and listening client. For low-latency setups, you might want to disable this. --> <burst-on-connect>1</burst-on-connect> <!-- same as burst-on-connect, but this allows for being more specific on how much to burst. Most people won't need to change from the default 64k. Applies to all mountpoints --> <burst-size>65535</burst-size> </limits>
limits
- clients ⇒ Anzahl der maximalen Zuhörer.
- sources ⇒ Anzahl der maximalen Quellen (dies beinhaltet aktive relay Server und Quell Clients).
- threadpool ⇒ Anzahl der gleichzeitigen Verarbeitung von Anweisungen.
- queue-size ⇒ Maximale größe der Warteschlange.
- client-timeout ⇒ Sekunden zur Verbindungstrennung bei Timeout zum Client.
- header-timeout ⇒ Sekunden zur Verbindungstrennung bei Timeout zu den Metadaten.
- source-timeout ⇒ Sekunden zur Verbindungstrennung bei Timeout zur Quelle.
- burst-on-connect ⇒ Puffern bei Verbindung.
- burst-size ⇒ Puffergröße.
<authentication> <!-- Sources log in with username 'source' --> <source-password>hackme</source-password> <!-- Relays log in username 'relay' --> <relay-password>hackme</relay-password> <!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>hackme</admin-password> </authentication>
authentication
- source-password ⇒ Passwort für den Nutzer „source“ (z.B. für das Programm zum übermitteln der Sound Dateien).
- relay-password ⇒ Passwort mit dem sich weitere Stream Server (relays) verbinden können.
- admin-user ⇒ Name des Administrators.
- admin-password ⇒ Admin Passwort.
<shoutcast-mount>/live.nsv</shoutcast-mount>
- shoutcast-mount ⇒ Optionaler Mountpoint, wenn sich shoutcast DSP kompatible Clients verbinden.
<directory> <yp-url-timeout>15</yp-url-timeout> <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url> </directory>
Veröffentlichen der Metadaten in den Yellow Pages. Hierdurch wird der Radiosender für Zuhörer leichter zu finden.
<!-- This is the hostname other people will use to connect to your server. It affects mainly the urls generated by Icecast for playlists and yp listings. --> <hostname>localhost</hostname> <!-- You may have multiple <listener> elements --> <listen-socket> <port>8000</port> <!-- <bind-address>127.0.0.1</bind-address> --> <!-- <shoutcast-mount>/stream</shoutcast-mount> --> </listen-socket> <!-- <listen-socket> <port>8001</port> </listen-socket> -->
- hostname ⇒ Hier wird der Name, Url oder IP Adresse des Rechners eingetragen.
- port ⇒ Der Port, auf dem der Server lauscht.
- shoutcast-mount ⇒ Mount Point. Ist dies auskommentiert, wird der Standard Mount Point /stream verwendet.
<fileserve>1</fileserve> <paths> <!-- basedir is only used if chroot is enabled --> <basedir>/usr/share/icecast2</basedir> <!-- Note that if <chroot> is turned on below, these paths must both be relative to the new root, not the original root --> <logdir>/var/log/icecast2</logdir> <webroot>/usr/share/icecast2/web</webroot> <adminroot>/usr/share/icecast2/admin</adminroot> <!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->
- fileserve ⇒ Hier läßt sich das Webinterface Ein/Ausschalten.
- basedir ⇒ Hauptverzeichnis.
- logdir ⇒ Verzeichnis von Logdateien.
- webroot ⇒ Webinterface Verzeichnis.
- adminroot ⇒ Administrator Webinterface Verzeichnis.
<logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <!-- <playlistlog>playlist.log</playlistlog> --> <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error --> <logsize>10000</logsize> <!-- Max size of a logfile --> <!-- If logarchive is enabled (1), then when logsize is reached the logfile will be moved to [error|access|playlist].log.DATESTAMP, otherwise it will be moved to [error|access|playlist].log.old. Default is non-archive mode (i.e. overwrite) --> <!-- <logarchive>1</logarchive> --> </logging>
logging
- accesslog ⇒ Logdatei für Zugriffe.
- errorlog ⇒ Fehler Logging.
- loglevel ⇒ Was soll alles Protokolliert werden.
- logsize ⇒ Maximale größe der Protokolldateien.
<security> <chroot>0</chroot> <!-- <changeowner> <user>nobody</user> <group>nogroup</group> </changeowner> --> </security>
- chroot ⇒ Führt Icecast im in der Directive <basedir> angegebenen Verzeichnis aus.
Relay Server
Icecast2 Start/Stopp
Syntax:
- /etc/init.d/icecast2 start|stop|restart|reload
- service icecast2 start|stop|restart|reload
Nachdem Icecast2 erfolgreich gestartet wurde, kann das Webinterface mit „http://<server-IP>:8000“ aufgerufen werden.
Audiostream Abspielen
Mit einem Klick auf M3U oder XSPF kann der Stream in einem Multimediaplayer abgespielt oder heruntergeladen werden. Natürlich ist es auch möglich die URL in einem Mediaplayer zu laden „http://<server-IP>:8000/<mount-point.ogg.m3u“.
Quellen und Links
Icecast - free Multimedia Steaming Server (Icecast Multimedia Steaming Server) .
Icecast - Forum .
Cloud