Download - JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit media/sound/index.jsp Java Sound:
JAVA Sound
• Stellt low-level Routinen zur Soundverarbeitung bereit
• http://java.sun.com/products/java-media/sound/index.jsp
Java Sound:
WiedergabeAufnahme
Java Sound
Soundausgabevorrichtungen
Datenverarbeitung
VM
Applikation
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.
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/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.
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); //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)