Problème pour jouer un son en boucle
Bonjour,
Je cherche à jouer un son .wav lorsque je lance mon application Java. J'arrive à jouer le son une fois, mais le problème vient quand je cherche à le jouer en boucle... D'après les tutoriels que j'ai pu lire, il me faut passer en utiliser la méthode getData()
Or celle ci me renvoie une exception :
java.io.IOException could not create AudioData object
at sun.audio.Audiostream.getData(Unknow Source)
Merci d'avance pour l'aide que vous pourrez m'apporter.
Voici ma classe Audio que j'utilise :
Remarque: Du fait de l'utilisation dans cette classe de getData, même jouer un son une fois ne fonctionne plus pour la même raison
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
import java.io.*;
import sun.audio.*;
public class Audio {
private AudioData audiodata;
private AudioStream audiostream;
private ContinuousAudioDataStream continuousaudiostream;
//static int length;
public Audio(String filename) throws java.io.IOException {
FileInputStream fis = new FileInputStream(filename);
audiostream = new AudioStream(fis);
audiodata = audiostream.getData();
//audiostream = null;
//continuousaudiostream = null;
}
public void play() {
AudioPlayer.player.start(audiostream);
}
public void loop() {
continuousaudiostream = new ContinuousAudioDataStream(audiodata);
AudioPlayer.player.start(continuousaudiostream);
}
public void stop() {
AudioPlayer.player.stop(audiostream);
//if (continuousaudiostream != null)
// AudioPlayer.player.stop(continuousaudiostream);
}
} |
Et Voici la version qui fonctionne qui me permet de jouer le son une fois
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import java.io.*;
import sun.audio.*;
public class Audio {
private AudioData audiodata;
private AudioStream as;
private ContinuousAudioDataStream continuousaudiostream;
//static int length;
public Audio(String filename) throws java.io.IOException {
FileInputStream in = new FileInputStream(filename);
as = new AudioStream(in);
}
public void play() {
AudioPlayer.player.start(as);
}
public void stop() {
AudioPlayer.player.stop(as);
}
} |