saintjoe
Bodybuilder
So, wie von pelz requested, soll es jetzt mal ein Howto zum Aufsetzen und Streamen mit Icecast2 und ices2 geben. Dieses Howto soll sich nicht mit allem Möglichkeiten von Icecast auseinandersetzen, sondern eine kleine Starthilfe zum Streamen geben.
1. - Wozu ist Icecast2 gut?
Icecast2 ist ein Streaming-Audio Server, der OGG-Vorbis Streams über das Internet bereitstellt. Man kann also so seinen eigenen kleinen Internet-Radiosender aufbauen.
2. - Installation und Konfiguration von Icecast2 auf dem Server
Icecast2 ist in den Ports vorhanden, und somit ist die Installation die kleinste Hürde bei der ganzen Sache:
cd /usr/ports/audio/icecast2/ && make install clean
Die Konfiguration des Servers ist auch recht einfach zu handhaben.
Legt unter /usr/local/etc eine Datei mit dem Namen icecast.xml an. Der Inhalt ist wie folgt (Kommentare von mir sind in []-Klammern):
So, dann ist der Icecast-Server auch schon "Ready to go".
Vor dem ersten starten noch das Log-Verzeichnis angelegt werden, also mkdir /usr/local/share/icecast/logs und der richtige Owner für das Verzeichnis gegeben sein, eg. chown user:usergroup /usr/local/share/icecast/logs
Jetzt kann auch der Icecast-Server das erste Mal gestartet werden:
/usr/local/bin/icecast -c /usr/local/etc/icecast.xml &
Wenn alles glatt läuft, bekommt ihr 2 Zeilen auf der Konsole ausgespuckt:
Kommt sonst nix, läuft der Server und ihr könnt euch auch schon testweise mal per telnet localhost 8000 mit ihm verbinden 
3. - Installation und Konfiguration von ices auf dem Client
Weiter im Text, als nächstes braucht ihr natürlich ein Programm, mit dem ihr die Musik auch an den Icecast-Server schicken könnt. Ich nutze hierzu ices, da es, wenn einmal eingerichtet, echt super läuft
cd /usr/ports/audio/ices/ && make install clean
Natürlich braucht auch ices eine Konfigurationsdatei. Ich streame mit meinem normalen User flo, also speicher ich die Konfigurationsdatei in /home/flo/stream/ices.xml. Da euer Username im System höchstwahrscheinlich ein anderer ist, müsst ihr das natürlich anpassen
So, und der Inhalt der ices.xml, auch hier gilt wieder: Kommentare von mir in []-Klammern:
So, dann komm ich mal zu der Sache mit dem "metadatafilename". Ich nutze xmms, und beim wechseln eines Songs wird ein kleines Script ausgeführt, dass diese Titleinfo updatet und die Änderungen an den Icecast schickt. Dazu müsst ihr in xmms das Plugin "Song Change" unter General Plugins aktivieren.
Beim Command, dass er ausführen soll, folgendes eingeben:
/usr/bin/perl /home/flo/stream/update.pl "%s"
Die Pfade müssen auch hier wieder angepasst werden. So, und dieses update.pl Skript sieht wie folgt aus (nicht lachen, bin nicht so der Perl-Guru
)
Auch hier wieder darauf achten die Pfade anzupassen.
So, dann kanns auch schon fast losgehen.
Was vor dem Streamen noch gemacht werden muss, ist den Mixer auf die eigenen Bedürfnisse anzupassen, d.H. in der Konsole:
mixer +rec vol - Das ist recht wichtig, da sonst Stille im Stream herrscht.
Die Lautstärke für des Recording Device und so müsst ihr anpassen, z.B. mit xmix, in der Konsole oder wie auch immer. Am besten einfach ein bisschen rumprobieren.
Jetzt startet ihr euren xmms, und fangt schonmal damit an, Musik zu spielen. Und jetzt kommt auch der große Moment, und zwar das starten von ices. Das geht wie folgt:
ices /home/flo/stream/ices.xml
Jetzt kommen erstmal ein paar Zeilen auf der Konsole, in etwa so:
Jetzt läuft der Stream - wenn ihr auf http://ip-des-icecast-servers:8000/status.xsl geht, erhaltet ihr eine Übersicht über die laufenden Streams, Anzahl der Zuhörer und so weiter.
4. - Sonstige Hinweise
Sagt nicht, ich hätte euch nicht gewarnt - so ein Streaming-Server kann eine Menge Traffic verbraten. Ausserdem solltet ihr den icecast auch wirklich auf einem Server installieren, der eine flotte Anbindung hat, da sonst nicht mehr als 1 oder 2 Leute zuhören können - also den Icecast auf einem Rechner, der per TDSL im netz ist und per stream.dyndns.org:8000/blabla.ogg angesprochen wird, sollte man tunlichst vermeiden
Ices hingegen kann natürlich auch auf langsameren Anschlüssen laufen, nur sollte darauf geachtet werden, dass die verfügbare Upstream-Bandbreite ausreicht. Also bei 128kbit Upstream keinen Stream mit einer Bitrate von 250kbit/s laufen lassen, da das eh nicht gut gehen wird
Wenn ihr dann mal euern Stream laufen habt, freuen wir uns natürlich alle über ein Announcement hier
Bei Fragen nutzt ruhig diesen Thread hier.
Gruß
1. - Wozu ist Icecast2 gut?
Icecast2 ist ein Streaming-Audio Server, der OGG-Vorbis Streams über das Internet bereitstellt. Man kann also so seinen eigenen kleinen Internet-Radiosender aufbauen.

2. - Installation und Konfiguration von Icecast2 auf dem Server
Icecast2 ist in den Ports vorhanden, und somit ist die Installation die kleinste Hürde bei der ganzen Sache:
cd /usr/ports/audio/icecast2/ && make install clean
Die Konfiguration des Servers ist auch recht einfach zu handhaben.
Legt unter /usr/local/etc eine Datei mit dem Namen icecast.xml an. Der Inhalt ist wie folgt (Kommentare von mir sind in []-Klammern):
Code:
<icecast>
<location>Not Currently Used</location>
<admin>Not Currently Used</admin>
<limits>
<clients>10</clients> [Maximale Anzahl Zuhörer]
<sources>10</sources> [Maximale Anzahl gleichzeitiger Streams]
<threadpool>5</threadpool>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
</limits>
<authentication>
<admin-user>admin</admin-user>
<admin-password>passwort</admin-password> [Sollte natürlich angepasst werden]
</authentication>
<source-password>passwort</source-password> [Das Source-Passwort wird nachher für ices benötigt]
<relay-password>passwort</relay-password> [Sollte natürlich angepasst werden]
<port>8000</port> [Auf welchem Port soll icecast lauschen?]
<master-password>passwort</master-password> [Sollte natürlich angepasst werden]
<fileserve>1</fileserve>
<paths>
<basedir>/usr/local/share/icecast</basedir>
<logdir>/usr/local/share/icecast/logs</logdir>
<webroot>/usr/local/share/icecast/web</webroot>
</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>
<changeowner>
<user>username</user> [Hier muss ein echter Username eingetragen werden]
<group>usergroup</group> [Hier muss ein echter Gruppenname eingetragen werden]
</changeowner>
</security>
</icecast>
So, dann ist der Icecast-Server auch schon "Ready to go".
Vor dem ersten starten noch das Log-Verzeichnis angelegt werden, also mkdir /usr/local/share/icecast/logs und der richtige Owner für das Verzeichnis gegeben sein, eg. chown user:usergroup /usr/local/share/icecast/logs
Jetzt kann auch der Icecast-Server das erste Mal gestartet werden:
/usr/local/bin/icecast -c /usr/local/etc/icecast.xml &
Wenn alles glatt läuft, bekommt ihr 2 Zeilen auf der Konsole ausgespuckt:
Code:
Changed groupid to 1001.
Changed userid to 1001.

3. - Installation und Konfiguration von ices auf dem Client
Weiter im Text, als nächstes braucht ihr natürlich ein Programm, mit dem ihr die Musik auch an den Icecast-Server schicken könnt. Ich nutze hierzu ices, da es, wenn einmal eingerichtet, echt super läuft

cd /usr/ports/audio/ices/ && make install clean
Natürlich braucht auch ices eine Konfigurationsdatei. Ich streame mit meinem normalen User flo, also speicher ich die Konfigurationsdatei in /home/flo/stream/ices.xml. Da euer Username im System höchstwahrscheinlich ein anderer ist, müsst ihr das natürlich anpassen

So, und der Inhalt der ices.xml, auch hier gilt wieder: Kommentare von mir in []-Klammern:
Code:
<?xml version="1.0"?>
<ices>
<background>0</background> <!-- run in background? (unimplemented) -->
<logpath>/home/flo/stream</logpath> <!-- where logs, etc go. -->
<logfile>ices.log</logfile>
<loglevel>4</loglevel> <!-- 1=error,2=warn,3=info,4=debug -->
<consolelog>1</consolelog>
<stream>
<metadata>
<name>Radio BlaBla</name>
<genre>Von A-Z</genre>
<description>Mein eigener Stream</description>
</metadata>
<input> [Eventuell müsst ihr hier ein bisschen was anpassen..]
<module>oss</module> [Mit Hilfe dieses Moduls wird alles, was über die Soundkarte geht gestreamt]
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="device">/dev/dsp</param>
<param name="metadata">1</param>
<param name="metadatafilename">/home/flo/stream/trackinfo.txt</param> [In dieser Datei steht die Titelinfo und so zum jeweiligen Lied, später mehr dazu]
</input>
<instance>
<hostname>server.example.com</hostname> [Tragt hier die IP des Servers ein, auf dem Icecast2 installiert wurde]
<port>8000</port> [Hier den Port, siehe icecast.xml]
<password>passwort</password> [Hier das Source-Passwort, siehe icecast.xml]
<mount>/meinradio.ogg</mount> [Hier wird der Mountpoint angegeben, auf den die Zuhörer später zugreifen]
<reconnectdelay>2</reconnectdelay>
<reconnectattempts>5</reconnectattempts>
<maxqueuelength>80</maxqueuelength>
<encode> [Hier gilt, die untenstehenden Werte der eigenen Leitung oder Qualitätsvorstellung anzupassen. Eine Lösung, die alle glücklich macht, kann ich hier nicht wirklich posten]
<nominal-bitrate>96000</nominal-bitrate>
<samplerate>44100</samplerate>
<channels>2</channels>
</encode>
</instance>
</stream>
</ices>
So, dann komm ich mal zu der Sache mit dem "metadatafilename". Ich nutze xmms, und beim wechseln eines Songs wird ein kleines Script ausgeführt, dass diese Titleinfo updatet und die Änderungen an den Icecast schickt. Dazu müsst ihr in xmms das Plugin "Song Change" unter General Plugins aktivieren.
Beim Command, dass er ausführen soll, folgendes eingeben:
/usr/bin/perl /home/flo/stream/update.pl "%s"
Die Pfade müssen auch hier wieder angepasst werden. So, und dieses update.pl Skript sieht wie folgt aus (nicht lachen, bin nicht so der Perl-Guru

Code:
#!/usr/bin/perl
@trackinfo = split(/ - /, $ARGV[0]);
system("echo \"TITLE=$trackinfo[1]\" > /home/flo/stream/trackinfo.txt");
system("echo \"ARTIST=$trackinfo[0]\" >> /home/flo/stream/trackinfo.txt");
system("killall -USR1 ices");
So, dann kanns auch schon fast losgehen.
Was vor dem Streamen noch gemacht werden muss, ist den Mixer auf die eigenen Bedürfnisse anzupassen, d.H. in der Konsole:
mixer +rec vol - Das ist recht wichtig, da sonst Stille im Stream herrscht.
Die Lautstärke für des Recording Device und so müsst ihr anpassen, z.B. mit xmix, in der Konsole oder wie auch immer. Am besten einfach ein bisschen rumprobieren.
Jetzt startet ihr euren xmms, und fangt schonmal damit an, Musik zu spielen. Und jetzt kommt auch der große Moment, und zwar das starten von ices. Das geht wie folgt:
ices /home/flo/stream/ices.xml
Jetzt kommen erstmal ein paar Zeilen auf der Konsole, in etwa so:
Code:
[2003-11-23 15:59:38] INFO ices-core/main ices started...
[2003-11-23 15:59:38] INFO input-oss/oss_open_module Opened audio device /dev/dsp at 2 channel(s), 44100 Hz
[2003-11-23 15:59:38] INFO input-oss/oss_open_module Started metadata update thread
[2003-11-23 15:59:38] INFO signals/signal_usr1_handler Metadata update requested
[2003-11-23 15:59:38] INFO metadata/metadata_thread_signal tag 1 is TITLE=lbubb
[2003-11-23 15:59:38] INFO metadata/metadata_thread_signal tag 2 is ARTIST=bla
[2003-11-23 15:59:38] INFO metadata/metadata_thread_signal Updating metadata
[2003-11-23 15:59:38] INFO encode/encode_initialise Encoder initialising with bitrate management: 2 channels, 44100 Hz, minimum bitrate -1, nominal 96000, maximum -1
[2003-11-23 15:59:38] INFO stream/ices_instance_stream Connected to server: ns2.bsdforen.de:8000/meinradio.ogg
[2003-11-23 15:59:38] DBUG encode/encode_clear Clearing encoder engine
[2003-11-23 15:59:38] INFO encode/encode_initialise Encoder initialising with bitrate management: 2 channels, 44100 Hz, minimum bitrate -1, nominal 96000, maximum -1
Jetzt läuft der Stream - wenn ihr auf http://ip-des-icecast-servers:8000/status.xsl geht, erhaltet ihr eine Übersicht über die laufenden Streams, Anzahl der Zuhörer und so weiter.
4. - Sonstige Hinweise
Sagt nicht, ich hätte euch nicht gewarnt - so ein Streaming-Server kann eine Menge Traffic verbraten. Ausserdem solltet ihr den icecast auch wirklich auf einem Server installieren, der eine flotte Anbindung hat, da sonst nicht mehr als 1 oder 2 Leute zuhören können - also den Icecast auf einem Rechner, der per TDSL im netz ist und per stream.dyndns.org:8000/blabla.ogg angesprochen wird, sollte man tunlichst vermeiden

Ices hingegen kann natürlich auch auf langsameren Anschlüssen laufen, nur sollte darauf geachtet werden, dass die verfügbare Upstream-Bandbreite ausreicht. Also bei 128kbit Upstream keinen Stream mit einer Bitrate von 250kbit/s laufen lassen, da das eh nicht gut gehen wird

Wenn ihr dann mal euern Stream laufen habt, freuen wir uns natürlich alle über ein Announcement hier

Bei Fragen nutzt ruhig diesen Thread hier.
Gruß