[Son] Java ne trouve pas la source .wav
Bonjour,
j'ai récupéré ce code sur un site
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
import java.io.*;
import javax.sound.sampled.*;
public class sound {
private AudioFormat format;
private byte[] samples;
public sound(String filename){
try{
AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
format = stream.getFormat();
samples = getSamples(stream);
}
catch (UnsupportedAudioFileException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}
public byte[] getSamples(){
return samples;
}
public byte[] getSamples(AudioInputStream stream){
int length = (int)(stream.getFrameLength() * format.getFrameSize());
byte[] samples = new byte[length];
DataInputStream in = new DataInputStream(stream);
try{
in.readFully(samples);
}
catch (IOException e){
e.printStackTrace();
}
return samples;
}
public void play(InputStream source){
// 100 ms buffer for real time change to the sound stream
int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
byte[] buffer = new byte[bufferSize];
SourceDataLine line;
try{
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
line = (SourceDataLine)AudioSystem.getLine(info);
line.open(format, bufferSize);
}
catch (LineUnavailableException e){
e.printStackTrace();
return;
}
line.start();
try{
int numBytesRead = 0;
while (numBytesRead != -1){
numBytesRead = source.read(buffer, 0, buffer.length);
if (numBytesRead != -1)
line.write(buffer, 0, numBytesRead);
}
}
catch (IOException e){
e.printStackTrace();
}
line.drain();
line.close();
}
public static void main(String[] args){
sound player = new sound("sons/t.wav");
InputStream stream = new ByteArrayInputStream(player.getSamples());
player.play(stream);
System.exit(0);
}
} |
Le message d'erreur qui apparait est:
Exception in thread "main" java.lang.NullPointerException
Donc je crois qu'il ne trouve pas le .wav
alors quil est dans le repetoire sons qui est lui dans un répertoire qui contient la classe sound.
J'ai essayé plusieurs choses :
*enlever le répertoire sons (mettre directement "à coté" de sound.java)
*mettre dans la racine
*le mettre partout
*...
mais toujours le même message d'erreur. Je ne sais plus quoi faire.
J'ai une autre question en passant:
Quelles sont les différences entre cette méthode et l'applet?
J'ai essayé l'applet, ça ne marchait pas aussi.
Merci.