Vyřešeno: Jak přehrávat zvuky na Javě

Poslední aktualizace: 06/19/2023

Jak přehrávat zvuky V tomto článku se ponoříme do přehrávání zvuků v Javě, což je běžný problém, s nímž se vývojáři potýkají při vytváření různých aplikací, jako jsou hry a multimediální přehrávače. Probereme krok za krokem řešení, prozkoumáme knihovny potřebné ke splnění tohoto úkolu a poskytneme podrobné vysvětlení kódu. Java, známá svou všestranností a snadným používáním, je vybavena různými knihovnami, které mohou vývojářům pomoci zlepšit funkčnost a možnosti jejich aplikací. Jednou z takových významných oblastí je zvuk a podpora zvuku.

Úvod do Java Sound API

Java Sound API je výkonná sada nástrojů navržená tak, aby poskytovala podporu zvuku na všech platformách. Dodává se s Java Development Kit (JDK) a umožňuje vývojářům přehrávat, nahrávat a zpracovávat zvukové soubory v různých formátech. V tomto článku se zaměříme na základy přehrávání zvuku v Java aplikacích pomocí tříd AudioClip a AudioSystem, které jsou součástí Java Sound API.

Rozhraní Java Sound API lze rozdělit do dvou hlavních balíčků: javax.sound.sampled a javax.sound.midi . Balíček sampled se používá ke správě základních zvukových funkcí, jako je přehrávání, nahrávání a syntéza zvukových dat, zatímco balíček midi je určen pro správu hudebních skladeb a soundtracků založených na MIDI.

Přehrávání zvuků pomocí AudioClip

Nejprve se podívejme na to, jak přehrávat zvukové soubory pomocí rozhraní AudioClip , které je součástí balíčku java.applet . Ačkoli bylo rozhraní AudioClip původně vytvořeno pro applety, je stále relevantní a užitečné pro přehrávání malých zvukových souborů v aplikacích Java.

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();
    }
}

Ve výše uvedeném úryvku kódu jsme importovali rozhraní AudioClip a třídu URL . Tyto třídy nám umožňují načíst zvukový zdroj a přehrát ho pomocí metody play() instance AudioClip. Chcete-li použít AudioClip, ujistěte se, že soubor „sound.wav“ je umístěn ve stejném adresáři jako váš soubor Java, nebo zadejte správnou cestu k souboru.

Pokud však pracujete s většími zvukovými soubory nebo potřebujete sofistikovanější kontrolu nad přehráváním, nemusí být rozhraní AudioClip dostatečné a měli byste zvážit použití třídy AudioSystem.

Přehrávání zvuků pomocí třídy AudioSystem

Třída AudioSystem je součástí balíčku javax.sound.sampled a poskytuje pokročilejší možnosti přehrávání zvuku. Následující příklad ukazuje, jak přehrát zvukový soubor pomocí třídy AudioSystem:

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();
        }
    }
}

V tomto příkladu jsme nejprve importovali požadované třídy a rozhraní z balíčku javax.sound.sampled . Poté jsme vytvořili objekt AudioInputStream pro čtení zvukových dat ze souboru a instanci Clip pro uchovávání zvukových dat v paměti. Po otevření klipu jsme zavolali metodu start() pro přehrání zvuku.

Tento přístup poskytuje větší kontrolu nad přehráváním zvuku, včetně možnosti pozastavit, obnovit, opakovat a zastavit zvuk, takže je vhodný pro širokou škálu aplikací.

Abych to shrnul, probrali jsme dva různé přístupy k přehrávání zvuků v Javě pomocí tříd AudioClip a AudioSystem. Rozhraní AudioClip je vhodné pro malé zvukové soubory v jednoduchých aplikacích, zatímco třída AudioSystem nabízí pokročilé možnosti přehrávání zvuku pro složitější scénáře. Využití výkonných knihoven Java zajišťuje bezproblémovou funkčnost zvuku a lepší uživatelský zážitek v různých aplikacích.

Související příspěvky: