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.




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-paketconf.jpg



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.




Damit der icecast2 Daemon gestartet werden kann, muss zuerst die Datei „/etc/default/icecast2“ angepasst werden.


Damit die Orginalkonfigurationsdatei „/etc/icecast2/icecast.xml“ erhalten bleibt, kann diese z.B. als „icecast-test.xml“ kopiert 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.






FIXME




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.





Im Webinterface ist Serverstatus, Listener und Mountpoints etc. erst sichtbar, wenn auch Source Clients, wie z.B. Ices2, Internet DJ Console oder Darkice aktiv mit dem Icecast2 kommunizieren.









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“.







Icecast - free Multimedia Steaming Server (Icecast Multimedia Steaming Server) .
Icecast - Forum .



Cloud