4. Konfiguration:
Die im folgenden aufgeführten Konfigurationsdateien sind dazu gedacht, komplett übernommen und lediglich angepasst zu werden. Selbsterversändlich könnt ihr auch die default-configs bearbeiten, jedoch stehen da recht viele, für unsere Zwecke unnötige, Dinge drin, die evtl. verwirren könnten.
Als erstes richten wir den server ein. Dazu editieren wir /etc/icecast2/icecast.xml, wie folgt:
Code:
<icecast>
<limits><!--ausser clients kann man in diesem Abschnitt die default-werte lassen-->
<clients>30</clients> <!--max Zuhörer -->
<sources>10</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>
<authentication>
<!-- Wichtig, Der Benutzername um zum server zu connecten ist 'source'-->
<!-- Das Passwort um sich beim server zum streamen einzuloggen-->
<source-password>dasPasswort</source-password>
<!-- Solltet ihr Relay-Server zu euch verbinden lassen wollen, hier das pw dafür -->
<relay-password>RelayPass</relay-password>
<!-- Admin-Zugangsdaten für Online-Administration -->
<admin-user>AceTheFace</admin-user>
<admin-password>dasAnderePasswort</admin-password>
</authentication>
<!-- Ip oder hostname des Servers -->
<hostname>localhost</hostname>
<!-- Port auf den der Server hören soll -->
<listen-socket>
<port>8000</port>
</listen-socket>
<paths><!-- Installationsverzeichnis von icecast -->
<basedir>/usr/share/icecast</basedir>
<!--verschiedene Verzeichnisangaben, sollten klar sein ;) -->
<logdir>/var/log/icecast</logdir>
<webroot>/usr/share/icecast/web</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>
<security>
<chroot>0</chroot>
<!-- wichtig falls man den server beim booten starten lässt.
Hier kann man festlegen als welcher Benutzer der server laufen soll
(muss auf dem System exisiteren)-->
<changeowner>
<user>hanf</user>
<group>users</group>
</changeowner>
</security>
</icecast>
WICHTIG: Der User den ihr unter changeowner angegeben habt muss Schreibrechte auf das logdir haben! (chown hanf /var/log/icecast && chgrp users /var/log/icecast)
So, das wäre geschafft. Nun können wir den Server mal testen (als root!):
Code:
icecast -c /etc/icecast2/icecast.xml
Evtl. lautet die executable bei euch icecast2, dann sieht der Aufruf dementsprechend so aus:
Code:
icecast2 -c /etc/icecast2/icecast.xml
Wenn ihr alles richtig gemacht habt, sollte lediglich ausgegeben werden, dass der Server nun unter einem anderen Benutzer als root läuft:
Code:
Changed groupid to 1001.
Changed userid to 1001.
Das wäre geschafft.War ja gar nicht so schwer. Nun müssen wir unseren Server nur noch irgendwie mit Musik füttern.
Dazu benutzen wir nun ices2:
Auch ices2 benutzt eine xml-config-datei. Diese legen wir uns einfach frisch an, z.B. in /home/hanf/streaming/ices.xml.
Folgenden Inhalt sollte sie besitzen:
Code:
<?xml version="1.0"?>
<ices>
<background>0</background> <!-- Soll ices2 im Hintergrund laufen? (1 falls ja) -->
<logpath>/home/hanf/streaming</logpath> <!-- wo soll hingelogged werden?-->
<logfile>ices.log</logfile>
<loglevel>4</loglevel> <!-- 1=error,2=warn,3=info,4=debug -->
<consolelog>1</consolelog> <!--verbose-mode, alle meldungen werden auf der konsole ausgegebn. Hierbei wird nicht in obige Logdatei gelogged!!-->
<stream>
<metadata><!--Gebt eurem Radio nen Namen etc...-->
<name>LinuxRadio by AceTheFace</name>
<genre>Metal/Rock</genre>
<description>also visit www.linuxforen.de </description>
</metadata>
<input>
<!--Aufnahme-Weiterleit-Modul-->
<module>oss</module> <!--auch wenn ihr alsa habt muesste das funktionieren(tut bei mir ja auch..*g*) -->
<param name="rate">44100</param><!--bitrate-->
<param name="channels">2</param><!--kanaele, hier sollte 2 drinstehen auch wenn ihr mono streamen wollt-->
<param name="device">/dev/dsp</param><!--Von wo soll aufgenommen werden. /dev/dsp ist i.A. richtig-->
<param name="metadata">1</param><!--Sollen Titeldaten der Songs mitgestreamt werden?-->
<param
name="metadatafilename">/home/hanf/streaming/trackinfo.txt</param><!--wenn ja, wo stehen die? --<
</input>
<instance>
<hostname>localhost</hostname><!--wo laeuft der icecast-server?-->
<port>8000</port> <!--über welchen Port connecten?-->
<password>dasPasswort</password> <!--Passwort?-->
<mount>/radio.ogg</mount> <!--adresse des eigentlichen streams-->
<reconnectdelay>2</reconnectdelay>
<reconnectattempts>5</reconnectattempts>
<maxqueuelength>80</maxqueuelength>
<downmix>1</downmix><!--aus stereo mach mono -->
<encode>
<nominal-bitrate>64000</nominal-bitrate> <!--vbr um ca 64Kbit rum ;) -->
<samplerate>44100</samplerate>
<channels>1</channels><!--da downmix=1, hier nur noch 1 channel-->
</encode>
</instance>
</stream>
</ices>
So, alles was zwischen den <stream>-tags steht beschreibt einen stream. Ihr könnt auch mehrere streams definieren, z.B. einen in stereo, einen mit 128Kbit usw. Diese benötigen dann halt einen anderen mount-point.
Wie ihr oben gesehen habt, wollen wir ja auch title und artist streamen und haben dazu eine Datei namens trackinfo.txt in der config angegeben.
Um diese Datei mit Inhalt zu füllen zeige ich euch hier zwei Möglichkeiten. Zum einen wie es mit XMMS unter Zuhilfename eines Plugins und einem perl-script funktioniert, zum anderen, wie es sich mit dem immer beliebteren Audio-Player amaroK (Homepage) über dcop regeln lässt.
XMMS:
Wir erstellen nun in unserem Verzeichnis eine Datei namens update.pl mit folgendem Inhalt (Pfade anpassen!):
Code:
#!/usr/bin/perl
#script by saintjoe (BSDforen.de)
@trackinfo = split(/ - /, $ARGV[0]);
system("echo \"TITLE=$trackinfo[1]\" > /home/hanf/streaming/trackinfo.txt");
system("echo \"ARTIST=$trackinfo[0]\" >> /home/hanf/streaming/trackinfo.txt");
system("killall -USR1 ices");
Bei mir heisst die executable von ices2 auch ices. Sollte die bei euch ices2 haben, so müsst ihr ices im obigen script und im unteren Aufruf durch ices2 ersetzen.
Um dieses Script bei jedem Liedwechsel ausführen zu lassen stellen wir im
Songchange-Plugin ein, dass er den Befehl
Code:
/usr/bin/perl /home/hanf/streaming/update.pl "%s"
ausführen soll (wieder Pfad anpassen).
amaroK:
Erstellt in eurem Verzeichnis eine Datei namens amarok_np.sh mit folgendem Inhalt:
Code:
#!/bin/bash
FILE='trackinfo.txt'
#echo Starte amaroK Wiedergabe.
#dcop amarok player play
TITEL2=`dcop amarok player title`
while (true); do
STATUS=`dcop amarok player status 2> /dev/null`
TITEL=`dcop amarok player title`
ARTIST=`dcop amarok player artist`
echo $ARTIST - $TITEL
echo "TITLE=$TITEL" > $FILE
echo "ARTIST=$ARTIST" >> $FILE
killall -USR1 ices
sleep 5;
done
echo Fertig
Gebt dieser Datei Ausführrechte:
Code:
chmod +x amarok_np.sh
Sobald ihr mit dem Streamen begonnen habt startet ihr dieses Script einfach:
Und schön werden dem Icecast2-Server die aktuellen Tags mitgeteilt.
Nun müssen wir noch die Aufnahmequelle in unserm Mixer einstellen.
Standardmässig dürfte dort als Aufnahmequlle MIC drin stehen. Dies stellt ihr (z.B: mit aumix) auf VOL oder IGAIN, je nachdem was euch zur Verfügung steht. (VORSICHT: ich hatte mit Rückkopplungen zu kämpfen, deswegen vor der Umstellung vielleicht die Boxen etwas leiser machen . Um Rückkopplungen zu vermeiden einfach PCM oder IGAIN etwas runterregeln.).
So, dann wollen wir mal ans Testen gehen. Unser server müsste ja von vorher noch laufen, so dass wir nun etwas in XMMS laufen lassen, ices2 anwerfen und uns zu ihm verbinden:
Code:
ices /home/hanf/streaming/ices.xml
Sollte alles glatt gegangen sein, sollten wir auf http://ip-desservers:8000/status.xsl nun sehen, dass ein stream läuft.
Nun könnt ihr euch noch von einem anderen Rechner mit z.B. xmms zu eurem Server verbinden und schauen, ob auch wirklich korrekt gestreamt wird.
Das Admin-Webinterface findet ihr unter:
Lesezeichen