Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Neues in Java 7
2 Threads und nebenläufige Programmierung
3 Datenstrukturen und Algorithmen
4 Raum und Zeit
5 Dateien, Verzeichnisse und Dateizugriffe
6 Datenströme
7 Die eXtensible Markup Language (XML)
8 Dateiformate
9 Grafische Oberflächen mit Swing
10 Grafikprogrammierung
11 Netzwerkprogrammierung
12 Verteilte Programmierung mit RMI
13 RESTful und SOAP Web-Services
14 JavaServer Pages und Servlets
15 Applets
16 Datenbankmanagement mit JDBC
17 Technologien für die Infrastruktur
18 Reflection und Annotationen
19 Dynamische Übersetzung und Skriptsprachen
20 Logging und Monitoring
21 Java Native Interface (JNI)
22 Sicherheitskonzepte
23 Dienstprogramme für die Java-Umgebung
Stichwort
Download: - openbook, ca. 21,3 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / Java 7 - Mehr als eine Insel | vor >>
Java 7 - Mehr als eine Insel von Christian Ullenboom Das Handbuch zu den Java SE-Bibliotheken
Java 7 - Mehr als eine Insel Galileo Computing 1433 S., 2012, geb. 49,90 Euro, ISBN 978-3-8362-1507-7 |
| 8 Dateiformate
|  | 8.1 Einfache Dateiformate für strukturierte Daten
|  |  | 8.1.1 Property-Dateien
|  |  | 8.1.2 CSV-Dateien
|  |  | 8.1.3 JSON-Serialisierung mit Jackson
|  | 8.2 Dokumentenformate
|  |  | 8.2.1 (X)HTML
|  |  | 8.2.2 PDF-Dokumente
|  |  | 8.2.3 Microsoft Office-Dokumente
|  |  | 8.2.4 OASIS Open Document Format
|  | 8.3 Datenkompression *
|  |  | 8.3.1 Java-Unterstützung beim Komprimieren
|  |  | 8.3.2 Daten packen und entpacken
|  |  | 8.3.3 Datenströme komprimieren
|  |  | 8.3.4 Zip-Archive
|  |  | 8.3.5 Jar-Archive
|  | 8.4 Bild-Formate
|  | 8.5 Audio-Dateien
|  |  | 8.5.1 Die Arbeit mit AudioClip
|  |  | 8.5.2 MIDI-Dateien abspielen
## 8.5 Audio-Dateien Für die Audio-Wiedergabe in Java gibt es zwei Möglichkeiten: sich über die Applet-Klasse ein AudioClip geben zu lassen oder mit Klassen aus dem Paket javax.sound zu arbeiten. ### 8.5.1 Die Arbeit mit AudioClip Die Applet-Klasse verfügt über zwei überladene Objektmethoden getAudioClip() und über eine statische Methode newAudioClip(), die alle eine Audio-Datei als AudioClip-Objekt liefern. Die Quelle ist als URL angegeben. Mit der statischen Methode newAudioClip() lässt sich ein AudioClip-Objekt auch außerhalb von Applets erzeugen, sodass sich die Methode für normale Applikationen anbietet. Die play()-Methode auf dem AudioClip spielt das Stück ab.
Beispiel
Spiele die Datei uups.wav in einer Applikation ab.
    File f = new File( "uups.wav" );
    AudioClip sound = Applet.newAudioClip( f.toURL() );
    sound.play();
    Thread.sleep( 100000 );
    class java.applet.Applet
    extends Panel
AudioClip getAudioClip(URL url) Liefert ein AudioClip-Objekt, das durch die URL angegeben ist. AudioClip getAudioClip(URL url, String name) Aufruf von getAudioClip(new URL(url, name)). static AudioClip newAudioClip(URL url) Liefert ein AudioClip-Objekt, das durch die URL angegeben ist. ### 8.5.2 MIDI-Dateien abspielen Die Sound-Engine kann Dateien im Format AIFF, AU und WAV abspielen. Ebenso ist ein MIDI-Renderer enthalten, der die Dateiformate TYPE 0 MIDI, TYPE 1 MIDI und RMF unterstützt. Dieser erzeugt softwaremäßig mit einem Wave-RAM General Midi. Die Sound-Maschine kann 8? oder 16-Bit-Audio-Daten rendern, entweder mono oder stereo. Dabei werden Sampling-Raten von 8 bis zu 48 KHz unterstützt. #### Soundbanks Unter Windows funktioniert das Abspielen von MIDI-Dateien auf Anhieb, da Java für die Wiedergabe die Instrumente des Betriebssystems nutzt. Für andere Betriebssysteme müssen Instrumentendateien, sogenannte Soundbanks, nachinstalliert werden. Dazu stellt die Seite http://java.sun.com/products/java-media/sound/soundbanks.html Soundbanks in drei Qualitätsstufen zur Verfügung. Die Soundback-Datei wird dann in das Verzeichnis jre7\lib\audio gesetzt. #### Java Sound API Die Sound-API im Paket javax.sound erlaubt Erweiterungen um eigene Audio-Spieler. So gibt es einen Winamp-ähnlichen MP3-Spieler namens jlGui (http://www.javazoom.net/jlgui/jlgui.html), dem der Unterschied zu einem nativen Player nicht anzumerken ist.[64](Sie können das per Webstart sofort ausprobieren: http://www.javazoom.net/jlgui/jws/jlgui_jnlp.jsp. Unter http://www.javazoom.net/jlgui/jnlp_configurator.jsp lassen sich einige Parameter einstellen und dann gleich ausprobieren. Cool!) Er unterstützt Drag & Drop, Webstart, M3U, WinAmp Skins, Ogg Vorbis und vieles mehr. jlGui nutzt hierfür einen eigenen Audio-Layer (http://javalayer.sourceforge.net/) zum Abspielen von MP3-Dateien. Die zusätzliche Bibliothek basiert auf der Möglichkeit, eigene SPIs einzuhängen. #### MIDI-Dateien abspielen Die Klassen zum Abspielen von MIDI-Dateien liegen unter javax.sound.midi. Die Hardware (oder Software), die MIDI-Daten abspielt, heißt Sequencer. Listing 8.6: com/tutego/insel/sound/MidiDemo.java
    Sequencer sequencer = MidiSystem.getSequencer();
    sequencer.open();
    InputStream midiFile = ClassLoader.getSystemResourceAsStream( "media/beginn.mid" );
    sequencer.setSequence( MidiSystem.getSequence(midiFile) );
    sequencer.start();
    sequencer.stop();
Um an die Sequencer-Instanz zu kommen, wird die Fabrikmethode MidiSystem.getSequencer() bemüht. Anschließend muss die Abspieleinheit initialisiert werden – das geschieht mit open(). Der nächste Schritt besteht darin, die Musik-Informationen bereitzustellen und dem Sequencer zu übergeben. Diese Daten liegen als Sequence-Objekte vor. Sie lassen sich mit MidiSystem.getSequence() vorbereiten. Die getSequence()-Methode erlaubt als Parameter File-, InputStream- und URL-Objekte. Nun lässt sich der Sequencer mit start() zur Arbeit bewegen; stop() beendet das Abspielen. start() startet automatisch einen Hintergrundprozess, sodass das Abspielen auch dann fortfährt, wenn die statische main()-Methode und der main-Thread schon beendet sind.
    class javax.sound.midi.MidiSystem
static Sequencer getSequencer() Liefert den Standard-Sequencer vom System, also die Standard-Abspieleinheit, die MIDI-Sequenzen abspielt.
    interface javax.sound.midi.MidiSystem
    extends MidiDevice
void setSequence(InputStream stream) throws IOException, InvalidMidiDataException Weist dem aktuellen MIDI-System eine MIDI-Datei zu. Der stream muss auf eine MIDI-Datei zeigen. Bei Zugriffsfehlern gibt es eine IOException, und ist das Datenformat fehlerhaft oder wird nicht es vom Java-MIDI-System unterstützt, folgt eine InvalidMidiDataException. void start() Startet die Wiedergabe. void stop() Stoppt die Wiedergabe. boolean isRunning() Liefert true, wenn die Wiedergabe mit start() gestartet wurde und noch läuft, also noch nicht mit stop() beendet wurde. Sonst false.
Bemerkung
Die Entwicklung der Java Sound API steht still. Zuletzt arbeitete nur ein Entwickler am Projekt (siehe dazu auch http://weblogs.java.net/blog/jonathansimon/archive/2003/06/whats_up_with_t.html), nun ist auch er gegangen. So wie die Java Sound API auf Eis gelegt ist, ist auch das Java Media Framework (JMF) erst einmal gestorben, und wir können die Annotation @Tot an das Projekt setzen. Sun wollte ursprünglich das JMF zum Abspielen von Multimedia-Dateien etablieren, doch wird es schon lange nicht mehr weiterentwickelt, und bei der letzten Änderung Ende 2004 ist lediglich MP3 hinzugekommen. Es gibt Ansätze wie FMJ (Freedom for Media in Java), die darin bestehen, das Java Media Framework auf der Basis von jffmpeg frei nachzuimplementieren, doch offiziell unterstützt Oracle das nicht. Offiziell ist von Oracle wohl nur JavaFX angedacht, aber damit stehen immer noch nicht alle Codecs zur Verfügung.
### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück | <top> | vor >>
Zum Katalog
Java 7 – Mehr als eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchempfehlungen
| Java und XML
| Einstieg in Eclipse 3.7
| Android 3
| NetBeans Platform 7
| Java ist auch eine Insel
| Apps entwickeln für Android 4
| Java 7
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de