Ices2
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Ices2 🇬🇧 ist ein Source-Client aus dem Icecast-Projekt. Ices2 sendet die Ausgabe der Soundkarte oder eine Abspielliste als einen Ogg/Vorbis-Stream an einen Icecast2-Server.
Installation¶
Folgendes Paket muss installiert [1] werden:
ices2 (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install ices2
Oder mit apturl installieren, Link: apt://ices2
Die Datei /var/log/ices/ices.log muss angelegt [4] und dem Benutzer zugänglich gemacht werden [5].
Bedienung¶
Ices2 wird über .xml-Dateien konfiguriert. Unter /usr/share/doc/ices2/examples/ sind zwei Beispieldateien für das Senden des Soundtreiber-Signals (je nachdem, ob man ALSA oder OSS nutzt) und eine Beispielkonfiguration für das Senden einer Abspielliste, welche im einfachen Textformat erstellt werden kann. Der Programmaufruf erfolgt unter Angabe der Konfigurationsdatei:
ices2 /PFAD/ZUR/Konfiguration.xml
Konfiguration¶
Genereller Aufbau¶
1 2 3 4 5 6 7 | <?xml version="1.0"?> <ices> <!-- Generelle Einstellungen --> general settings <!-- Stream Abschnitt --> stream section </ices> |
Generelle Einstellungen¶
Diese Einstellungen betreffen IceS als Ganzes. Das folgende Beispiel ist ein nützliches Arbeits-Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!-- Auf 1 gesetzt arbeitet IceS im Hintergrund --> <background>0</background> <!-- Pfad zur Log-Datei --> <logpath>/var/log/ices</logpath> <!-- Name der Log-Datei --> <logfile>ices.log</logfile> <!-- maximale Größe einer Log-Datei in KB --> <logsize>2048</logsize> <!-- Log-Level siehe unten --> <loglevel>3</loglevel> <!-- 1 bewirkt die Ausgabe der Log-Meldungen in der Konsole statt in die Log-Datei. Nicht zu empfehlen. --> <consolelog>0</consolelog> <!-- # Erstellt eine Datei mit der Prozess-ID des laufenden IceS --> <pidfile>/var/log/ices/ices.pid</pidfile> |
Log-Level¶
1
- Nur Fehlermeldungen werden geloggt2
- Obige und Warnmeldungen werden geloggt3
- Obige und Informationsmeldungen werden geloggt4
- Obige und Debugmeldungen werden geloggt
Stream-Abschnitt¶
Hier sind die Einstellungen für den ein- und ausgehenden Datenstrom festgelegt.
1 2 3 4 5 | <stream> <metadata>...</metadata> <input>...</input> <instance>...</instance> </stream> |
Metadata¶
1 2 3 4 5 6 | <metadata> <name>Ubuntuusers Icecast2 Test Stream</name> <genre>Rock</genre> <description>This is the Ubuntuusers Icecast2 Radio Test Stream!</description> <url>http://wiki.ubuntuusers.de/Ices2</url> </metadata> |
Dieser Abschnitt beschreibt, welche Informationen als Metadaten beim Verbinden an den Icecast-Server gesendet werden. Dieser Abschnitt gilt für alle Instanzen, kann aber vom Abschnitt einer einzelnen Instanz überschrieben werden.
Input¶
Dieser Bereich behandelt, wie die Audiodaten von Ices2 geholt werden. Es gibt verschiedene Wege, wie dies bewerkstelligt werden kann, meistens durch eine Abspielliste oder über das Signal der Soundkarte. Das Layout für die verschiedenen Inputmodule ist ähnlich. Innerhalb des Input-Abschnitts wird ein Modul-Tag zur Identifikation des in Frage kommenden Moduls benötigt, dem verschiedene Parameter mitgegeben werden können. Einzelheiten zu den Modul-Parametern werden später erläutert.
Instance¶
Mehrere Instanzen können definiert werden, um mehrere Encodierungs-Vorgänge zu erlauben, was nützlich ist, um einen Input in verschiedenen Bitraten ausgeben zu können. Jede Instanz definiert einen eigenen Satz von Einstellungen für den eingehenden Audio-Datenstrom. Jede Änderung am Input wird auf die Instanz angewendet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <instance> <hostname>localhost</hostname> <port>8000</port> <password>hackme</password> <mount>/Beispiel1.ogg</mount> <yp>1</yp> <resample> <in-rate>44100</in-rate> <out-rate>22050</out-rate> </resample> <downmix>1</downmix> <savefile>/home/ices/dump/stream1.ogg</savefile> <encode> <quality>0</quality> <nominal-bitrate>65536</nominal-bitrate> <maximum-bitrate>131072</maximum-bitrate> <minimum-bitrate>-1</minimum-bitrate> <managed>0</managed> <samplerate>22050</samplerate> <channels>1</channels> <flush-samples>11000</flush-samples> </encode> </instance> |
hostname¶
Setzt den hostname des Icecast-Servers, der kontaktiert wird. Dies kann ein Name oder eine IP-Adresse (ipv4 oder ipv6 auf Systemen, die ipv6 unterstützen) sein. Die Voreinstellung ist localhost
.
port¶
Setzt den Port, auf dem der Icecast-Server kontaktiert wird. Normalerweise 8000
, kann aber in Abstimmung mit dem Server beliebig gewählt werden.
password¶
Zum Bereitstellen des Streams werden der Benutzername des Benutzers source
und dessen Passwort für den Icecast-Server benötigt. Im Icecast2-Server sind dies beispielsweise source
und hackme
.
mount¶
Mountpoints (Einbindepunkte) werden verwendet, um einen einzelnen Stream auf einem Icecast-Server zu identifizieren. Sie müssen mit einem / beginnen und sollten mit .ogg enden.
yp¶
Streams werden nicht in den Yellow Pages gelistet, außer yp
ist ausdrücklich eingestellt (Wert ist 1
). In den Yellow Pages werden Internetradio-Stationen mit Name, Beschreibung, Genre und laufendem Titel geführt, damit Zuhörer diese finden können (beispielsweise auf dir.xiph.org 🇬🇧).
Resample¶
1 2 3 4 | <resample> <in-rate>44100</in-rate> <out-rate>22050</out-rate> </resample> |
Beim Encodieren oder Re-Encodieren kommt ein Punkt, an dem PCM-Audiodaten als Ogg/Vorbis encodiert werden. In manchen Situationen verlangt ein bestimmter Stream vielleicht eine niedrigere Samplerate, um eine niedrigere Bitrate zu erreichen. Die Resample-Funktion verändert die Audiodaten, bevor sie den Encoder durchlaufen.
Die gängigsten Einstellungen sind 48000
, 44100
, 22050
und 11025
, und es ist wirklich nur brauchbar, um eine niedrigere Samplerate zu erreichen. Die Samplerate mit IceS zu erhöhen ist nicht möglich.
Downmix¶
Einige Streams wollen ihre Bitrate noch weiter absenken, dazu wird die Anzahl der verwendeten Kanäle auf einen beschränkt. Die Umwandlung von Stereo in Mono ist allgemein üblich und wenn hier 1
eingestellt ist, werden die vorhandenen Kanäle zu einem Kanal (Mono) zusammengemischt. Wie bei der Resample-Funktion betrifft dies nur die Instanz, zu der es notiert ist.
Savefile¶
Manchmal soll der gesendete Stream auch gleich auf die Festplatte gespeichert werden. Nützlich ist dies vor allem bei Live-Aufnahmen. Dazu muss hier nur der Pfad angegeben werden, wo der Stream abgespeichert werden soll.
encode¶
1 2 3 4 5 6 7 8 9 10 | <encode> <quality>0</quality> <nominal-bitrate>65536</nominal-bitrate> <maximum-bitrate>131072</maximum-bitrate> <minimum-bitrate>-1</minimum-bitrate> <managed>0</managed> <samplerate>22050</samplerate> <channels>1</channels> <flush-samples>11000</flush-samples> </encode> |
quality¶
Setzt ein Qualitätsmaß für den Encoder. Die Einstellungsbreite liegt zwischen -1
und 10
, wobei -1
die niedrigste Bitrate ist, und 10
die höchste (default 3
), Dezimalwerte sind erlaubt, somit ist z.B. 1.5
erlaubt. Die aktuell verwendete Bitate hängt von der Einstellung der Vorbis-Bibliotheken, den Kanälen (Mono oder Stereo) und den zu encodierenden Audiodaten ab. Der Wert 0
für quality
bei einer Samplerate von 44100hz und zwei Kanälen liegt im Normalfall bei 64kbps.
nominal-bitrate¶
Setzt eine Bitrate, die vom Encoder eingehalten werden soll. Die Einstellung kann als Alternative zu quality
genutzt werden.
managed¶
Auf 1 gesetzt erlaubt dies die vollständige Verwaltung der Bitrate durch den Encoder. Dies wird zusammen mit nominal-bitrate
, maximum-bitrate
und minimum-bitrate
benutzt, um einen Stream mit genaueren Anforderungen an die Bitrate zu erzeugen. Diese Einstellung führt allerdings zu höherer CPU-Last.
maximum-bitrate¶
Setzt die maximale Bitrate in Bits pro Sekunde, um die von einem Stream zu benutzende Bandbreite zu begrenzen. Funktioniert nur in Verbindung mit managed
.
minimum-bitrate¶
Setzt die minimale Bitrate in Bits pro Sekunde, um die minimal von einem Stream benutzte Bandbreite zu begrenzen. Funktioniert nur in Verbindung mit managed
. Da diese Funktion einen geringen Nutzen hat, sollte sie nicht wirklich Anwendung finden.
samplerate¶
Setzt die zum Encodieren verwendete Samplerate, welche entweder die Samplerate des Inputs oder das Ergebnis der resample
-Funktion sein muss. Ein falsch gesetzter Wert führt dazu, dass der Stream sich zu schnell oder langsam anhört.
channels¶
Setzt die Anzahl der Kanäle, die encodiert werden sollen. Dies ist entweder die Anzahl der Kanäle des verwendeten Input-Moduls oder 1
, wenn downmix
benutzt wird.
Input Module¶
ALSA¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <module>alsa</module> <!-- Samplerate in Hertz. 44100hz entspricht CD Qualität, manche Treiber bevorzugen 48000hz --> <param name="rate">44100</param> <!-- Anzahl der Kanäle. Normalerweise 2 für Stereo, 1 für Mono --> <param name="channels">2</param> <!-- die Soundkarte --> <param name="device">hw:0,0</param> <!-- Anzahl der zu erstellenden Interrupts --> <param name="periods">2</param> <!-- Buffergröße in Millisekunden --> <param name="buffer-time">500</param> <!-- Metadaten-Update für Artist und Titel --> <param name="metadata">1</param> <!-- Datei, aus der Metadaten gelesen werden sollen --> <param name="metadatafilename">/home/ices/metadata</param> |
Beispiel für metadatafile:
artist=raindog title=meet yourself
OSS¶
1 2 3 4 5 6 7 8 9 10 11 | <module>oss</module> <!-- Samplerate in Hertz. 44100hz entspricht CD Qualität, manche Treiber bevorzugen 48000hz --> <param name="rate">44100</param> <!-- Anzahl der Kanäle. Normalerweise 2 für Stereo, 1 für Mono --> <param name="channels">2</param> >!-- die Soundkarte --> <param name="device">/dev/dsp</param> <!-- Metadaten-Update für Artist und Titel --> <param name="metadata">1</param> <!-- Datei, aus der Metadaten gelesen werden sollen --> <param name="metadatafilename">/home/ices/metadata</param> |
Playlist¶
Basic¶
1 2 3 4 5 6 7 8 9 10 | <!-- eine Playlist in einfachem Textformat --> <param name="type">basic</param> <!-- Speicherort der Playlist --> <param name="file">/pfad/zur/playlist</param> <!-- Abspielreihenfolge der Playlist zufällig ändern --> <param name="random">0</param> <!-- auf 1 gesetzt, beendet dies IceS nach dem einmaligen Durchlaufen der Playlist --> <param name="once">0</param> <!-- Playlist nach Update von vorne beginnen --> <param name="restart-after-reread">1</param> |
Beispielhafte Abspielliste im einfachen Textformat:
/pfad/datei_1.ogg /pfad/datei_2.ogg /pfad/datei_n.ogg
Skript¶
Ein Skript oder Programm, das den Speicherort einer OggVorbis-Datei ausgibt:
1 2 3 | <param name="type">script</param> <!-- Speicherort des Skripts --> <param name="program">/path/to/program</param> |
Links¶
Internetradio Übersichtsartikel