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

AWT/Swing Java Discussion :

mon jar ne lit pas les sons wav


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut mon jar ne lit pas les sons wav
    Bonjour,

    j'ai un gros projet sur Eclipse. J'y ai ajouté des sons au formats wav,. Sur Eclipse les sons s'executent sans aucun pb. (du style clike bouton de 2 sec)

    Par contre avec le jar, si je lance l'applet par mozilla ou internet expl pas de son du tout ??

    ça serait dommage de perdre ça.
    vous connaissez la raison ??

    merci !

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut en rajoutant cette classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream is1 = getClass().getResourceAsStream("fichier.txt");
    alors ça veut dire toutes mes packages auront accès au son ? dans le jar
    j'ai pas besoin de lui indiquer quel packages ont besoin du son ?

  4. #4
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut j'ai fait ça mais c'est pas concluant
    surtout que ça me fait un warning et que ça marche pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void actionPerformed(ActionEvent e) {
            InputStream is1 = getClass().getResourceAsStream("bulles.wav"); 
            Object source;
            source = e.getSource();
     
            if (source == b_start) {
                Sound.readWavFile("bulles.wav");
                action_b_start();
     
            }
    }
    merci

  5. #5
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Utilises la balise [code] (disponible dans le formulaire avec #) pour mettre en forme ton code source, afin qu'il soit lisible plus facilement, merci.

    Pour ce qui est de ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void actionPerformed(ActionEvent e) {
    InputStream is1 = getClass().getResourceAsStream("bulles.wav");
    Object source;//inutile
    source = e.getSource();//inutile car tu ne l'utilises qu'une fois
    
    if (e.getSource() == b_start) {
    Sound.readWavFile("bulles.wav");
    /* Ton problème reste le même, tu donnes un chemin de fichier, or, ce fichier n'existe pas */
    action_b_start();
    
    }
    }
    En fait, quand tu mets un fichier dans un jar, il n'existe plus en tant que fichier, c'est juste un stream de données. Tu ne peux plus y accéder avec un chemin (ou path si tu préfères). Donc quand tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sound.readWavFile("bulles.wav");
    Ton programme ne trouve pas bulles.wav, normal, puisque il n'existe pas de fichier bulles.wav, puisque tu l'as mis dans un Jar. Le seul fichier qui existe, c'est le fichier Jar. Donc pour accéder au contenu du ficher bulles.wav, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream is1 = getClass().getResourceAsStream("bulles.wav");
    Ce que tu as fait dans ton code, mais tu dois l'utiliser ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sound.readWavFile(is1);
    Je ne sais pas d'où tu sors la classe Sound, je ne suis pas sur que la méthode readWavFile accepte un stream en paramètre, mais elle devrait . Bonne chance.

  6. #6
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut ça m'embete
    Salut

    ma classe Sound provient de forums developpez.com
    je sais plus comment ça s'appelle, ce sont des codes libres que des utilisateurs on jugé utile de laisser. c'estle premier code laissé d'une longue liste.

    le hic c'est que je le trouve plus

    néanmois, la classe sound n'a pas accepté un arg de type audioInputStream
    voici le code de Sound :

    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
     public class Sound
    {        
        /**
         * Read an audio file in wav format.
         * @param fileName the path of the file you want to read.
         */
       public static void readWavFile(InputStream str) // j'ai enlevé un argument de type fileName
        {
            class SoundRunnable implements Runnable
            {
    
            	   /*
            	    * (non-Javadoc)
            	    * @see java.lang.Runnable#run()
            	    */
                public void run()
                {
                	try
                        {
       
                            AudioInputStream ais = AudioSystem.getAudioInputStream(str) !! la ça ce marche pas;
                            AudioFormat format = ais.getFormat();
                            Info info = new Info(SourceDataLine.class, format);
                            SourceDataLine source = (SourceDataLine)AudioSystem.getLine(info);
                            source.open(format);
                            source.start();
                            int read = 0;
                            byte[] audioData = new byte[16384];
                            while(read > -1)
                                {
                                    read = ais.read(audioData, 0 , audioData.length);
                                    if(read >= 0)
                                        source.write(audioData, 0, read);
                                }
                            source.drain();
                            source.close();
                        }
                    catch(Exception e)
                        {
                            e.printStackTrace();
                        }
                  
                }
                
            }
            Runnable r = new SoundRunnable();
            Thread t = new Thread(r);
            t.start();
        }
    
    }

  7. #7
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Ton paramètre doit être final car tu l'utilises dans un classe anonyme. Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void readWavFile(final InputStream str)
    Bonne chance.

  8. #8
    Membre régulier Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Points : 73
    Points
    73
    Par défaut Comment puis indiquer le chemin du wav situé en dehors du fichier appelant ?
    Merci ta solution est bien la bonne, le jar fonctionne.

    Le truc c'est que j'aimerai bien faire un petit package avec tous les sons, plutot que de les coller dans le package du fichier class appelant le wav.

    j'ai bien modifié la classe sound

    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
     public class Sound
    {        
        /**
         * Read an audio file in wav format.
         * @param fileName the path of the file you want to read.
         */
       public static void readWavFile(final InputStream str)
        {
            class SoundRunnable implements Runnable
            {
     
            	   /*
            	    * (non-Javadoc)
            	    * @see java.lang.Runnable#run()
            	    */
                public void run()
                {
                	try
                        {
     
                            AudioInputStream ais = AudioSystem.getAudioInputStream(str);
                            AudioFormat format = ais.getFormat();
                            Info info = new Info(SourceDataLine.class, format);
                            SourceDataLine source = (SourceDataLine)AudioSystem.getLine(info);
                            source.open(format);
                            source.start();
                            int read = 0;
                            byte[] audioData = new byte[16384];
                            while(read > -1)
                                {
                                    read = ais.read(audioData, 0 , audioData.length);
                                    if(read >= 0)
                                        source.write(audioData, 0, read);
                                }
                            source.drain();
                            source.close();
                        }
                    catch(Exception e)
                        {
                            e.printStackTrace();
                        }
     
                }
     
            }
            Runnable r = new SoundRunnable();
            Thread t = new Thread(r);
            t.start();
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    InputStream is2 = getClass().getResourceAsStream("clic.wav");<-- c'est la que tout se joue (le path ?)
    		if(arg0.getSource()==b_ok){
    			 Sound.readWavFile(is2);
    			valider();
    		}
    ca me permettrait une meillleure lisibilité

    Donc comment faire l'appel ?

    merci

  9. #9
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Par package, tu veux dire dossier ? Tu voudrais mettre tous tes fichiers son dans un répertoire "wav" par exemple ? Dans ce cas, je pense que tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream is2 = getClass().getResourceAsStream("wav/clic.wav");
    Je ne suis pas sur que cela fonctionne, mais théoriquement... .
    Bonne chance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon Jar n'inclue pas les dependances Maven
    Par maloups dans le forum Maven
    Réponses: 6
    Dernier message: 24/06/2009, 19h34
  2. [Tcl/Tk] Mon interface n'affiche pas les images
    Par randazar dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 21/11/2006, 16h48
  3. Mon compilo ne reconnait pas les UINT8
    Par baert dans le forum C++
    Réponses: 11
    Dernier message: 08/02/2006, 16h08

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