java sound. stellt low-level routinen zur soundverarbeitung bereit media/sound/index.jsp java...

21
JAVA Sound

Upload: helene-brauer

Post on 06-Apr-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

JAVA Sound

Page 2: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

• Stellt low-level Routinen zur Soundverarbeitung bereit

• http://java.sun.com/products/java-media/sound/index.jsp

Java Sound:

Page 3: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

WiedergabeAufnahme

Java Sound

Soundausgabevorrichtungen

Datenverarbeitung

VM

Applikation

OS-Hardware

Page 4: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 5: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 6: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

Mixer

Page 7: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 8: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 9: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 10: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 11: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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).

Page 12: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

JMF

• Verfügt bsplw. über eine Player API.

• Weitere API‘s stellen Routinen zum Capturen zur Konvertierung und zur Weiterverarbeitung von Medienquellen

Page 13: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.)

Page 14: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 15: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

Player API

Page 16: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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.

Page 17: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

Mp3 und Ogg Vorbis

Page 18: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

MP3- vom Frauenhofer Institut entwickelt

- Komprimierung durch Informationsverlust

Ogg Vorbis- im Gegensatz zu MP3 freies Format

- Komprimierung durch Informationsverlust

Page 19: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

Adressen der Soundbibliotheken -http://www.javazoom.net/projects.html

-http://www.jcraft.com/jorbis/

Page 20: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

SPI und Plugin -http://www.javazoom.net/mp3spi/documents.html

-http://www.javazoom.net/vorbisspi/documents.html

-http://www.tritonus.org/plugins.html

Page 21: JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit  media/sound/index.jsp Java Sound:

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)