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

NetBeans Java Discussion :

Lecteur Musique .wav


Sujet :

NetBeans Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Lecteur Musique .wav
    Bonjour , j'ai réalisé un lecteur musique trés simple avec seulement choix du fichier , lecture et stop . Le problème est que quand je met LECTURE , il lit la musique et la fenêtre se bloque jusqu'à la fin de la musique. En d'autre terme je ne peux pas arrêter la musique . Voici mon code :
    La classe Sound qui va lire la musique :
    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package lecteurmusique;
     
     
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
     
    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;
     
    class Sound {
        private AudioFormat format;
     
    	private byte[] samples;
     
    	public Sound(String filename) {
    		try {
    			AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
    			format = stream.getFormat();
    			samples = getSamples(stream);
    		} catch (Exception e) {
    		}
    	}
     
    	public byte[] getSamples() {
    		return samples;
    	}
     
    	public byte[] getSamples(AudioInputStream stream) {
    		int length = (int) (stream.getFrameLength() * format.getFrameSize());
    		byte[] samples = new byte[length];
    		DataInputStream in = new DataInputStream(stream);
    		try {
    			in.readFully(samples);
    		} catch (Exception e) {
    		}
    		return samples;
    	}
     
    	public void play(InputStream source) {
    		int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
    		byte[] buffer = new byte[bufferSize];
    		SourceDataLine line;
    		try {
    			DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
    			line = (SourceDataLine) AudioSystem.getLine(info);
    			line.open(format, bufferSize);
    		} catch (LineUnavailableException e) {
    			e.printStackTrace();
    			return;
    		}
    		line.start();
    		try {
    			int numBytesRead = 0;
    			while (numBytesRead != -1) {
    				numBytesRead = source.read(buffer, 0, buffer.length);
    				if (numBytesRead != -1)
    					line.write(buffer, 0, numBytesRead);
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		line.drain();
    		line.close();
    	}
     
     
    }
    et l'action du bonton LECTURE qui va déclencher la lecture de la musique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void lectureActionPerformed(java.awt.event.ActionEvent evt) {                                        
            Sound player = new Sound(nomChanson.getText());
            InputStream stream = new ByteArrayInputStream(player.getSamples());
            player.play(stream);
        }
    Une idée ?
    Le temps est le pire enemi de l'homme

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Salut

    Citation Envoyé par lerorodu51 Voir le message
    BLe problème est que quand je met LECTURE , il lit la musique et la fenêtre se bloque jusqu'à la fin de la musique.
    Je présume que tu as tout mis dans le même thread?
    Si oui, met la lecture de ton morceau dans un thread différent.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    L'EDT est le Thread qui gère, entre autre, l'affichage graphique et les événements clavier/souris. Donc ta méthode "lectureActionPerformed" bloque l'EDT pendant toute la lecture, donc l'interface graphique est figée.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Re
    ReBonjour, voilà j'ai créé un thread comme vous me l'avez dit. Maintenant cela marche mais je ne trouve pas le moyen d'arrêter la lecture.
    Le thread :
    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
    package lecteurmusique;
     
    import java.io.ByteArrayInputStream;
    import java.io.InputStream;
     
    public class UnThread extends Thread{
        private String chemin;
        private boolean stopThread = false;
     
        UnThread(String text) {
           chemin=text;
        }
        @Override
      public void run() {
            stopThread = false;
            Sound player = new Sound(chemin);
            InputStream stream = new ByteArrayInputStream(player.getSamples());
            player.play(stream);
      }
     
    }
    La commande pour la lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // création d'une instance du Thread
            UnThread thread = new UnThread(nomChanson.getText());
            // Activation du Thread
            thread.start();
    Le temps est le pire enemi de l'homme

Discussions similaires

  1. Lecteur audio WAV
    Par Blunt dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/11/2011, 15h41
  2. Lecteur audio (wav)
    Par Iron Bull dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 29/01/2010, 19h11
  3. Lecteur flash wav
    Par tibo894 dans le forum Flash
    Réponses: 1
    Dernier message: 23/05/2009, 11h22
  4. Lecteur musique (deezerlike)
    Par Alaop dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 06/04/2009, 17h20
  5. lecteur musique en c
    Par bobo825 dans le forum Windows
    Réponses: 1
    Dernier message: 07/01/2007, 19h45

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