Bearbeiten von „RoarAudio/Vorlage Vortrag (1h)“
Aus UUGRN
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 54: | Zeile 54: | ||
{{Vortrags Zeit|4}} | {{Vortrags Zeit|4}} | ||
− | RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu | + | RoarAudio zeichnet sich dadurch aus daß er zusätzlich zu PCM Rohdaten auch höher Codecs versteht. Dies hat mehre Vorteile: |
* Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen. | * Der Server kann Streams in höheren Codecs selbstständig verarbeiten. Dies ist zum Beispiel wichtig um Webradio als Background Stream abzuspielen. | ||
− | * Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere ''lange | + | * Es ist dem Server möglich direkt Streaming-Server wie [[icecast]] zu bedienen. Es ist keine weitere ''lange pipe'' nötig um Webradio zu senden. Dies verringert die Störanfälligkeit erheblich und verringert die Latenz, da pipe-Puffer entfallen. |
* Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich. | * Auch ist es nur mit stark komprimierenden Codecs möglich über die dem Heim-Anwender zur Verfügung stehenden Schmalband-Anschlüsse Audio entweder von Client zu Server oder zwischen zwei Servern auszutauschen. Auch eine Kopplung über ISDN Kanäle ist so möglich. | ||
Zeile 65: | Zeile 65: | ||
RoarAudio ist Netzwerks-transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner. | RoarAudio ist Netzwerks-transparent, das heißt das Applikationen keinen Unterschied sehen zwischen Verbindungen mit einer lokalen Instanz oder einer auf einem anderen Rechner. | ||
− | Zu diesem Zweck werden mehre Protokolle unterstützt: | + | Zu diesem Zweck werden mehre Protokolle unterstützt: UNIX Domain Sockets für lokale Verbindungen sowie TCP/IP und DECnet für Verbindungen mit entfernten Rechnern. Auch existiert Support für verschiedene Proxy Typen. |
==== Meta Daten ==== | ==== Meta Daten ==== | ||
{{Vortrags Zeit|2}} | {{Vortrags Zeit|2}} | ||
− | RoarAudio hat | + | RoarAudio hat diev Fähigkeit auf per Stream Basis Meta Daten ab zu legen. Die Mechanismen sind denen von Vorbis Comments nachempfunden und können prinzipiell mehr. Einiges davon ist allerdings noch nicht vollständig implementiert. |
Es besteht neben dem manuellen Setzen die Möglichkeit daß ein Player sie setzt und das ''roard'' sie selbstständig setzt. Im letzteren Falle werden diese von verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Metadaten von einem Player zu übernehmen um die Titel-Informationen weiter zu führen. Manuelles setzen mag als Beispiel interessant sein um den Sendernamen zu setzen. | Es besteht neben dem manuellen Setzen die Möglichkeit daß ein Player sie setzt und das ''roard'' sie selbstständig setzt. Im letzteren Falle werden diese von verschiedenen anderen Streams zusammen gesetzt. Dies kann nützlich sein um automatisch beim Streaming die Metadaten von einem Player zu übernehmen um die Titel-Informationen weiter zu führen. Manuelles setzen mag als Beispiel interessant sein um den Sendernamen zu setzen. | ||
− | ==== Kompatibilitäts Bibliotheken | + | ==== Kompatibilitäts Bibliotheken ==== |
{{Vortrags Zeit|4}} | {{Vortrags Zeit|4}} | ||
''Viele Programme haben keine Unterstützung für RoarAudio, was nun?'' | ''Viele Programme haben keine Unterstützung für RoarAudio, was nun?'' | ||
− | Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken | + | Um dieses Problem zu lösen gibt es diverse Kompatibilitäts-Bibliotheken. |
− | + | Diese stellen Bibliotheken dar welche binär-kompatibel andere Audio Systeme emulieren. | |
Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek. | Dazu müssen sie schlichtweg einfach anstelle der Bibliothek des entsprechen Systems installiert werden und leiten dann alle Anfragen an RoarAudio weiter. Dies geschieht natürlich nur im Rahmen des Funktionsumfang der entsprechenden Bibliothek. | ||
− | Die mit Abstand wohl wichtigste ist '''libroaresd''', welche das [[EsounD]] Interface emuliert. | + | Die mit Abstand wohl wichtigste ist '''libroaresd''', welche das [[EsounD]] Interface emuliert. das EsounD Interface wird von den allermeisten Applikationen unterstützt da es das wohl älteste Soundserver Interface ist. Es existiert seit 1998. |
− | Weitere Kompatibilitäts Bibliotheken gibt es für das | + | Weitere Kompatibilitäts Bibliotheken gibt es für das YIFF Sound System, KDEs aRtsc und PulseAudio. Zusammen mit den existierenden Plugins deckt dies nahezu den vollständigen Player Markt fuer GNU/Linux und BSD ab. |
− | + | ===== Welche Schnittstelle für was? ===== | |
− | + | {{Vortrags Zeit|3}} | |
− | |||
− | |||
− | = | + | {| class="wikitable" |
− | + | ! Interface | |
+ | ! Beispiel Applikationen | ||
+ | |- | ||
+ | | libroar | ||
+ | | roaraudio-tools, XMMS, mplayer, (xine) | ||
+ | |- | ||
+ | | EsounD | ||
+ | | GNOME, KDE, XMMS, xine, Amarok, wine,... (177 weitere unter Debian Stable) | ||
+ | |- | ||
+ | | libao | ||
+ | | vorbis-tools, FLAC tools, mpd, mpg321, gnomoradio, somaplayer | ||
+ | |- | ||
+ | | aRts(c) (KDE) | ||
+ | | Player mit aRts support: mplayer, xine; kwave, kaudiocreator,... | ||
+ | |- | ||
+ | | PulseAudio | ||
+ | | Ein paar Programme, die meisten über Plugins. (nicht viel unter Debian Stable) | ||
+ | |- | ||
+ | | YIFF | ||
+ | | y-tools | ||
+ | |- | ||
+ | | gstreamer | ||
+ | | GNOME, Alle GNOME Player. Dieverse andere. | ||
+ | |- | ||
+ | | OpenBSD sndio | ||
+ | | OpenBSD Sound Applikationen. (Auch unter nicht OpenBSD verfügbar) | ||
+ | |- | ||
+ | |} | ||
=== Konzepte und Architektur === | === Konzepte und Architektur === | ||
{{Vortrags Zeit|1}} | {{Vortrags Zeit|1}} | ||
− | RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa <<< | + | RoarAudio ist zwar in C geschrieben aber größtenteils Objekt-orientiert. Er umfasst im Moment etwa <<<aktuellerwert hier einsetzen>>> tausend Zeilen C. (EsounD kommt auf rund 15 tausend, PulseAudio 74 tausend und aRts auf 130 tausend). |
==== Clients und Streams ==== | ==== Clients und Streams ==== | ||
Zeile 106: | Zeile 131: | ||
Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik). | Ein Client Objekt verkörpert einen (Netzwerk) Client, zum Beispiel einen Player oder ein Steuerprogramm wie roarctl. Es kann auch Stream Objekte assoziiert haben (Beispielsweise im Falle von Abspielen von Musik). | ||
− | Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom dar. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client, wobei der Client auch roard selbst sein kann. Er lässt sich durch ''attachen'' wechseln. Dies kommt zum Einsatz um Hintergrund-Streams zu ermöglichen. | + | Ein Stream Objekt stellt einen eigentlichen Audio Datenstrom dar. Dieses Objekt beinhaltet diverse Informationen über den Datenstrom: Informationen wie der roard ihn auslesen kann, Sample Rate/Bits/Channels, Meta Daten und vieles mehr. Ein Stream gehört immer zu einem Client, wobei der Client auch der roard selbst sein kann. Er lässt sich durch ''attachen'' wechseln. Dies kommt zum Einsatz um Hintergrund-Streams zu ermöglichen. |
− | Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. | + | Bei jedem Audio Datenstrom der in den roard hinein oder heraus fließt handelt es sich um einen Stream. Dies schließt Datenströme zu Geräten wie Soundcards mit ein. Hierdurch ist eine maximale Flexibilität gegeben. |
==== Driver ==== | ==== Driver ==== | ||
Zeile 124: | Zeile 149: | ||
==== Win32 Port ==== | ==== Win32 Port ==== | ||
− | + | Ein Win32 Port existiert zum jetzigen Zeitpunkt nicht. Dies liegt an mehren Faktoren: Zum einen ist Win32, was den nahe-realtime Betrieb angeht, nicht zuverlässig genug. Zum anderen ist bei Win32 das Networking kein Teil des Kernels wie auf UNIX und POSIX Systemen: Es ist viel mehr teilweise im Userland. Dies hat zur Folge das zu jedem Zeitpunkt eine Applikation wissen muss von welchem Type ein Filehandle ist, da man Basis Funktionen wie read(), write(), close() nicht auf alle Filehandles anwenden kann. Vielmehr hat jeder Type von Filehandles seinen eigenen Satz Funtionen. RoarAudio verfolgt die UNIX Philosophie: ''Alles ist eine Datei''. Große Patches wären nötig. | |
+ | |||
+ | Ein Weiteres ist das ein solcher Port viel Zeit in Anspruch nimmt und weder das Projekt noch die Freie Software Bewegung voranbringt. | ||
− | + | Im Moment existieren kleinere Patches die vielleicht irgendwann mal Basis Funktionalität mit sich bringen könnten. An ein roard für Win32 ist in absehbarer Zeit nicht zu denken. | |
− | + | Allerdings laufen Teile von RoarAudio in Cygwin mehr oder minder gut. Viele Probleme treten hier auf aber es ist prinzipiell möglich es unter Cygwin zum Laufen zu bringen (außerhalb des nahe-realtime Betriebs). | |
− | + | Es besteht aber die Möglichkeit einige Win32 Applikationen mittels pseudo Web Radio Streams anzubinden. | |
==== MP3 ==== | ==== MP3 ==== | ||
Zeile 157: | Zeile 184: | ||
** roarvorbis/roarcatplay? | ** roarvorbis/roarcatplay? | ||
** roarctl | ** roarctl | ||
− | ** | + | ** xmms |
* Kompatibilitäts Bibliotheken | * Kompatibilitäts Bibliotheken | ||
** libroaresd: | ** libroaresd: | ||
− | *** | + | *** Amarok |
== Fragen == | == Fragen == |