Lahendatud: Kuidas java peal helisid esitada

Viimane uuendus: 06/19/2023

Kuidas helisid sisse mängida Selles artiklis käsitleme Java-helide esitamist, mis on levinud probleem, millega arendajad erinevate rakenduste, näiteks mängude ja multimeediumipleierite loomisel kokku puutuvad. Arutame samm-sammult lahendust, uurime selle ülesande täitmiseks vajalikke teeke ja anname koodi põhjaliku selgituse. Java, mis on tuntud oma mitmekülgsuse ja kasutuslihtsuse poolest, on varustatud mitmekesiste raamatukogudega, mis aitavad arendajatel oma rakenduste funktsionaalsust ja võimalusi täiustada. Üks selline oluline valdkond hõlmab heli ja heli tuge.

Sissejuhatus Java Sound API-sse

Java Sound API on võimas tööriistakomplekt, mis on loodud usaldusväärse toe pakkumiseks kõigil platvormidel. See on komplektis Java arenduskomplektiga (JDK) ja võimaldab arendajatel mängida, salvestada ja töödelda erinevates vormingutes helifaile. Selles artiklis keskendume Java-rakendustes heli esitamise põhitõdedele, kasutades Java Sound API-sse kuuluvaid AudioClipi ja AudioSystemi klasse.

Java Sound API-t saab jagada kahte peamisse paketti: javax.sound.sampled ja javax.sound.midi . Sampled-paketti kasutatakse põhiliste helifunktsioonide, näiteks heliandmete esitamise, salvestamise ja sünteesimise haldamiseks, samas kui midi-pakett on loodud MIDI-põhiste muusikakompositsioonide ja heliribade haldamiseks.

Helide esitamine AudioClipi abil

Alustuseks uurime, kuidas esitada helifaile AudioClipi liidese abil, mis on osa paketist java.applet . Kuigi AudioClipi liides loodi algselt aplettide jaoks, on see endiselt asjakohane ja kasulik väikeste helifailide esitamiseks Java-rakendustes.

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

Ülaltoodud koodilõigus oleme importinud AudioClipi liidese ja URL- klassi. Need klassid võimaldavad meil laadida heliressurssi ja esitada seda AudioClipi eksemplari play() meetodi abil. AudioClipi kasutamiseks veenduge, et fail „sound.wav” oleks teie Java-failiga samasse kataloogi või sisestage õige failitee.

Kui aga töötate suuremate helifailidega või vajate taasesituse üle keerukamat juhtimist, ei pruugi AudioClipi liides olla piisav ja peaksite kaaluma AudioSystem klassi kasutamist.

Helide esitamine AudioSystem klassi abil

Klass AudioSystem on osa paketist javax.sound.sampled ja pakub täiustatud heli taasesituse võimalusi. Järgmine näide demonstreerib , kuidas esitada helifaili klassi AudioSystem abil:

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

Selles näites importisime esmalt vajalikud klassid ja liidesed paketist javax.sound.sampled . Seejärel lõime AudioInputStream objekti, et lugeda failist heliandmeid, ja Clip eksemplari, et hoida heliandmeid mälus. Pärast klipi avamist kutsusime heli esitamiseks välja meetodi start().

See lähenemine annab heli taasesituse üle suurema kontrolli, sealhulgas võimaluse heli peatada, jätkata, silmuseid ja peatada, muutes selle sobivaks paljude rakenduste jaoks.

Kokkuvõtteks arutasime kahte erinevat lähenemisviisi helide esitamiseks Java-s, kasutades klasside AudioClip ja AudioSystem. AudioClipi liides sobib väikeste helifailide jaoks lihtsates rakendustes, samas kui AudioSystem klass pakub täiustatud heli taasesituse võimalusi keerukamate stsenaariumide jaoks. Java võimsate teekide ärakasutamine tagab sujuva helifunktsiooni ja täiustatud kasutuskogemuse erinevates rakendustes.

Seonduvad postitused: