Gelöst: So spielen Sie Sounds auf Java ab

Letzte Aktualisierung: 06/19/2023

So spielen Sie Sounds ab In diesem Artikel befassen wir uns mit der Wiedergabe von Sounds in Java, einem häufigen Problem, mit dem Entwickler beim Erstellen verschiedener Anwendungen wie Spiele und Multimedia-Player konfrontiert sind. Wir besprechen eine Schritt-für-Schritt-Lösung, erkunden die zur Erfüllung dieser Aufgabe erforderlichen Bibliotheken und geben eine ausführliche Erklärung des Codes. Java ist für seine Vielseitigkeit und Benutzerfreundlichkeit bekannt und verfügt über verschiedene Bibliotheken, die Entwicklern dabei helfen können, die Funktionalität und Leistungsfähigkeit ihrer Anwendungen zu verbessern. Ein solcher wichtiger Bereich ist der Ton und die Audiounterstützung.

Einführung in die Java Sound API

Die Java Sound API ist ein leistungsstarkes Toolkit, das für die Bereitstellung von Soundunterstützung auf allen Plattformen entwickelt wurde. Es wird mit dem Java Development Kit (JDK) geliefert und ermöglicht Entwicklern das Abspielen, Aufzeichnen und Verarbeiten von Audiodateien in verschiedenen Formaten. In diesem Artikel konzentrieren wir uns auf die Grundlagen der Tonwiedergabe in Java-Anwendungen mithilfe der Klassen AudioClip und AudioSystem, die Teil der Java Sound API sind.

Die Java Sound API lässt sich in zwei Hauptpakete unterteilen: javax.sound.sampled und javax.sound.midi . Das Paket sampled dient der Verarbeitung grundlegender Audiofunktionen wie dem Abspielen, Aufnehmen und Synthetisieren von Audiodaten, während das Paket midi für die Verwaltung von MIDI-basierten Musikkompositionen und Soundtracks konzipiert ist.

Sounds mit AudioClip abspielen

Zunächst wollen wir uns ansehen, wie man Audiodateien mithilfe der AudioClip- Schnittstelle abspielt, die Teil des java.applet -Pakets ist. Obwohl die AudioClip-Schnittstelle ursprünglich für Applets entwickelt wurde, ist sie auch heute noch relevant und nützlich für die Wiedergabe kleiner Audiodateien in Java-Anwendungen.

import java.applet.AudioClip;
import java.net.URL;
public class SoundPlayer {
    public static void main(String[] args) {
        AudioClip sound;
        URL soundURL = SoundPlayer.class.getResource("sound.wav");
        sound = java.applet.Applet.newAudioClip(soundURL);
        sound.play();
    }
}

Im obigen Codeausschnitt haben wir das AudioClip- Interface und die URL- Klasse importiert. Mit diesen Klassen können wir eine Audiodatei laden und sie mithilfe der `play()`-Methode der AudioClip-Instanz abspielen. Um einen AudioClip zu verwenden, stellen Sie sicher, dass sich die Datei „sound.wav“ im selben Verzeichnis wie Ihre Java-Datei befindet oder geben Sie den korrekten Dateipfad an.

Wenn Sie jedoch mit größeren Audiodateien arbeiten oder eine komplexere Steuerung der Wiedergabe benötigen, reicht die AudioClip-Schnittstelle möglicherweise nicht aus und Sie sollten die Verwendung der AudioSystem-Klasse in Betracht ziehen.

Abspielen von Sounds mit der AudioSystem-Klasse

Die Klasse AudioSystem ist Teil des Pakets javax.sound.sampled und bietet erweiterte Funktionen zur Audiowiedergabe. Das folgende Beispiel zeigt, wie man eine Audiodatei mithilfe der Klasse AudioSystem abspielt:

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;

public class SoundPlayer {
    public static void main(String[] args) {
        try {
            File soundFile = new File("sound.wav");
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
            Clip clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            clip.start();

            // Keep the application running till the sound is played completely
            Thread.sleep(clip.getMicrosecondLength() / 1000);
        } catch(LineUnavailableException | UnsupportedAudioFileException | IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

In diesem Beispiel haben wir zunächst die benötigten Klassen und Schnittstellen aus dem Paket `javax.sound.sampled` importiert . Anschließend haben wir ein `AudioInputStream`- Objekt erstellt, um die Audiodaten aus der Datei zu lesen, und eine `Clip`- Instanz, um die Audiodaten im Speicher zu halten. Nach dem Öffnen des Clips haben wir die Methode `start()` aufgerufen, um den Ton abzuspielen.

Dieser Ansatz bietet mehr Kontrolle über die Audiowiedergabe, einschließlich der Möglichkeit, den Ton anzuhalten, fortzusetzen, zu wiederholen und zu stoppen, wodurch er für eine Vielzahl von Anwendungen geeignet ist.

Zusammenfassend haben wir zwei verschiedene Ansätze zum Abspielen von Sounds in Java mithilfe der Klassen AudioClip und AudioSystem besprochen. Die AudioClip-Schnittstelle eignet sich für kleine Audiodateien in einfachen Anwendungen, während die AudioSystem-Klasse erweiterte Audiowiedergabefunktionen für komplexere Szenarien bietet. Die Nutzung der leistungsstarken Java-Bibliotheken sorgt für nahtlose Sound-Funktionalität und ein verbessertes Benutzererlebnis in verschiedenen Anwendungen.

Zusammenhängende Posts: