Galileo Computing :: Java 7 - Mehr als eine Insel - 8 Dateiformate
Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
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?

Spacer
Java 7 - Mehr als eine Insel von Christian Ullenboom
Das Handbuch zu den Java SE-Bibliotheken
Buch: Java 7 - Mehr als eine Insel

Java 7 - Mehr als eine Insel
Galileo Computing
1433 S., 2012, geb.
49,90 Euro, ISBN 978-3-8362-1507-7
Pfeil 8 Dateiformate
Pfeil 8.1 Einfache Dateiformate für strukturierte Daten
Pfeil 8.1.1 Property-Dateien
Pfeil 8.1.2 CSV-Dateien
Pfeil 8.1.3 JSON-Serialisierung mit Jackson
Pfeil 8.2 Dokumentenformate
Pfeil 8.2.1 (X)HTML
Pfeil 8.2.2 PDF-Dokumente
Pfeil 8.2.3 Microsoft Office-Dokumente
Pfeil 8.2.4 OASIS Open Document Format
Pfeil 8.3 Datenkompression *
Pfeil 8.3.1 Java-Unterstützung beim Komprimieren
Pfeil 8.3.2 Daten packen und entpacken
Pfeil 8.3.3 Datenströme komprimieren
Pfeil 8.3.4 Zip-Archive
Pfeil 8.3.5 Jar-Archive
Pfeil 8.4 Bild-Formate
Pfeil 8.5 Audio-Dateien
Pfeil 8.5.1 Die Arbeit mit AudioClip
Pfeil 8.5.2 MIDI-Dateien abspielen

Galileo Computing - Zum Seitenanfang

8.5 Audio-DateienZur nächsten Überschrift

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.


Galileo Computing - Zum Seitenanfang

8.5.1 Die Arbeit mit AudioClipZur nächsten ÜberschriftZur vorigen Überschrift

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.

Galileo Computing - Zum Seitenanfang

8.5.2 MIDI-Dateien abspielenZur nächsten ÜberschriftZur vorigen Überschrift

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.







<< zurück
  Zum Katalog
Zum Katalog: Java 7 – Mehr als eine Insel
Java 7 – Mehr als eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Einstieg in Eclipse 3.7






 Einstieg in
 Eclipse 3.7


Zum Katalog: Android 3






 Android 3


Zum Katalog: NetBeans Platform 7






 NetBeans Platform 7


Zum Katalog: Java ist auch eine Insel






 Java ist
 auch eine Insel


Zum Katalog: Apps entwickeln für Android 4






 Apps entwickeln
 für Android 4


Zum Katalog: Java 7






 Java 7


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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