Bonjour,
Je dois réaliser un lecteur audio en langage Java sous Eclipse dans le cadre de mes études. Je suis débutante mais j'ai tout de même réussi à cerner quelques aspects du langage Java et pondre un code...
J'ai une classe Music dans laquelle je charge la musique depuis une URL, je récupère son format, sa taille, et j'utilise un buffer pour lire la musique.
J'ai une classe Main où j'appelle la classe Music et je lui indique l'url.
Mais lorsque je compile, j'obtiens l'erreur suivante :
Voici mon code.java.io.FileNotFoundException: http:/www.youtube.com/watch?v=62XDnzE0FUk (No such file or directory)
Erreur lors de la lecture...
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at com.sun.media.sound.WaveFileReader.getAudioInputStream(WaveFileReader.java:205)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1162)
at Music.<init>(Music.java:24)
at Main.main(Main.java:12)
Exception in thread "main" java.lang.NullPointerException
at Music.TailleZikMu(Music.java:55)
at Main.main(Main.java:15)
J'ai la classe Music qui contient :
Et mon main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 import java.io.*; import javax.sound.sampled.*; public class Music { // Champs public String path ; //Chemin internet du fichier qu'on veut lire private boolean stop ; // =vrai ou faux, s'arrête quand =vrai private AudioFormat format; //format du fichier audio private byte[] size; //taille du fichier private SourceDataLine line; //ligne pour écrire la musique // On récupère le chemin d'une musique avec son url public void Audio(String path){ this.path=path; stop=false; System.out.println("[" + path + "]"); } public Music(String path){ // On ouvre l'url de la musique grâce à un objte inputstream try { AudioInputStream music=AudioSystem.getAudioInputStream(new File(path)); System.out.println("[" + path + "]"); format=music.getFormat(); // On récupère sa taille size = TailleZik(music); // Exception si le format n'est pas supporté } catch (UnsupportedAudioFileException e) { e.printStackTrace(); System.out.println("Fichier audio non supporté !"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("Erreur lors de la lecture..."); } } // Méthode pour récupérer le format private byte[] TailleZik(AudioInputStream music) { // TODO Auto-generated method stub return null; } public byte[]getTaille() { return size; } // Méthode pour récupérer la taille de la musique public byte[] TailleZikMu(AudioInputStream musique){ int longueur=(int)(musique.getFrameLength() *format.getFrameSize()); size = new byte[longueur]; DataInputStream is = new DataInputStream(musique); try { is.readFully(size); } catch (IOException ex) { ex.printStackTrace(); System.out.println("Erreur : taille du fichier incorrecte !"); } return size; } public void lecture(InputStream source ){ // Mise en mémoire tampon int tampompon = format.getFrameSize() *Math.round(format.getSampleRate() / 10); byte[]buffer=new byte[tampompon]; // On créée une ligne où on définit le format et le tampon try{ DataLine.Info info =new DataLine.Info(SourceDataLine.class, format); line = (SourceDataLine)AudioSystem.getLine(info); line.open(format, tampompon); } catch (LineUnavailableException ex) { ex.printStackTrace(); System.out.println("Erreur lors de la mise en mémoire tampon !"); return; } line.start(); // On copie ensuite sur la ligne pour lire la musique try { int numBytesRead = 0; while (numBytesRead != -1 && !stop) { numBytesRead =source.read(buffer, 0, buffer.length); if (numBytesRead != -1) { line.write(buffer, 0, numBytesRead); } } } catch (IOException ex) { ex.printStackTrace(); System.out.println("Erreur lors de la lecture !"); } line.drain(); line.close(); } // Lorsque la copie est finit, on arrête la musique public void stop(){ stop=true; } }Est-ce que quelqu'un aurait une idée d'où ça pourrait venir ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import java.io.*; public class Main { //static ListeMusic listeuh; public static void main (String [] args) { Music musik = new Music("http://www.youtube.com/watch?v=62XDnzE0FUk"); InputStream hop = new ByteArrayInputStream(musik.TailleZikMu(null)); musik.lecture(hop); System.out.println("On envoie la musique !"); System.exit(0); } }
Merci par avance.
Partager