Uvod u Java Sound API
Java Sound API je moćan komplet alata dizajniran da pruži zvučnu podršku na svim platformama. Dolazi u paketu sa Java Development Kitom (JDK) i omogućava programerima da reprodukuju, snimaju i obrađuju audio datoteke u različitim formatima. U ovom članku ćemo se fokusirati na osnove reprodukcije zvuka u Java aplikacijama pomoću klasa AudioClip i AudioSystem, koje su dio Java Sound API-ja.
Java Sound API se može kategorizirati u dva primarna paketa: javax.sound.sampled i javax.sound.midi. Samplovani paket se koristi za rukovanje osnovnim audio funkcijama kao što su reprodukcija, snimanje i sintetizacija audio podataka, dok je midi paket dizajniran za upravljanje muzičkim kompozicijama i zvučnim zapisima zasnovanim na MIDI.
Reprodukcija zvukova pomoću AudioClip-a
Za početak, istražimo kako reproducirati zvučne datoteke koristeći AudioClip interfejs, koji je deo java.applet paket. Iako je AudioClip interfejs prvobitno kreiran za aplete, i dalje je relevantan i koristan za reprodukciju malih audio datoteka u Java aplikacijama.
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(); } }
U gore navedenom isječku koda uvezli smo AudioClip interfejs i URL klasa. Ove klase nam omogućavaju da učitamo audio resurs i pustimo ga koristeći play() metodu AudioClip instance. Da biste koristili AudioClip, obavezno stavite datoteku “sound.wav” u isti direktorij kao i vaša Java datoteka ili navedite ispravnu putanju datoteke.
Međutim, ako radite s većim audio datotekama ili trebate sofisticiraniju kontrolu nad reprodukcijom, AudioClip sučelje možda neće biti dovoljno, pa biste trebali razmisliti o korištenju klase AudioSystem.
Reprodukcija zvukova pomoću klase AudioSystem
The AudioSystem class je dio paketa javax.sound.sampled i pruža naprednije mogućnosti reprodukcije zvuka. Sljedeći primjer pokazuje kako reproducirati audio datoteku koristeći klasu 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(); } } }
U ovom primjeru, prvo smo uvezli potrebne klase i interfejse iz javax.sound.sampled paket. Zatim smo kreirali AudioInputStream objekt za čitanje audio podataka iz datoteke, i a Clip instance za držanje audio podataka u memoriji. Nakon otvaranja klipa, pozvali smo metodu start() za reprodukciju zvuka.
Ovaj pristup pruža veću kontrolu nad audio reprodukcijom, uključujući mogućnost pauziranja, nastavljanja, petlje i zaustavljanja zvuka, što ga čini pogodnim za širok spektar aplikacija.
Da rezimiramo, raspravljali smo o dva različita pristupa reprodukciji zvukova u Javi koristeći klase AudioClip i AudioSystem. AudioClip interfejs je pogodan za male audio datoteke u jednostavnim aplikacijama, dok klasa AudioSystem nudi napredne mogućnosti reprodukcije zvuka za složenije scenarije. Korištenje moćnih Java biblioteka osigurava besprijekornu zvučnu funkcionalnost i poboljšano korisničko iskustvo u raznim aplikacijama.