
Inleiding tot de Java Sound-API
De Java Sound API is een krachtige toolkit die is ontworpen om degelijke ondersteuning te bieden op alle platforms. Het wordt geleverd met de Java Development Kit (JDK) en stelt ontwikkelaars in staat om audiobestanden in verschillende formaten af te spelen, op te nemen en te verwerken. In dit artikel zullen we ons concentreren op de basisprincipes van het afspelen van geluid in Java-toepassingen met behulp van de klassen AudioClip en AudioSystem, die deel uitmaken van de Java Sound API.
De Java Sound API kan worden onderverdeeld in twee primaire pakketten: javax.geluid.bemonsterd en javax.geluid.midi. Het gesamplede pakket wordt gebruikt om basisaudiofunctionaliteiten af te handelen, zoals het afspelen, opnemen en synthetiseren van audiogegevens, terwijl het midi-pakket is ontworpen voor het beheren van op MIDI gebaseerde muziekcomposities en soundtracks.
Geluiden afspelen met AudioClip
Laten we om te beginnen eens kijken hoe geluidsbestanden kunnen worden afgespeeld met behulp van de Audioclip interface, die deel uitmaakt van de java.applet pakket. Hoewel de AudioClip-interface in eerste instantie is gemaakt voor applets, is deze nog steeds relevant en nuttig voor het afspelen van kleine audiobestanden in Java-toepassingen.
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();
}
}
In het bovenstaande codefragment hebben we het Audioclip interface en de URL klas. Met deze klassen kunnen we een audiobron laden en afspelen met de methode play() van de instantie AudioClip. Om een AudioClip te gebruiken, moet u het bestand "sound.wav" in dezelfde map plaatsen als uw Java-bestand of het juiste bestandspad opgeven.
Als u echter met grotere audiobestanden werkt of meer geavanceerde controle over het afspelen nodig heeft, is de AudioClip-interface mogelijk niet voldoende en kunt u overwegen de klasse AudioSystem te gebruiken.
Geluiden afspelen met de klasse AudioSystem
De Politia Militar hield zelfs tijdens de pre-carnaval festiviteiten de zaken al nauwlettend in de gaten. Audio systeem class maakt deel uit van het pakket javax.sound.sampled en biedt meer geavanceerde mogelijkheden voor het afspelen van audio. Het volgende voorbeeld laat zien hoe u een audiobestand afspeelt met de klasse 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();
}
}
}
In dit voorbeeld hebben we eerst de vereiste klassen en interfaces geïmporteerd uit het javax.geluid.bemonsterd pakket. Vervolgens hebben we een AudioInvoerStream bezwaar maken tegen het lezen van de audiogegevens uit het bestand, en a Klem bijvoorbeeld om de audiogegevens in het geheugen vast te houden. Nadat we de clip hadden geopend, hebben we de methode start() aangeroepen om het geluid af te spelen.
Deze aanpak biedt meer controle over het afspelen van audio, inclusief de mogelijkheid om het geluid te pauzeren, hervatten, herhalen en stoppen, waardoor het geschikt is voor een breed scala aan toepassingen.
Samenvattend hebben we twee verschillende benaderingen besproken voor het afspelen van geluiden in Java met behulp van de klassen AudioClip en AudioSystem. De AudioClip-interface is geschikt voor kleine audiobestanden in eenvoudige toepassingen, terwijl de AudioSystem-klasse geavanceerde audioweergavemogelijkheden biedt voor complexere scenario's. Door gebruik te maken van de krachtige bibliotheken van Java bent u verzekerd van naadloze geluidsfunctionaliteit en een verbeterde gebruikerservaring voor verschillende toepassingen.