PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CIcecast Klassenreferenz

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

Öffentliche Methoden

 CIcecast ()
 Konstruktor. Mehr ...
 
 ~CIcecast ()
 Destruktor. Mehr ...
 
CString agent () const
 Agent auslesen. Mehr ...
 
CString audioInfo (const CString &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 ...
 
CString description () const
 Beschreibung auslesen. Mehr ...
 
void disconnect ()
 Verbindung trennen. Mehr ...
 
CString dumpfile () const
 Name des Archiv-Files auslesen. Mehr ...
 
CString genre () const
 Genres auslesen. Mehr ...
 
CString getVersion (int *major=NULL, int *minor=NULL, int *patch=NULL) const
 Version der libshout auslesen. Mehr ...
 
CString host () const
 Hostname des Servers auslesen. Mehr ...
 
CString mount () const
 Mount-Punkt auslesen. Mehr ...
 
CString name () const
 Name des Streams auslesen. Mehr ...
 
CString 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 CString &name, const CString &value)
 Metadaten setzen. Mehr ...
 
void setAgent (const CString &agent)
 User Agent setzen. Mehr ...
 
void setAudioInfo (const CString &name, const CString &value)
 Audio-Information setzten. Mehr ...
 
void setConnection (const CString &host, int port, const CString &password)
 Verbindungsdaten festlegen. Mehr ...
 
void setDescription (const CString &description)
 Beschreibung des Streams setzen. Mehr ...
 
void setDumpfile (const CString &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 CString &genre)
 Genre festlegen. Mehr ...
 
void setMount (const CString &mount)
 Mount-Punkt festlegen. Mehr ...
 
void setName (const CString &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 CString &title)
 Aktuellen Titel übermitteln. Mehr ...
 
void setUrl (const CString &url)
 URL der Webseite festlegen. Mehr ...
 
void setUser (const CString &user)
 Benutzernamen für die Authentifizierung festlegen. Mehr ...
 
void sync ()
 Synchronise with Stream. Mehr ...
 
void translateError () const throw ()
 Letzten Fehler in PPL-Fehler übersetzen. Mehr ...
 
CString url () const
 URL auslesen. Mehr ...
 
CString user () const
 Benutzernamen auslesen. Mehr ...
 
CString 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 <ppl6.h>
#include <ppl6-sound.h>
int main(int argc, char **argv)
{
ppl6::CIcecast ice; // Icecast-Objekt anlegen
// 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")) {
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

ppl6::CIcecast::CIcecast ( )
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
ppl6::CIcecast::~CIcecast ( )
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

CString ppl6::CIcecast::agent ( ) const
Beschreibung:
Den Namen des zur Zeit gesetzten Agent auslesen.
Rückgabe
String mit dem Namen des Agent
CString ppl6::CIcecast::audioInfo ( const CString 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 ppl6::CIcecast::connect ( )
Beschreibung:
Mit dieser Funktion wird die Verbindung zum Icecast-Server hergestellt.
Ausnahmebehandlung
OutOfMemoryExceptionKein Speicher mehr frei
IllegalArgumentExceptionEs fehlen Parameter, z.B. wenn CIcecast::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 ppl6::CIcecast::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 ppl6::CIcecast::delay ( )
Beschreibung:
Returns the number of milliseconds the caller should wait before calling CIcecast::send again. This function is provided as an alternative to CIcecast::sync for applications that may wish to do other processing in the meantime.
Rückgabe
Number of milliseconds the caller should wait.
CString ppl6::CIcecast::description ( ) const
Beschreibung:
Beschreibung für diesen Stream auslesen.
Rückgabe
String mit der Beschreibung
void ppl6::CIcecast::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
CString ppl6::CIcecast::dumpfile ( ) const
Beschreibung:
Mit dieser Funktion wird der Name des Archiv-Files auf dem Server ausgelesen, sofern vorher eins mit der Funktion CIcecast::setDumpfile gesetzt wurde.
Rückgabe
String mit dem Namen des Archiv-Files.
CString ppl6::CIcecast::genre ( ) const
Beschreibung:
Gibt die zur Zeit definierten Genres als String zurück
Rückgabe
String mir den Genres
CString ppl6::CIcecast::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 CIcecast::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
CString ppl6::CIcecast::host ( ) const
Beschreibung:
Den Hostnamen des Icecast-Servers auslesen.
Rückgabe
String mit dem Hostnamen des Servers.
CString ppl6::CIcecast::mount ( ) const
Beschreibung:
Den für diesen Stream definierten Mount-Punkt auslesen.
Rückgabe
String mit dem Namen des Mount-Punkts.
CString ppl6::CIcecast::name ( ) const
Beschreibung:
Den Namen des Streams auslesen.
Rückgabe
String mit dem Namen des Streams
CString ppl6::CIcecast::password ( ) const
Beschreibung:
Das für die Authentisierung am Server verwendete Passwort auslesen.
Rückgabe
String mit dem Passwort.
int ppl6::CIcecast::port ( ) const
Beschreibung:
Den Port des Icecast-Servers auslesen.
Rückgabe
Integer mit dem Port des Servers.
void ppl6::CIcecast::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 ppl6::CIcecast::sendMetadata ( const CString name,
const CString 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 ppl6::CIcecast::setAgent ( const CString 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 ppl6::CIcecast::setAudioInfo ( const CString name,
const CString 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 ppl6::CIcecast::setConnection ( const CString host,
int  port,
const CString 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 CIcecast::setUser festgelegt werden.
void ppl6::CIcecast::setDescription ( const CString description)
Beschreibung:
Setzt die Beschreibung für diesen Stream.
Parameter
descriptionString mit der Beschreibung.
void ppl6::CIcecast::setDumpfile ( const CString 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 ppl6::CIcecast::setFormatMP3 ( )
Beschreibung:
Mit dieser Funktion wird das Datenformat des Streams auf MP3 festgelegt.
void ppl6::CIcecast::setFormatOGG ( )
Beschreibung:
Mit dieser Funktion wird das Datenformat des Streams auf OGG festgelegt.
void ppl6::CIcecast::setGenre ( const CString 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 ppl6::CIcecast::setMount ( const CString 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:
ice.setConnection("icecast.example.org",1234,"icesource");
ice.setMount("/live");
void ppl6::CIcecast::setName ( const CString name)
Beschreibung:
Den Namen des Streams festlegen
Parameter
nameString mit dem Namen des Streams
void ppl6::CIcecast::setNonBlocking ( bool  flag)
Beschreibung:
Durch Aufruf dieser Funktion wird der Stream auf Non-Blocking eingestellt. Dies muss vor Verbindungsaufbau geschehen (CIcecast::connect) und kann nicht danach nicht verändert werden.
Parameter
flag
void ppl6::CIcecast::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 ppl6::CIcecast::setTitle ( const CString 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 ppl6::CIcecast::setUrl ( const CString 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 ppl6::CIcecast::setUser ( const CString 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 ppl6::CIcecast::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 CIcecast::send to ensure that audio data is sent to the server at the correct speed. Alternatively, the caller may use CIcecast::delay to determine the number of milliseconds to wait and delay itself.
void ppl6::CIcecast::translateError ( ) const
throw (
)
Beschreibung:
Der zuletzt aufgetretene Fehler wird in eine PPL-Fehlermeldung umgewandelt, die mittels der üblichen Funktionen ausgelesen werden kann (siehe Errors).
Ausnahmebehandlung
DieseFunktion wirft auch dann keine Exception, wenn die libshout nicht einkompiliert wurde. Stattdessen wird der Fehlercode 564 gesetzt.
CString ppl6::CIcecast::url ( ) const
Beschreibung:
Auslesen der zur Zeit definierten URL.
Rückgabe
String mit der URL
Siehe auch
CIcecast::setURL - Setzen der URL
CString ppl6::CIcecast::user ( ) const
Beschreibung:
Mit dieser Funktion wird der zur Authentifizierung verwendete Benutzername ausgelesen.
Rückgabe
String mit dem Benutzernamen
CString ppl6::CIcecast::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 ppl6::CIcecast::bconnected
private
void* ppl6::CIcecast::shout
private

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