210 likes | 373 Views
JAVA Sound. Java Sound:. Stellt low-level Routinen zur Soundverarbeitung bereit http://java.sun.com/products/java-media/sound/index.jsp. Applikation. Aufnahme. Wiedergabe. Daten verarbeitung. Java Sound. VM. Soundausgabe vorrichtungen. OS-Hardware. Java Sound.
E N D
Java Sound: • Stellt low-level Routinen zur Soundverarbeitung bereit • http://java.sun.com/products/java-media/sound/index.jsp
Applikation Aufnahme Wiedergabe Daten verarbeitung Java Sound VM Soundausgabe vorrichtungen OS-Hardware
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.
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/java-media/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.
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 - 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); //Teil der Standard java Sound Bib.baseFormat = baseFileFormat.getFormat(); // Teil der Standard java Sound Bib.// TAudioFileFormat propertiesif (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 propertiesif (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)