Ices2

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte hilf mit, indem du diesen Artikel testest. Wiki/FAQ - häufig gestellte Fragen (Abschnitt „Wikiartikel-testen“).

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Bearbeiten von Paketquellen

  3. Ein Terminal öffnen

  4. Einen Editor öffnen

  5. Rechte für Dateien und Ordner ändern

Inhaltsverzeichnis
  1. Installation
  2. Bedienung
  3. Konfiguration
    1. Genereller Aufbau
    2. Generelle Einstellungen
    3. Stream-Abschnitt
      1. Metadata
      2. Input
      3. Instance
    4. Input Module
      1. ALSA
      2. OSS
      3. Playlist
  4. Links

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:

Paketliste zum Kopieren:

sudo apt-get install ices2 

Oder mit apturl die Pakete 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 geloggt

  • 2 - Obige und Warnmeldungen werden geloggt

  • 3 - Obige und Informationsmeldungen werden geloggt

  • 4 - 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>