javaSnd

Werbung
JAVA Sound
Java Sound:
• Stellt low-level Routinen zur
Soundverarbeitung bereit
• http://java.sun.com/products/javamedia/sound/index.jsp
Applikation
Wiedergabe
Aufnahme
Daten
verarbeitung
Java Sound
OS-Hardware
Soundausgabe
vorrichtungen
VM
Java Sound
• Programm muss sich selbst um die Verwaltung
elementarer an der Soundverarbeitung
beteiligter Datenstrukturen kümmern.
• Zu diesen gehören Mixer, Line, Format, etc..
• Diese Ressourcen werden von der Klasse
AudioSystem verwaltet.
Mixer
• Entspricht einer Vorrichtung zur Verwaltung
und Modifikation von Audiosignalen.
• Diese kann sowohl in Hard- als auch in
Software vorliegen.
• Verfügt über ein und Ausgabekanäle (Lines)
diese sind ihrerseits mit Kanälen des
Betriebssystems oder der Hardware
verbunden.
Mixer
Lines
• Lines sind die eigentlichen Ein- und
Ausgabekanäle.
• Sie stellen die Schnittstelle zwischen den
eingehenden Audioinformationen und einem
Mixer dar.
• Können von AudioSystem oder einem
assoziierten Mixer bereitgestellt werden.
Clip und SourceDataLine
• Bei diesen Klassen handelt es sich um Lines.
• Clip wird genutzt um auf eine Audioquelle
zuzugreifen, die vollständig im Voraus geladen
werden kann.
• SourceDataLines stellen die Möglichkeit bereit,
eine Audioquelle stückweise in einen Puffer
einzuladen und auszugeben, der erheblich
kleiner ist, als die Quelle selbst.
SourceDataLine
• Der Benutzer lädt Daten in den Puffer hinein,
diese werden dann an den Mixer
weitergegeben.
• Die Kommunikation über den Status der Line
erfolgt über Events.
Java Sound
• Der Benutzer (also das Programm) muss sich
selbständig um die Details der
Medienwiedergabe und bestimmte Aufgaben
wie Streaming etc. kümmern.
• Dies ermöglicht jedoch auch weitgehende
Kontrolle über den Ablauf.
Java Media Framework (JMF):
• http://java.sun.com/products/javamedia/jmf/index.jsp
• Abstrahiert von diversen, in Java integrierten,
Medienbibliotheken.
• Durch vorgefertigte Klassen kann das
Wiedergeben, Aufzeichnen und Umwandeln
von Medienquellen in einfacherer Art und
Weise gehandhabt werden als durch
Verwendung der low-level Bibliotheken (bsplw.
Java Sound).
JMF
• Verfügt bsplw. über eine Player API.
• Weitere API‘s stellen Routinen zum Capturen
zur Konvertierung und zur Weiterverarbeitung
von Medienquellen
Player API
• Ermöglicht die Wiedergabe einer Vielzahl von
Medienformaten.
• Wiedergabemechanismus ist weitgehend
unabhängig von der jeweiligen Ausprägung der
Medienquelle (Stream, lokale Datei etc.)
Player API
• Kann mit URL initialisiert werden.
• Übernimmt selbständig Prefetching,
Streamverarbeitung und weitere Interna der
Medienwiedergabe.
• Benutzer muss nur noch den Status des
Players beachten und nicht direkt mit den
Bereitstellungsmechanismen der
Medienquellen kommunizieren.
Player API
Service Provider Interface (SPI):
• SPI ist eine Schnittstelle, die es erlaubt, die
Fähigkeiten der JVM zu erweitern.
• Diese Funktionalitätserweiterung kann so
durchgeführt werden, dass sie für den
Benutzer der VM (i.A. ein Java Programm)
transparent bleibt.
• So können z.B. nachträglich weitere Formate
der Verarbeitungskompetenz der Java
Medienbibliotheken hinzugefügt werden.
Mp3 und Ogg Vorbis
MP3
- vom Frauenhofer Institut entwickelt
- Komprimierung durch Informationsverlust
Ogg Vorbis
- im Gegensatz zu MP3 freies Format
- Komprimierung durch Informationsverlust
Adressen der Soundbibliotheken
-http://www.javazoom.net/projects.html
-http://www.jcraft.com/jorbis/
SPI und Plugin
-http://www.javazoom.net/mp3spi/documents.html
-http://www.javazoom.net/vorbisspi/documents.html
-http://www.tritonus.org/plugins.html
Ein Beispiel für das Auslesen der MP3 Header Informationen:
import org.tritonus.share.sampled.TAudioFormat;
import org.tritonus.share.sampled.file.TAudioFileFormat;
[...]
File file = new File(filename);
AudioFileFormat baseFileFormat = null;
AudioFormat baseFormat = null;
baseFileFormat = AudioSystem.getAudioFileFormat(file);
baseFormat = baseFileFormat.getFormat();
// TAudioFileFormat properties
if (baseFileFormat instanceof TAudioFileFormat)
{
Map properties = ((TAudioFileFormat)baseFileFormat).properties();
String key = "author";
String val = (String) properties.get(key);
key = "mp3.id3tagv2";
InputStream tag= (InputStream) properties.get(key);
}
// TAudioFormat properties
if (baseFormat instanceof TAudioFormat)
{
Map properties = ((TAudioFormat)baseFormat).properties();
String key = "bitrate";
Integer val = (Integer) properties.get(key);
}
(Quelle: http://www.javazoom.net/mp3spi/documents.html)
//Teil der Standard java Sound Bib.
// Teil der Standard java Sound Bib.
Herunterladen