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

Langage Java Discussion :

Comment jouer des fichiers wav en java, simplement?


Sujet :

Langage Java

  1. #1
    Invité
    Invité(e)
    Par défaut Comment jouer des fichiers wav en java, simplement?
    Bonjour à tous,

    Je suis en train de développer en java se un jeu du pendu sous eclipse se, et je voulais savoir comment jouer des fichiers wav en langage java se ? La manière la plus simple (si possible un exemple concret d'utilisation s.v.p, je suis débutant en java), étant donné que je suis étudiant.

    P.S : (si je me suis mal exprimé, je reformule : je cherche juste à lire (= jouer) des fichiers avec l'extension .wav en java se).

    Merci d'avance pour vos réponses.
    Dernière modification par Jannus ; 23/02/2009 à 02h04. Motif: "urgent"

  2. #2
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Salut,

    La réponse est dans la FAQ.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Applet c'est pas ce qui me faut je pense, je fais pas du java ee, mais se.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    		// test
    		try {
    			URL url = new URL("sons//fatality.wav");
    			AudioClip ac = Applet.newAudioClip(url);
    			ac.play();
    		} catch (MalformedURLException e) {
     
    		}
    Un chemin relatif ne passe pas avec l'url apparement, de plus l'aide de la fac c'est pour de la programmation java ee et non java se donc ça réponds pas malheureusement à mon problème, merci quand même.

    Je te mets tout mon code source de la class où je veux jouer du son, comme ça tu vois le contexte :

    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
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
     
    package ptiPenduPackage;
     
    import java.applet.Applet;
    import java.applet.AudioClip;
    import java.awt.Font;
    import java.awt.Rectangle;
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class JPregles extends JPanel {
     
    	private static final long serialVersionUID = 1L;
    	private JLabel jLabel1 = null;
    	private JLabel jLabel2 = null;
    	private JLabel jLabel3 = null;
    	private JLabel jLabel4 = null;
    	private JLabel jLabel5 = null;
    	private JLabel jLabel6 = null;
    	private JLabel jLabel7 = null;
    	private JLabel jLabel8 = null;
    	private JLabel jLabel9 = null;
    	private JLabel jLabel10 = null;
    	private JLabel jLabel11 = null;
    	private JLabel jLabel12 = null;
    	private JLabel jLabel13 = null;
    	private JLabel jLabel14 = null;
    	private JLabel jLabel15 = null;
     
    	/**
             * This is the default constructor
             */
    	public JPregles() {
    		super();
    		initialize();
     
    		// test
    		try {
    			URL url = new URL("sons//fatality.wav");
    			AudioClip ac = Applet.newAudioClip(url);
    			ac.play();
    		} catch (MalformedURLException e) {
     
    		}
     
    	}
     
    	/**
             * This method initializes this
             * 
             * @return void
             */
    	private void initialize() {
     
    		int nbrMots = Donnees.getUniqueInstance().getListeMots().size();
     
    		// mise en forme des JLabel
    		Font f1 = new Font("Arial", Font.BOLD, 15);
    		Font f2 = new Font("Arial", Font.BOLD, 25);
    		// jlbTextBas.setFont(f1);
     
    		jLabel15 = new JLabel();
    		jLabel15.setFont(f1);
    		jLabel15.setBounds(new Rectangle(255, 390, 255, 16));
    		jLabel15.setText("Mot trouvé avec 6 erreurs:.......6Pts");
     
    		jLabel14 = new JLabel();
    		jLabel14.setFont(f1);
    		jLabel14.setBounds(new Rectangle(22, 508, 635, 16));
    		jLabel14.setText("Hors, pour votre information, il comprend plus de "
    				+ nbrMots + " mots... Donc Bonne chance!! ;-)");
     
    		jLabel13 = new JLabel();
    		jLabel13.setFont(f1);
    		jLabel13.setBounds(new Rectangle(22, 479, 771, 16));
    		jLabel13
    				.setText("Et, si vous pensez pouvoir trouver un mot en un coup, c'est que vous pensez que la liste de mots est petite!");
     
    		jLabel12 = new JLabel();
    		jLabel12.setFont(f1);
    		jLabel12.setBounds(new Rectangle(23, 450, 245, 16));
    		jLabel12.setText("Je vous souhaite bien du plaisir...");
     
    		jLabel11 = new JLabel();
    		jLabel11.setFont(f1);
    		jLabel11.setBounds(new Rectangle(254, 420, 255, 16));
    		jLabel11.setText("Mot non trouvé (7 erreurs):...-10Pts");
     
    		jLabel10 = new JLabel();
    		jLabel10.setFont(f1);
    		jLabel10.setBounds(new Rectangle(254, 360, 270, 16));
    		jLabel10.setText("Mot trouvé avec 5 erreurs:.........10Pts");
     
    		jLabel9 = new JLabel();
    		jLabel9.setFont(f1);
    		jLabel9.setBounds(new Rectangle(254, 330, 269, 16));
    		jLabel9.setText("Mot trouvé avec 4 erreurs:......15Pts");
     
    		jLabel8 = new JLabel();
    		jLabel8.setFont(f1);
    		jLabel8.setBounds(new Rectangle(254, 298, 266, 16));
    		jLabel8.setText("Mot trouvé avec 3 erreurs:......25Pts");
     
    		jLabel7 = new JLabel();
    		jLabel7.setFont(f1);
    		jLabel7.setBounds(new Rectangle(255, 270, 264, 16));
    		jLabel7.setText("Mot trouvé avec 2 erreurs :....35Pts");
     
    		jLabel6 = new JLabel();
    		jLabel6.setFont(f1);
    		jLabel6.setBounds(new Rectangle(254, 239, 265, 18));
    		jLabel6.setText("Mot trouvé avec 1 erreur :......50Pts");
     
    		jLabel5 = new JLabel();
    		jLabel5.setFont(f1);
    		jLabel5.setBounds(new Rectangle(252, 211, 265, 16));
    		jLabel5.setText("Mot trouvé sans erreur :......100Pts");
     
    		jLabel4 = new JLabel();
    		jLabel4.setFont(f1);
    		jLabel4.setBounds(new Rectangle(120, 178, 176, 16));
    		jLabel4.setText("COMPTE DES POINTS:");
     
    		jLabel3 = new JLabel();
    		jLabel3.setFont(f1);
    		jLabel3.setBounds(new Rectangle(121, 136, 586, 30));
    		jLabel3
    				.setText("Plus vous avez trouvé de mots, plus votre score grandira !!Alors à vous de jouer!");
     
    		jLabel2 = new JLabel();
    		jLabel2.setFont(f1);
    		jLabel2
    				.setText("Vous avez 7 coups pour trouver le mot caché! Et si vous réussissez : on recommence! ");
    		jLabel2.setBounds(new Rectangle(120, 91, 615, 31));
     
    		jLabel1 = new JLabel();
    		jLabel1.setFont(f2);
    		jLabel1.setText("Le jeu du Mortal Pendu");
    		jLabel1.setBounds(new Rectangle(264, 19, 338, 70));
     
    		this.setSize(900, 600);
    		this.setLayout(null);
    		this.add(jLabel1, null);
    		this.add(jLabel2, null);
    		this.add(jLabel3, null);
    		this.add(jLabel4, null);
    		this.add(jLabel5, null);
    		this.add(jLabel6, null);
    		this.add(jLabel7, null);
    		this.add(jLabel8, null);
    		this.add(jLabel9, null);
    		this.add(jLabel10, null);
    		this.add(jLabel11, null);
    		this.add(jLabel12, null);
    		this.add(jLabel13, null);
    		this.add(jLabel14, null);
    		this.add(jLabel15, null);
    	}
     
    } // @jve:decl-index=0:visual-constraint="35,15"

  4. #4
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Les applet font parti de Java SE. D'autre part, c'est le seule moyen simple de jouer un son. Sinon il faut utiliser l'API javaSound qui est plutôt de bas niveau, et il y a un peu de boulot.
    Quand au chemin pour accéder à une ressource, la FAQ y répond aussi je crois.

  5. #5
    Invité
    Invité(e)
    Par défaut
    ok mais j'ai rien trouvé dans la fac concernant le chemin en relatif pour l'objet de type et class URL, alors si tu peux me modifier mon code pour que je puisse utiliser un chemin relatif, avec l'exemple de code de la faq, je suis partant.

    P.S : j'ai aussi regardé dans l'api java 6, concernant les constructeurs de la classe URL et j'ai pas trouvé de constructeur pour utiliser un chemin relatif.

    merci d'avance cordialement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		// test
    		try {
    			URL url = new URL("sons//fatality.wav");
    			AudioClip ac = Applet.newAudioClip(url);
    			ac.play();
    		} catch (MalformedURLException e) {
     
    		}

  6. #6
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Je n'ai pas vraiment trouvé dans la FAQ, il bien ceci, mais ça n'est pas tout à fait ça, j'ai du confondre. Tu peux utiliser la méthode getResource sur une classe.

    Voici un exemple.
    Pour le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import java.applet.Applet;
    import java.applet.AudioClip;
    import java.net.URL;
     
    public class Son {
     
    	public static void main(String[] args) {
    		URL url = Son.class.getResource("sons/fatality.wav");
    		AudioClip ac = Applet.newAudioClip(url);
    		ac.play();
    	}
     
    }
    A l'endroit où se trouve la classe Son, tu crée un répertoire "sons", et dans ce répertoire, tu copie ton fichier wav.

    A noter que tu peux jouer des sons wav, au et aiff. Mais attention, tu ne peux pas les jouer tous. Ces formats sont en fait des formats conteneur, donc pas possible de faire jouer des sons compressés comme du wav en mp3 par exemple. Seul le PCM est accepté.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci du fond du coeur visiwi, je viens de tester la procédure que tu viens de me dire et ça fonctionne nickel et c'est super simple à utiliser, merci beaucoup, tu m'as fait gagner beaucoup de temps. Dernière chose que je voulais te demander à ce sujet, mais bon si la réponse à ma question n'existe pas c'est pas grave; je voulais juste savoir si il existait une méthode plus propre que celle-ci (au niveau du code) et à la fois aussi facile à utiliser, pour juste jouer un son au format .wav ?

    merci d'avance pour vos réponses, cordialement.

  8. #8
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Citation Envoyé par alino-91 Voir le message
    je voulais juste savoir si il existait une méthode plus propre que celle-ci (au niveau du code) ?
    Qu'est-ce qui n'est pas propre dans ce code ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Rien t'as raison, mais je pensais à la classe Son qui est vide, quand je parlais de code malpropre, le fait de devoir créer une classe vide pour pouvoir jouer du son.

  10. #10
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    La classe Son n'est qu'un exemple... tu utilise le code du main comme tu l'entends ! Cependant, je t'ai donné cet exemple pour te montrer la solution d'accès à une ressource par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classe.class.getResource(String)
    Classe étant le nom d'une classe ou trouver le fichier de son, avec éventuellement un ou plusieurs sous répertoire indiquer dans la chaine passée en argument comme dans l'exemple.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Ok ça roule, je comprends mieux now, donc si j'utilise à la place de la classe Son la classe où j'ai mon main (ou une autre classe, à condition que le dossier où se trouve mes fichiers wav soit dans le même dossier que la classe utilisé pour accéder aux ressources), ben ça fonctionnera pareil c'est ça?

  12. #12
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Absolument !

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

Discussions similaires

  1. Jouer des fichier wav
    Par shayw dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/09/2014, 22h08
  2. ça se passe comment l'organisation des fichiers source en java
    Par razily dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/05/2009, 09h45
  3. Réponses: 1
    Dernier message: 28/01/2009, 12h58
  4. Jouer des fichiers .wav à une fréquence précise
    Par germinho dans le forum LabVIEW
    Réponses: 0
    Dernier message: 22/05/2008, 10h16
  5. Comment lire des fichiers mp3, wav et video ?
    Par Klemsy78 dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 11/12/2007, 11h34

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