IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

résoudre le problème de UnsupportedAudioFileException


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut résoudre le problème de UnsupportedAudioFileException
    Bonjour à tous,

    j'ai récupéré sur Internet un code source qui permet de lire un fichier wav. mais, malheureusement, il lit seulement un fichier parmis plusieurs et quand aux autres une exception est levée dit:

    javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at WavPlayer.<init>(WavPlayer.java:24)
    at WavPlayer.main(WavPlayer.java:92)

    Un UnsupportedAudioFileException est une exception indiquant que l’opération a échoué car un fichier ne contient pas de données valides d’un type de fichier reconnu et le format.

    J’ai téléchargé ces fichiers wav , pourquoi ils ne contiennent pas de données valides.
    le fichier lu a la plus petite taille 1,79 ko el le deuxième, par exemple,qui le suit a 9,58 ko. je me demande comment rendre ce code valable pour lire tous les fichiers wav quelque soit leurs taille ?

    merci d’avance

  2. #2
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    le code source est le suivant:

    la première classe est:

    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
    108
    109
    110
    111
    112
    import java.io.File;
     
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.DataLine;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.SourceDataLine;
     
    public class WavPlayer 
     {
         public static AudioInputStream audioStream = null;
         public static SourceDataLine line = null;
         private AudioFormat audioFormat = null;
     
         public WavPlayer(File f) throws Exception
         {
        	 //	recuperation d'un stream de type audio sur le fichier
        	 /** En théorie, pour lire un fichier son, il faut lire le contenu du fichier et 
              *  l'écrire sur la ligne qu'on a créer avec les paramètres qui vont bien.
              *  Pour la capture, on lit depuis la ligne qui va bien et on écrit dans un flux 
              *  sortant */
     
             audioStream = AudioSystem.getAudioInputStream(f);
     
             // recuperation du format de son
             audioFormat = audioStream.getFormat();
             System.out.println(audioFormat); 
     
             // recuperation du son que l'on va stoquer dans un objet de type SourceDataLine
             DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);
     
             try 
             {
            	 //	recuperation d'une instance de type SourceDataLine
            	 line = (SourceDataLine) AudioSystem.getLine(info);
             } 
             catch (LineUnavailableException e) 
             {
    		     e.printStackTrace();
             }		
         }
     
         /**
          * Ouverture du flux audio
          * @return On retourne <code>false</code> si il y a eu une erreure
          */
         public boolean open()
         {    	 
                 try 
                 {
                	 line.open(audioFormat);
                 } 
                 catch (Exception e) 
                 {
                     e.printStackTrace();              //pour le debugage
                     return false;
                 }
             return true;
         }
     
         /**
          * Fermeture du flux audio
          */
         public void close()
         {
             line.close();
         }
     
         /**
          * On joue le son
          */
         public void play()
         {
     
        	 MonThread t = new MonThread();
        	 t.start();	
        	 System.out.println("test\n");
         }
     
         /**
          * On arrete le son
          */
         public void stop()
         {
        	 line.stop();
         }
     
         public static void main(String [] args)
         {       
        	 try {
                 WavPlayer wp = new WavPlayer(new File("C:\\Documents and Settings\\administrateur\\Bureau\\alarme.wav"));
     
                 wp.open();
                 wp.play();
                 Thread.sleep(100);   // fait patienter 0.1 seconde
                // int i = 0;
                /** while(i <= 10){
                     Thread.sleep(1000);   // fait patienter une seconde
                     System.out.println(i);
                     i++;
                 }*/
                 wp.stop();
                 wp.close();
                 System.out.println("\ndebug0");
        	 } 
        	 catch (Exception e)
        	 {
                 e.printStackTrace();
             }         
         }
     }
    et la deuxième classe est :

    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
    import java.io.IOException;
     
    public class MonThread extends Thread
    {	
    	public MonThread()
    	{
    	}
     
    	public void run()
    	{
    		WavPlayer.line.start();
    		 try {
    				byte bytes[] = new byte[1024];
    	 			int bytesRead=0;
    	 			// cette boucle permet de lire tout le fichier avant de s'arêter 
     
     
    	 			while (((bytesRead = WavPlayer.audioStream.read(bytes, 0, bytes.length)) != -1)) 
    	 			{
    	 				WavPlayer.line.write(bytes, 0, bytesRead);
     
    	 			}
    	 			for(int i=0;i<29;i++)
    	 			{
    	 				System.out.print( bytes[i]+" ");	
    	 			}	 				
    	 	 } 
    		 catch (IOException io)
    	 	 {
    	 		io.printStackTrace();
    	 		return;
    	 	 }	
    	}
    }

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    j'ai essayé de vous envoyer les deux fichiers concernés mais une erreur d'envoi dit que ces fichiers sont non valides, je ne sais pas pourquoi !

    pouvez-vous m'aider ?

    et merci infiniment

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    le format de ton fichier ne doit pas etre bon

    ce programme ne lira que les wav,(ton fichier a peu etre été renommée en .wav mais cela n'en fait pas forcement un wav. l'encodage de ton fichier source n'est pas bon)

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Bonjour,

    merci de m'avoir répondu, j'ai téléchargé pas mal de fichiers wav à travers ce lien:

    http://pagesperso-orange.fr/jean-lou...e_son_wav.html

    le format de ton fichier ne doit pas etre bon

    ce programme ne lira que les wav,(ton fichier a peu etre été renommée en .wav mais cela n'en fait pas forcement un wav. l'encodage de ton fichier source n'est pas bon)
    un seul fichier parmi 42 autres qui est lu par ce programme (qui est: lazer.wav et j'ai entendu le son). Ces fichiers sont bien des wav et malgré ça, ils ne sont pas lu, je ne sais pas quoi faire et je veux que ce programme lit tout les fichiers wav.
    j'ai remarqué que le fichier lu (lazer.wav) a la plus petite taille des autres (2ko), est-ce que c'est un problème de taille ?

    pouvez-vous m'aidez ?

    merci bien pour votre aide.

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    pour ce qui est des format de fichier, je n'ai pas eu de problème pour lire d'autre wav

    ensuite pour le code utilisé, garde tu exactement le meme code que ci-dessus ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    wp.play();
                 Thread.sleep(100);   // fait patienter 0.1 seconde
                // int i = 0;
                /** while(i <= 10){
                     Thread.sleep(1000);   // fait patienter une seconde
                     System.out.println(i);
                     i++;
                 }*/
                 wp.stop();
                 wp.close();
    avec ca tu fait un play dans un thread que tu stop juste après et ensuite tu ferme le tout avec le close();

    mais bon si ce n'était que ca tu n'entendrai pas grand chose !

    je ne pense pas que la taille influe sur la lecture enfin sans être sûr

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/08/2007, 12h33
  2. Réponses: 3
    Dernier message: 19/05/2006, 15h54
  3. [UML]résoudre un problème de classe
    Par maraly dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 26/04/2006, 11h24
  4. [Mail] Le php pourrait il résoudre mon problème???
    Par mayoouketchup dans le forum Langage
    Réponses: 3
    Dernier message: 20/12/2005, 13h10
  5. Comment utiliser Developpez.com pour résoudre votre problème
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 08/01/2005, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo