Bonjour
J ai fait un programme ecouter un ficher wav .mon probleme c est que sa ne fonctionne pas et le message d erreur est :
could not get audio input stream from input file
Pouvez vous M aider à résoudre ce problème ?
Merci d'avance avance
Bonjour
J ai fait un programme ecouter un ficher wav .mon probleme c est que sa ne fonctionne pas et le message d erreur est :
could not get audio input stream from input file
Pouvez vous M aider à résoudre ce problème ?
Merci d'avance avance
Qu'est-ce que tu utilises pour lire ton fichier WAV ? Java Sound ? JavaFX ? Java Media Framework ?
Es-tu sur que ton fichier utilise un codec qui soit supporté par la lib Java que tu tentes d’utiliser ?
Est-il endommagé ? (peux-tu lire son contenu dans un lecteur audio autre ?)
WAV c'est comme AVI, c'est un conteneur (une manière de stocker les données), ce qui est dedans peut être encodé avec des formats différents. Voir JMF 2.1.1 - Supported Formats pour les encodages supportés par JMF. Voir également la page JavaSound sur StackOverflow.
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
merci de ta réponse pour faire simple .
mon fichier ce lit bien sur windows
voici mon code :
Dans main :
Dans audio
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Main { public static void main(String[] args) { Audio audio = new Audio("sample.wav"); audio.run(); } }
merci d'avance pour vos réponse et résoudre mon probleme
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 public void run(){ if(isSet){ SourceDataLine line; File file; final AudioInputStream audioInputStream; AudioFormat audioFormat; file = new File(path); try{ audioInputStream = AudioSystem.getAudioInputStream(file);} catch (UnsupportedAudioFileException e) { e.printStackTrace(); return;} catch (IOException e) { e.printStackTrace(); return;} audioFormat = audioInputStream.getFormat(); DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat); try{ line = (SourceDataLine) AudioSystem.getLine(info);} catch (LineUnavailableException e){ e.printStackTrace(); return;} try{line.open(audioFormat);} catch (LineUnavailableException e) { e.printStackTrace(); return;} line.start(); try { byte bytes[] = new byte[5]; int bytesRead=0; while ((bytesRead = audioInputStream.read(bytes, 0, bytes.length)) !=-1) { line.write(bytes, 0, bytesRead);}} catch (IOException io){ io.printStackTrace(); return;} line.close(); } } }
Pour être précis, avec le fichier de test que j'ai utilise, on se tape une javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file, et donc l'exception indique bien que le format n'est pas supporté par JavaSound. L'exception donne d'ailleurs un message un peu plus precis quand on tente d'utiliser JavaFX* pour lire le fichier : MediaException: MEDIA_UNSUPPORTED : Compressed WAVE is not supported! qui survient des la création du média.
Donc pour arriver a le lire, vu que je ne sais pas comment ajouter des format dans JavaSound (ni meme si c'est possible**), il faut utiliser le Java Media Framework
JMF -> Downloads -> Download -> accept -> j'ai pris la version Cross-platform Java -> ajouter lib/jmf.jar dans les dépendances du projet.
*Pour lire avec JavaFX :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public void runJMF() { if (isSet) { try { final File file = new File(path); //System.out.println(file.exists()); final MediaLocator mediaLocator = new MediaLocator(file.toURI().toURL()); final Player player = Manager.createRealizedPlayer(mediaLocator); player.prefetch(); player.start(); } catch (IOException | NoPlayerException | CannotRealizeException ex) { Logger.getLogger(Audio.class.getName()).log(Level.SEVERE, null, ex); } } }
**EDIT - En théorie, il semble que oui, par contre du coup il faut trouver qqun qui mettrai a disposition ces filtres ou codec... Voir peut-être musicg (pas testé). Voir également Java Wav File IO.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public void runFX() { if (isSet) { try { final File file = new File(path); System.out.println(file.exists()); final Media media = new Media(file.toURI().toURL().toExternalForm()); // La MediaException est levée ici. final MediaPlayer player = new MediaPlayer(media); player.play(); } catch (Throwable ex) { Logger.getLogger(Audio.class.getName()).log(Level.SEVERE, null, ex); } } }
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager