Uvod u Java Sound API
Java Sound API moćan je alat dizajniran za pružanje zvučne podrške na svim platformama. Dolazi u paketu s Java Development Kit (JDK) i omogućuje programerima reprodukciju, snimanje i obradu audio datoteka u različitim formatima. U ovom ćemo se članku usredotočiti na osnove reprodukcije zvuka u Java aplikacijama pomoću klasa AudioClip i AudioSystem, koje su dio Java Sound API-ja.
Java Sound API može se kategorizirati u dva primarna paketa: javax.zvuk.uzorak i javax.zvuk.midi. Uzorkovani paket koristi se za rukovanje osnovnim audio funkcijama kao što su reprodukcija, snimanje i sintetiziranje audio podataka, dok je midi paket dizajniran za upravljanje glazbenim skladbama i zvučnim zapisima temeljenim na MIDI-ju.
Reprodukcija zvukova pomoću AudioClip-a
Za početak, istražimo kako reproducirati zvučne datoteke pomoću AudioClip sučelje, koje je dio java.applet paket. Iako je sučelje AudioClip prvotno stvoreno za aplete, još uvijek je relevantno i korisno 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 gornjem isječku koda uvezli smo AudioClip sučelje i URL razreda. Ove nam klase omogućuju učitavanje audio resursa i reprodukciju pomoću metode play() instance AudioClip. Da biste koristili AudioClip, svakako 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 vam je potrebna sofisticiranija kontrola nad reprodukcijom, AudioClip sučelje možda neće biti dovoljno i trebali biste razmisliti o upotrebi klase AudioSystem.
Reprodukcija zvukova pomoću klase AudioSystem
The Audiosustav klasa je dio paketa javax.sound.sampled i pruža naprednije mogućnosti reprodukcije zvuka. Sljedeći primjer pokazuje kako reproducirati audio datoteku pomoću klase 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 smo primjeru prvo uvezli potrebne klase i sučelja iz javax.zvuk.uzorak paket. Zatim smo stvorili AudioInputStream objekt za čitanje audio podataka iz datoteke, i a Šišanje primjerak za držanje audio podataka u memoriji. Nakon otvaranja isječka pozvali smo metodu start() za reprodukciju zvuka.
Ovaj pristup pruža veću kontrolu nad audio reprodukcijom, uključujući mogućnost pauziranja, nastavka, petlje i zaustavljanja zvuka, što ga čini prikladnim za širok raspon aplikacija.
Ukratko, raspravljali smo o dva različita pristupa reprodukciji zvukova u Javi pomoću klasa AudioClip i AudioSystem. AudioClip sučelje prikladno je za male audio datoteke u jednostavnim aplikacijama, dok klasa AudioSystem nudi napredne mogućnosti reprodukcije zvuka za složenije scenarije. Iskorištavanje moćnih Javinih biblioteka osigurava besprijekornu zvučnu funkcionalnost i poboljšano korisničko iskustvo u raznim aplikacijama.