PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::Icecast Klassenreferenz

Audio-Daten zu einem Icecast-Server streamen. Mehr ...

Öffentliche Methoden

 Icecast ()
 Konstruktor. Mehr ...
 
 ~Icecast ()
 Destruktor. Mehr ...
 
String agent () const
 Agent auslesen. Mehr ...
 
String audioInfo (const String &name) const
 Audio-Information auslesen. Mehr ...
 
void connect ()
 Verbindung zum Server herstellen. Mehr ...
 
bool connected ()
 Verbindung zum Server vorhanden? Mehr ...
 
int delay ()
 Number of milliseconds the caller should wait. Mehr ...
 
String description () const
 Beschreibung auslesen. Mehr ...
 
void disconnect ()
 Verbindung trennen. Mehr ...
 
String dumpfile () const
 Name des Archiv-Files auslesen. Mehr ...
 
String genre () const
 Genres auslesen. Mehr ...
 
String getVersion (int *major=NULL, int *minor=NULL, int *patch=NULL) const
 Version der libshout auslesen. Mehr ...
 
String host () const
 Hostname des Servers auslesen. Mehr ...
 
String mount () const
 Mount-Punkt auslesen. Mehr ...
 
String name () const
 Name des Streams auslesen. Mehr ...
 
String password () const
 Passwort für die Authentisierung auslesen. Mehr ...
 
int port () const
 Port des Servers auslesen. Mehr ...
 
void send (const void *buffer, size_t bytes)
 Audiodaten senden. Mehr ...
 
void sendMetadata (const String &name, const String &value)
 Metadaten setzen. Mehr ...
 
void setAgent (const String &agent)
 User Agent setzen. Mehr ...
 
void setAudioInfo (const String &name, const String &value)
 Audio-Information setzten. Mehr ...
 
void setConnection (const String &host, int port, const String &password)
 Verbindungsdaten festlegen. Mehr ...
 
void setDescription (const String &description)
 Beschreibung des Streams setzen. Mehr ...
 
void setDumpfile (const String &file)
 Stream auf dem Server archivieren. Mehr ...
 
void setFormatMP3 ()
 Stream-Format auf MP3 festlegen. Mehr ...
 
void setFormatOGG ()
 Stream-Format auf OGG festlegen. Mehr ...
 
void setGenre (const String &genre)
 Genre festlegen. Mehr ...
 
void setMount (const String &mount)
 Mount-Punkt festlegen. Mehr ...
 
void setName (const String &name)
 Name des Streams festlegen. Mehr ...
 
void setNonBlocking (bool flag)
 Verbindung auf Non-Blocking setzen. Mehr ...
 
void setPublic (bool makepublic)
 Stream als öffentlich bekannt geben. Mehr ...
 
void setTitle (const String &title)
 Aktuellen Titel übermitteln. Mehr ...
 
void setUrl (const String &url)
 URL der Webseite festlegen. Mehr ...
 
void setUser (const String &user)
 Benutzernamen für die Authentifizierung festlegen. Mehr ...
 
void sync ()
 Synchronise with Stream. Mehr ...
 
String url () const
 URL auslesen. Mehr ...
 
String user () const
 Benutzernamen auslesen. Mehr ...
 
String version () const
 Version der libshout auslesen. Mehr ...
 

Private Attribute

bool bconnected
 
void * shout
 

Ausführliche Beschreibung

Beschreibung:
Mit dieser Klasse kann ein MP3 oder OGG Datenstrom an einen Icecast-Server gestreamt werden. Um sie verwenden zu können, muss auf dem System die Bibliothek "libshout" vorhanden und beim "configure" gefunden worden sein.
Siehe auch
http://www.icecast.org/
Beispiel:
Das folgende Beispiel zeigt einen einfachen Fall, wie eine MP3-Datei an einen Icecast-Server gestreamt werden kann.
#include <ppl7.h>
#include <ppl7-audio.h>
int main(int argc, char **argv)
{
ppl7::Icecast ice; // Icecast-Objekt anlegen
ppl7::File file;
// Version der libshout ausgeben
printf ("libshout-Version: %s\n",(const char*)ice.version());
// Zu streamende MP3-Datei öffnen
if (!file.Open("/musik/powerplay/Ausgaben/Powerplay 152.mp3")) {
ppl6::PrintError();
return 1;
}
// Buffer für Audio-Daten reservieren
char *buffer=(char*)malloc(8192);
if (!buffer) {
printf("Kein Speicher!\n");
return 1;
}
// Exceptions abfangen
try {
// Stream-Format auf MP3 setzen
ice.setFormatMP3();
// Verbindungsparameter definieren
ice.setConnection("icecast.pfp.de",8000,"icesource");
// Mount-Punkt festlegen
ice.setMount("/live");
// Stream-Informationen setzen
ice.setGenre("Trance House Techno Electro");
ice.setName("Patrick F.'s Powerplay");
ice.setUrl("http://powerplay.pfp.de/");
ice.setDescription("Trance, House, Techno, Electro, mixed by Patrick Fedick");
// Verbindung zum Server aufbauen
ice.connect();
// Name des aktuellen Titels als Metainformation senden
ice.setTitle("Powerplay Ausgabe 152");
printf ("Beginne Stream\n");
size_t bytes;
// Quelldatei Schrittweise einlesen
while ((bytes=file.Fread(buffer,1,8192))) {
// Mit Server synchronisieren
ice.sync();
// Daten senden
ice.send(buffer,bytes);
}
printf ("Stream beendet\n");
} catch (ppl6::Exception& e) {
// Ursache der Exception ausgeben
printf ("Exception aufgetreten: %s\n",e.what());
free(buffer);
return 1;
}
free(buffer);
return 0;
}
Nach Starten des Streams, sind folgende Informationen dem Icecast-Server zu entnehmen:
icecast_status.png

Beschreibung der Konstruktoren und Destruktoren

ppl7::Icecast::Icecast ( )
Beschreibung:
Der Konstruktor der Klasse prüft, ob bereits weitere Instanzen bestehen. Ist dies nicht der Fall, wird die Shoutcast-Bibliothek initialisiert.
Ausnahmebehandlung
OutOfMemoryExceptionWird geworfen, wenn kein Speicher mehr frei ist
UnsupportedFeatureExceptionWird geworfen, wenn libshout nicht einkompiliert ist.
TooManyInstancesExceptionEs können maximal 65535 Instanzen der Klasse angelegt werden
ppl7::Icecast::~Icecast ( )
Beschreibung:
Der Destruktor gibt den durch die Instanz der Klasse belegten Speicher wieder frei. Falls es sich um die letzte Instanz der Klasse handelt, wird die Shoutcast-Bibliothek zusätzlich ebenfalls deinitialisiert.

Dokumentation der Elementfunktionen

String ppl7::Icecast::agent ( ) const
Beschreibung:
Den Namen des zur Zeit gesetzten Agent auslesen.
Rückgabe
String mit dem Namen des Agent
String ppl7::Icecast::audioInfo ( const String name) const
Beschreibung:
Gibt die unter dem Namen name gespeicherten Audio-Informationen zurück.
Parameter
nameName des Parameters
Rückgabe
String mit dem Wert des Parameters
void ppl7::Icecast::connect ( )
Beschreibung:
Mit dieser Funktion wird die Verbindung zum Icecast-Server hergestellt.
Ausnahmebehandlung
OutOfMemoryExceptionKein Speicher mehr frei
IllegalArgumentExceptionEs fehlen Parameter, z.B. wenn Icecast::setConnection nicht aufgerufen wurde
AlreadyConnectedExceptionEs besteht bereits eine Verbindung
ConnectionFailedExceptionVerbindung fehlgeschlagen
SocketExceptionBei der Kommunikation mit dem Server ist ein Fehler aufgetreten
LoginRefusedExceptionAnmeldung fehlgeschlagen (z.B. falsches Passwort)
NoConnectionExceptionEs besteht keine Verbindung
OperationFailedExceptionVerbindung aus anderen Gründen fehlgeschlagen
bool ppl7::Icecast::connected ( )
Beschreibung:
Diese Funktion liefert true zurück, wenn eine Verbindung zum Server vorhanden ist, andernfalls false.
Rückgabe
Gibt true oder false zurück.
int ppl7::Icecast::delay ( )
Beschreibung:
Returns the number of milliseconds the caller should wait before calling Icecast::send again. This function is provided as an alternative to Icecast::sync for applications that may wish to do other processing in the meantime.
Rückgabe
Number of milliseconds the caller should wait.
String ppl7::Icecast::description ( ) const
Beschreibung:
Beschreibung für diesen Stream auslesen.
Rückgabe
String mit der Beschreibung
void ppl7::Icecast::disconnect ( )
Beschreibung:
Durch Aufruf dieser Funktion wird eine bestehende Verbindung zum Server getrennt.
Ausnahmebehandlung
OutOfMemoryExceptionKein Speicher mehr frei
IllegalArgumentExceptionEs fehlen Parameter
SocketExceptionBei der Kommunikation mit dem Server ist ein Fehler aufgetreten
LoginRefusedExceptionAnmeldung fehlgeschlagen (z.B. falsches Passwort)
NoConnectionExceptionEs besteht keine Verbindung
OperationFailedExceptionVerbindung aus anderen Gründen fehlgeschlagen
String ppl7::Icecast::dumpfile ( ) const
Beschreibung:
Mit dieser Funktion wird der Name des Archiv-Files auf dem Server ausgelesen, sofern vorher eins mit der Funktion Icecast::setDumpfile gesetzt wurde.
Rückgabe
String mit dem Namen des Archiv-Files.
String ppl7::Icecast::genre ( ) const
Beschreibung:
Gibt die zur Zeit definierten Genres als String zurück
Rückgabe
String mir den Genres
String ppl7::Icecast::getVersion ( int *  major = NULL,
int *  minor = NULL,
int *  patch = NULL 
) const
Beschreibung:
Mit dieser Funktion kann die Version der einkompilierten "libshout" ausgelesen werden. Die Funktion liefert zum einen einen String mit der Version zurück, zum anderen können die einzelnen Bestandteile mittels der optionalen Parameter major, minor und patch als Integer ausgelesen werden. Ein Wert, für den ein NULL-Pointer übergeben wurde, wird nicht befüllt. Falls die einzelnen Bestandteile nicht benötigt werden, kann auch die Funktion Icecast::version verwendet werden.
Parameter
majorPointer auf einen Integer, der die Major-Version aufnehmen soll
minorPointer auf einen Integer, der die Minor-Version aufnehmen soll
patchPointer auf einen Integer, der den Patch-Level der Version aufnehmen soll
Rückgabe
String mit der Version
String ppl7::Icecast::host ( ) const
Beschreibung:
Den Hostnamen des Icecast-Servers auslesen.
Rückgabe
String mit dem Hostnamen des Servers.
String ppl7::Icecast::mount ( ) const
Beschreibung:
Den für diesen Stream definierten Mount-Punkt auslesen.
Rückgabe
String mit dem Namen des Mount-Punkts.
String ppl7::Icecast::name ( ) const
Beschreibung:
Den Namen des Streams auslesen.
Rückgabe
String mit dem Namen des Streams
String ppl7::Icecast::password ( ) const
Beschreibung:
Das für die Authentisierung am Server verwendete Passwort auslesen.
Rückgabe
String mit dem Passwort.
int ppl7::Icecast::port ( ) const
Beschreibung:
Den Port des Icecast-Servers auslesen.
Rückgabe
Integer mit dem Port des Servers.
void ppl7::Icecast::send ( const void *  buffer,
size_t  bytes 
)
Beschreibung:
Mit dieser Funktion werden die bereits komprimierten Audio-Daten an den Icecast- Server gesendet.
Parameter
bufferPointer auf den Beginn der zu sendenden Audiodaten
bytesAnzahl zu sendender Bytes
Ausnahmebehandlung
OutOfMemoryExceptionKein Speicher mehr frei
IllegalArgumentExceptionEs fehlen Parameter
SocketExceptionBei der Kommunikation mit dem Server ist ein Fehler aufgetreten
LoginRefusedExceptionAnmeldung fehlgeschlagen (z.B. falsches Passwort)
NoConnectionExceptionEs besteht keine Verbindung
OperationFailedExceptionÜbertragung aus anderen Gründen fehlgeschlagen
void ppl7::Icecast::sendMetadata ( const String name,
const String value 
)
Beschreibung:
Sets metadata on the connection. Only MP3 streams support this type of metadata update. You may use this function on defined but closed connections (this is useful if you simply want to set the metadata for a stream provided by another process).
Parameter
nameName der Metadaten
valueInhalt der Metadaten
void ppl7::Icecast::setAgent ( const String agent)
Beschreibung:
Sets the user agent header. This is "libshout/VERSION" by default. If you don't know what this function is for, don't use it.
Parameter
agentString mit dem Namen des Agent
void ppl7::Icecast::setAudioInfo ( const String name,
const String value 
)
Beschreibung:
Sets a stream audio parameter (eg bitrate, samplerate, channels or quality). The currently defined parameters are listed in the Audio Info Constants section, but you are free to add additional fields if your directory server understands them.
Parameter
nameName des Parameters
valueInhalt des Parameters
void ppl7::Icecast::setConnection ( const String host,
int  port,
const String password 
)
Beschreibung:
Mit dieser Funktion werden die wichtigsten Daten für die Verbindung zum Server festgelegt.
Parameter
hostString mit dem Hostnamen oder der IP-Adresse des Icecast-Servers
portInteger mit der Port-Nummer des Servers
passwordString mit dem Passwort zur Authentisierung
Zu beachten
Üblicherweise wird als Benutzername zur Authentifizierung "source" verwendet. Soll ein anderer Benutzername verwendet werden, kann dieser mit der Funktion Icecast::setUser festgelegt werden.
void ppl7::Icecast::setDescription ( const String description)
Beschreibung:
Setzt die Beschreibung für diesen Stream.
Parameter
descriptionString mit der Beschreibung.
void ppl7::Icecast::setDumpfile ( const String file)
Beschreibung:
If the server supports it, you can request that your stream be archived on the server under the name file. This can quickly eat a lot of disk space, so think twice before setting it.
Parameter
fileName des Archiv-Files
void ppl7::Icecast::setFormatMP3 ( )
Beschreibung:
Mit dieser Funktion wird das Datenformat des Streams auf MP3 festgelegt.
void ppl7::Icecast::setFormatOGG ( )
Beschreibung:
Mit dieser Funktion wird das Datenformat des Streams auf OGG festgelegt.
void ppl7::Icecast::setGenre ( const String genre)
Beschreibung:
Sets the genre (or genres) of the stream. This is usually a keyword list, eg "pop rock rap".
Parameter
genreString mit den Genres
void ppl7::Icecast::setMount ( const String mount)
Beschreibung:
Mit dieser Funktion wird der Mount-Punkt des Streams am Server festgelegt.
Parameter
mountString mit dem Namen des Mount-Punkts.
Beispiel:
Im Icecast-Server ist folgender Mount-Punkt definiert:
   <mount>
       <mount-name>/live</mount-name>
       <username>source</username>
       <password>icesource</password>
   </mount>
Der Name des Mount-Punkts ist also "/live". Die Funktion würde also folgendermassen aufgerufen werden:
ppl6::Icecast ice;
ice.setConnection("icecast.example.org",1234,"icesource");
ice.setMount("/live");
void ppl7::Icecast::setName ( const String name)
Beschreibung:
Den Namen des Streams festlegen
Parameter
nameString mit dem Namen des Streams
void ppl7::Icecast::setNonBlocking ( bool  flag)
Beschreibung:
Durch Aufruf dieser Funktion wird der Stream auf Non-Blocking eingestellt. Dies muss vor Verbindungsaufbau geschehen (Icecast::connect) und kann nicht danach nicht verändert werden.
Parameter
flag
void ppl7::Icecast::setPublic ( bool  makepublic)
Beschreibung:
Setting this to true asks the server to list the stream in any directories it knows about. To suppress listing, set this to false. The default is false.
Parameter
makepublic
void ppl7::Icecast::setTitle ( const String title)
Beschreibung:
Mit dieser Funktion wird der aktuelle Titel (bzw. der angegebene String title) als Metdataten vom Typ "song" an den Icecast-Server übermittelt.
Parameter
titleString mit dem Namen des aktuellen Titels
void ppl7::Icecast::setUrl ( const String url)
Beschreibung:
Mit dieser Funktion wird die URL der Webseite definiert, unter der man weitere Informationen zum Stream finden kann.
Parameter
urlString mit der URL der Webseite
void ppl7::Icecast::setUser ( const String user)
Beschreibung:
Sets the user to authenticate as, for protocols that can use this parameter. The default is "source".
Parameter
userString mit dem Benutzernamen
void ppl7::Icecast::sync ( )
Beschreibung:
Causes the caller to sleep for the amount of time necessary to play back audio sent since the last call to shout_sync. Should be called before every call to Icecast::send to ensure that audio data is sent to the server at the correct speed. Alternatively, the caller may use Icecast::delay to determine the number of milliseconds to wait and delay itself.
String ppl7::Icecast::url ( ) const
Beschreibung:
Auslesen der zur Zeit definierten URL.
Rückgabe
String mit der URL
Siehe auch
Icecast::setURL - Setzen der URL
String ppl7::Icecast::user ( ) const
Beschreibung:
Mit dieser Funktion wird der zur Authentifizierung verwendete Benutzername ausgelesen.
Rückgabe
String mit dem Benutzernamen
String ppl7::Icecast::version ( ) const
Beschreibung:
Mit dieser Funktion kann die Version der einkompilierten "libshout" als String ausgelesen werden.
Rückgabe
String mit der Version der libshout.

Dokumentation der Datenelemente

bool ppl7::Icecast::bconnected
private
void* ppl7::Icecast::shout
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: