Audioausgabe: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: == Audiotreiber im Kernel == Als grundlegende Abstraktionsschicht zwischen Hardware und Software existieren unter Linux zwei Architekturen: * Das <b>[http://www.openso...)
 
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Audiotreiber im Kernel ==
+
== Gerätetreiber im Kernel ==
  
 
Als grundlegende Abstraktionsschicht zwischen Hardware und Software existieren unter Linux zwei Architekturen:
 
Als grundlegende Abstraktionsschicht zwischen Hardware und Software existieren unter Linux zwei Architekturen:
* Das <b>[http://www.opensound.com/ Open Sound System / OSS]</b> diente bis Linux 2.4 als Standardsoundtreiber im Kernel. Weil es auch für BSD und andere Unix-Dervate Implementationen dieser Architektur gibt, lässt sich auf OSS aufsetzende software einfach portieren.
+
* Das <b>[http://www.opensound.com/ Open Sound System / OSS]</b> diente bis Linux 2.4 als Standard-Audiotreiber im Kernel. Weil es auch für BSD und andere Unix-Dervate Implementationen dieser Architektur gibt, lässt sich auf OSS aufsetzende software einfach portieren.
* Die <b>[[Advanced Linux Sound Architecture / ALSA]]</b> löste OSS mit dem Kernel 2.6 offiziell ab. ALSA kommt mit Geräten vom onboard-Chipsatz bis zur professionellen Multikanalsoundkarte zurecht, für die es modularisierte Soundtreiber zur Verfügung stellt. Die Architektur ist threadsicher und kooperiert daher problemlos mit Mehrprozessorsystemen. Sie besitzt zudem die Fähigkeit zum full duplexing, also zum parallelen Aufnehmen und Abspielen.<br>
+
* Die <b>[[Advanced Linux Sound Architecture / ALSA]]</b> löste OSS mit dem Kernel 2.6 offiziell ab. ALSA kommt mit Geräten vom onboard-Chipsatz bis zur professionellen Multikanalsoundkarte zurecht, für die es modularisierte Audiotreiber zur Verfügung stellt. Die Architektur ist threadsicher und kooperiert daher problemlos mit Mehrprozessorsystemen. Sie besitzt zudem die Fähigkeit zum full duplexing, also zum parallelen Aufnehmen und Abspielen.<br>
 
Zur Erhaltung der Kompatibilität mit OSS wird über die Bibliothek "libaoss" eine userspace-Emulation der OSS-Programmierschnittstelle zur Verfügung gestellt. So können OSS-basierte Anwendungen weiterhin auf die alte Programmierschnittstelle zugreifen.
 
Zur Erhaltung der Kompatibilität mit OSS wird über die Bibliothek "libaoss" eine userspace-Emulation der OSS-Programmierschnittstelle zur Verfügung gestellt. So können OSS-basierte Anwendungen weiterhin auf die alte Programmierschnittstelle zugreifen.
  
Zeile 25: Zeile 25:
 
* Das <b>[http://gstreamer.freedesktop.org/ Gstreamer]</b> framework ist fest in [[Gnome]] integriert und beschränkt sich auf die Verarbeitung von Audio und Video.
 
* Das <b>[http://gstreamer.freedesktop.org/ Gstreamer]</b> framework ist fest in [[Gnome]] integriert und beschränkt sich auf die Verarbeitung von Audio und Video.
 
* Der <b>[http://www.libsdl.org/ Simple Directmedia Layer / SDL]</b> ist eine Multimediabibliothek, die für den Zugriff auf Eingabegeräte, 2D/3D-Grafikhardware und besonders Audiogeräte sorgt. SDL steht neben Linux auch für Microsoft Windows und Mac OS X zur Verfügung.
 
* Der <b>[http://www.libsdl.org/ Simple Directmedia Layer / SDL]</b> ist eine Multimediabibliothek, die für den Zugriff auf Eingabegeräte, 2D/3D-Grafikhardware und besonders Audiogeräte sorgt. SDL steht neben Linux auch für Microsoft Windows und Mac OS X zur Verfügung.
 
== Audiostreams aufzeichnen ==
 
 
[http://www.shoutcast.com/ Shoutcast.com] und [http://www.icecast.orh/ Icecast.org] verzeichnen zahlreiche Radiostationen, die ihre Datenströme im MP3-Format versenden. Die klassischen Radiostationen streamen dagegen meist mit Hilfe der Protokolle RTSP oder PNM, die der [[Real Player]] versteht, oder über das MMS-Protokoll, das der [[Mplayer]] lesen kann.
 
 
<b>[http://sourceforge.net/project/showfiles.php?group_id=6172 Streamripper]</b> unterstützt die Aufnahme von Streams im MP3-Format. Mit der grafischen Oberfläche <b>[http://www.nongnu.org/streamtuner/ Streamtuner]</b> lässt sich die Musik nicht nur aufzeichnen, sondern auch zeitgleich abspielen. Nach Anwahl des SHOUTcast-Tab wird eine Liste von Radiosendern angezeigt. Der Doppelklick auf einen Sender öffnet einen MP3-Spieler wie XMMS, der den Stream abspielt. Zum Aufnehmen reicht ein Klick auf die Schaltfläche "Aufnehmen" in der Werkzeugleiste.
 
 
=== RTSP ===
 
 
Etwas schwieriger ist die Aufnahme von RealAudio-Formaten. Der <b>RealPlayer</b> kann diese Formate wiedergeben. Aufnehmen kann man sie mit <b>Vsound</b> und <b>Sox</b>. Vsound fängt den output stream externer Soundprogramme ab und speichert in mit Hilfe von Sox im WAV-Format. Der Aufnahmeprozess läuft wie folgt ab:
 
 
<b>1. Herausfinden der URL der Radiostation:</b> Wenn der stream direkt in eine Webseite eingebettet ist, kann mit der rechten Maustaste auf den link zum Abspielen des streams geklickt und der Eintrag "Link-Ziel speichern" gewählt werden. Die gespeicherte Datei enthält dann die Adresse des streams.<br>
 
Wenn sich ein popup-Fenster öffnet, in das der stream eingebettet ist, so muss im Quellcode des popup-Fensters nach der Adresse des streams gesucht werden. Mitunter muss man innerhalb des Fensters einen frame isolieren, der die play-Taste beinhaltet. Unter Mozilla kann dafür mit der rechten Maustaste neben die play-Taste geklickt und "Nur diesen Frame anzeigen" gewählt werden. Im HTML-Quelltext sucht man nach Begriffen wie "lsc.redirect", "embed src", "ra", "rm" oder "smil". Die gefundene Adresse (beginnend mit<code> rtsp://</code>) wird dann mit folgendem Befehl in die Datei "adresse.txt" geschrieben:
 
$ wget -O adresse.txt "<nowiki>http://foundaddress.ra</nowiki>"
 
 
<b>2. Öffnen der Konsole</b>
 
 
$ @LI:vsound -d -t -f test.wav realplay rtsp://pathtostream
 
 
Danach öffnet sich der RealPlayer und beginnt den stream abzuspielen, während Vsound ihn gleichzeitig aufzeichnet. Wichtig ist, dass der Konvertierungsprozess der temporär angelegten AU-Datei ins WAV-Format erst nach dem manuellen Beenden des RealPlayers beginnt.
 
 
<b>3. Konvertierung der WAV-Datei ins MP3-Format</b>
 
 
=== MMS ===
 
 
Bleiben noch die über das MMS-Protokoll (Microsoft Media Services) verbreiteten Audio-streams, deren Dateien zwar auf den Windows Media Player zugeschnitten sind, aber auch vom MPlayer gelesen werden können. Der Aufnahmeprozess läuft wie folgt ab:
 
 
<b>1. Herausfinden der URL der Radiostation:</b> Wenn der stream direkt in eine Webseite eingebettet ist, kann mit der rechten Maustaste auf den link zum Abspielen des streams geklickt und der Eintrag "Link-Ziel speichern" gewählt werden. Die gespeicherte Datei enthält dann die Adresse des streams.<br>
 
Wenn sich ein popup-Fenster öffnet, in das der stream eingebettet ist, so muss im Quellcode des popup-Fensters nach der Adresse des streams gesucht werden. Mitunter muss man innerhalb des Fensters einen frame isolieren, der die play-Taste beinhaltet. Unter Mozilla kann dafür mit der rechten Maustaste neben die play-Taste geklickt und "Nur diesen Frame anzeigen" gewählt werden. Im HTML-Quelltext sucht man nach Begriffen wie "lsc.redirect", "embed src", "ra", "rm" oder "smil". Die gefundene Adresse (beginnend mit<code> mms://</code>) wird dann mit folgendem Befehl in die Datei "adresse.txt" geschrieben:
 
$ wget -O adresse.txt "<nowiki>http://foundaddress.ra</nowiki>"
 
 
<b>2. Umwandeln des streams in eine WAV-Datei</b> mit dem Namen "audiodump.wav". Folgender Befehl reicht den stream an die PCM-Audioausgabe weiter, die ihn dann als "audiodump.wav" speichert. Während der Aufnahme kann nicht gleichzeitig gehört werden.
 
$ mplayer "mms://yourstation.wma" -ao pcm
 
 
<b>3. Konvertierung der WAV-Datei ins MP3-Format</b>
 
  
  

Aktuelle Version vom 10. Februar 2010, 05:08 Uhr

Gerätetreiber im Kernel

Als grundlegende Abstraktionsschicht zwischen Hardware und Software existieren unter Linux zwei Architekturen:

  • Das Open Sound System / OSS diente bis Linux 2.4 als Standard-Audiotreiber im Kernel. Weil es auch für BSD und andere Unix-Dervate Implementationen dieser Architektur gibt, lässt sich auf OSS aufsetzende software einfach portieren.
  • Die Advanced Linux Sound Architecture / ALSA löste OSS mit dem Kernel 2.6 offiziell ab. ALSA kommt mit Geräten vom onboard-Chipsatz bis zur professionellen Multikanalsoundkarte zurecht, für die es modularisierte Audiotreiber zur Verfügung stellt. Die Architektur ist threadsicher und kooperiert daher problemlos mit Mehrprozessorsystemen. Sie besitzt zudem die Fähigkeit zum full duplexing, also zum parallelen Aufnehmen und Abspielen.

Zur Erhaltung der Kompatibilität mit OSS wird über die Bibliothek "libaoss" eine userspace-Emulation der OSS-Programmierschnittstelle zur Verfügung gestellt. So können OSS-basierte Anwendungen weiterhin auf die alte Programmierschnittstelle zugreifen.

Die entsprechenden Kerneltreiber müssen entweder einkompiliert oder als Modul geladen werden. Aus technischer Sicht spricht nichts dagegen, Module für beide Systeme parallel auf dem System zu halten. OSS operiert direkt auf der Kernelebene; ALSA arbeitet dagegen im userspace und stellt die meisten Funktionen über Bibliotheken bereit.

Soundserver

Als Daemons implementierte Soundserver regeln quasi als multi tasking layer die entsprechenden Anforderungen der Anwendungen an den Kerneltreiber. Zudem operieren die gängigsten Soundserver nach einem Client-Server-Modell, was die transparente Verteilung von Sound über ein Rechnernetz ermöglicht.

Das grosse Problem bei digitaler Musikproduktion besteht darin, die Zeitspanne klein zu halten, die verstreicht, bis Audiodaten von der Audiokarte beim Programm ankommen und umgekehrt. Die Verzögerung (Latenz) entsteht hauptsächlich durch Zwischenspeicherung der Daten. Bemerkbar macht sie sich immer dann, wenn Softwareeffekte in Echtzeit berechnet oder während des Abspielens neue Signale aufgenommen werden. Eine Verzögerung von über 10 Millisekunden ist für das menschliche Ohr hörbar und daher störend.

Für den Heimrechner wünscht sich der Anwender, dass der gerade erklingende Systemton nicht den MP3-Spieler blockiert (Stichwort "Device busy"). Die Linux-Soundsysteme OSS und ALSA erlauben aber von Haus aus nur je einer Anwendung den Zugriff. Die Lösung ist häufig einer der folgenden Soundserver, wobei nur JACK mit minimaler Latenz auch sehr hohen Ansprüchen genügt:

  • Der Enlightenment Sound Daemon / ESD wurde für die gleichnamige Benutzeroberfläche entwickelt und bildet heute einen Bestandteil des Gnome-Projekts. ESD beschränkt sich als reiner sound dameon auf die Verwaltung und Verteilung (auch via Netz) der entsprechenden Daten.
  • Der Analog Realtime Synthesizer / ARTS ist die Soundarchitektur von KDE und wird nicht mehr weiterentwickelt.
  • Das JACK Audio Connection Kit / JACK ist ein für Posixsysteme entwickelter Echtzeit-Soundserver, der unter Linux und Mac OS X läuft und als mögliche Ablösung für den älteren ARTS gilt. Er ist auf professionelle Anwendungen ausgerichtet, beherrscht volles multiplexing bei niedriger Verzögerung sowie fehlerfreies full duplexing; Anwendungen lassen sich sowohl in Standalone-Form als auch als Plugins einbinden; eine Master/Slave-Gerätekonfiguration ermöglicht simultane Operationen (im einfachsten Fall Start/Stop oder Pause) mit präzisem timing über mehrere Anwendungen, Komponenten oder Geräte hinweg.

Multimedia frameworks

Zunehmende Bedeutung erlangen in letzter Zeit auch unter Linux die Multimedia frameworks. Sie sollen - ähnlich wie die DirectX-Schnittstelle unter Microsoft Windows - eine einheitliche Schnittstelle für Hardware-Aufrufe bereitstellen. Zu den angesteuerten Geräten gehören meist Soundkarten, 2D/3D-Grafikhardware, joystick sowie Tastatur und Maus. Die bislang bekanntesten Vertreter sind

  • Das Gstreamer framework ist fest in Gnome integriert und beschränkt sich auf die Verarbeitung von Audio und Video.
  • Der Simple Directmedia Layer / SDL ist eine Multimediabibliothek, die für den Zugriff auf Eingabegeräte, 2D/3D-Grafikhardware und besonders Audiogeräte sorgt. SDL steht neben Linux auch für Microsoft Windows und Mac OS X zur Verfügung.