Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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.
Folgendes Paket muss installiert [1] werden:
ices2 (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install ices2
sudo aptitude install ices2
Die Datei /var/log/ices/ices.log muss angelegt [4] und dem Benutzer zugänglich gemacht werden [5].
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
1 2 3 4 5 6 7 | <?xml version="1.0"?> <ices> <!-- Generelle Einstellungen --> general settings <!-- Stream Abschnitt --> stream section </ices> |
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> |
1
- Nur Fehlermeldungen werden geloggt
2
- Obige und Warnmeldungen werden geloggt
3
- Obige und Informationsmeldungen werden geloggt
4
- Obige und Debugmeldungen werden geloggt
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> |
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.
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.
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> |
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
.
Setzt den Port, auf dem der Icecast-Server kontaktiert wird. Normalerweise 8000
, kann aber in Abstimmung mit dem Server beliebig gewählt werden.
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
.
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.
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 ).
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.
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.
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.
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> |
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.
Setzt eine Bitrate, die vom Encoder eingehalten werden soll. Die Einstellung kann als Alternative zu quality
genutzt werden.
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.
Setzt die maximale Bitrate in Bits pro Sekunde, um die von einem Stream zu benutzende Bandbreite zu begrenzen. Funktioniert nur in Verbindung mit managed
.
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.
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.
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.
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
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> |
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
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> |
Diese Revision wurde am 1. Februar 2016 17:47 von aasche erstellt.