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

Multimédia Java Discussion :

Lecture d'un fichier son.. plusieurs fois


Sujet :

Multimédia Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Par défaut Lecture d'un fichier son.. plusieurs fois
    Salut !
    J'utilise pour mon application cette classe:
    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
     
    import javax.sound.sampled.*; 
    import java.io.*; 
    import java.net.*;   
     
    public class Son 
    {  
    	private String url; 
    	private Clip clip; 
     
    	public Son(String s)
    	{  
    		url = s; 
    		try  
    		{  
    			AudioInputStream stream = AudioSystem.getAudioInputStream(new File(url)); 
    			AudioFormat format = stream.getFormat(); 
    			DataLine.Info info = new DataLine.Info(
    			  Clip.class, stream.getFormat(), ((int)stream.getFrameLength()*format.getFrameSize())
    			);
    			clip = (Clip) AudioSystem.getLine(info); 
    			clip.open(stream); 
    		} 
    		catch (Exception e) {}  
    	}  
     
    	/** * Joue le son associé */  
    	public void jouer()
    	{   
    		try { clip.start(); } 
    		catch (Exception e) {}
    	}
    }
    qui me permet de lire un fichier son lorsque je clique sur un bouton.

    Le problème c'est que cela ne fonctionne qu'une seule fois: si je reclique sur le bouton il ne se passe rien. Savez-vous pourquoi ?

    Voici le code de mon ecouteur:
    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
     
    import java.awt.event.*;
    import javax.swing.event.*;
    import javax.swing.*;
     
    public class EcouteurCase extends MouseAdapter
    {
    	private Grille GrilleRecup;
    	private int ValRetour = 0;
     
    	private Son son1 = new Son("sons/son1.wav");
    	private Son son2 = new Son("sons/son2.wav");
    	private Son son3 = new Son("sons/son3.wav");
     
    	EcouteurCase(Grille g)
    	{
    		this.GrilleRecup = g;
    	}
     
    	public void mouseClicked(MouseEvent e)
    	{
    			ValRetour = GrilleRecup.QuelSon();
    			switch(ValRetour)
    			{
    				case 1: son1.jouer();
    				break;
    				case 2: son2.jouer();
    				break;  
    				case 3: son3.jouer();
    				break;
    			}
    	}
    }
    Merci, @+

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Mets plutôt un ActionListener à ton bouton plutôt qu'un MouseListener .


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Par défaut
    Ok mais ca ne change rien

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Salut,

    je connait pas l'API utilisé, mais je vois que tu ne ferme pas le flux.
    Peut etre que c'est la que ca plante quand il essaye d ouvrir un flux deja ouvert

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Par défaut
    C'est ce que j'avais supposé mais comment fermer le flux apres la lecture du fichier ?

    Merci @+

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2009
    Messages : 88
    Par défaut
    Un peu tard pour répondre, mais j'imagine que ça peut quand même aider quelqu'un d'autre...

    Il suffit que tu stoppe le clip après l'avoir lu une fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void jouer(){   
    		try {
     			clip.start();
    			clip.drain(); // Attend la fin de la lecture
    			clip.stop();
    		} 
    		catch (Exception e) {}
    	}

Discussions similaires

  1. lecture d'un fichier par plusieurs thread
    Par LastSpear dans le forum Bibliothèque standard
    Réponses: 2
    Dernier message: 22/12/2010, 16h17
  2. Lecture d'un fichier par plusieurs threads
    Par vinzzzz dans le forum Général Java
    Réponses: 7
    Dernier message: 09/10/2009, 16h09
  3. Lecture d'un seul fichier son à la fois
    Par dark_nights dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 12/04/2008, 10h32
  4. lecture d'un fichier son sous dev-cpp
    Par yashiro dans le forum Dev-C++
    Réponses: 4
    Dernier message: 02/05/2006, 17h26
  5. Lecture d'un fichier son
    Par benib8 dans le forum Langage
    Réponses: 2
    Dernier message: 11/09/2005, 18h52

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