Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jouer de la musique

Comment jouer de la musique ?

Sujet résolu
    27 janvier 2010 à 21:30:28

    Bonjour.
    je voulais jouer un son wave, mp3 ou autre dans mes programme java et je ne sais pas kel objet utilisé.
    Pourrié - vous m'aidé?
    Merci!!!
    • Partager sur Facebook
    • Partager sur Twitter
      27 janvier 2010 à 22:23:10

      jmf est trop lourd, moi j'utilise simplement une api (jlayer).
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai tous les badges d'OpenClassrooms.
        27 janvier 2010 à 22:57:21

        Lol oui enfin c'est surtout que j'avais la flemme de répondre à ce genre de topic :p Disons que JMF est vraiment fait pour développer des lecteurs audio, vidéo etc...
        • Partager sur Facebook
        • Partager sur Twitter
          28 janvier 2010 à 6:38:06

          Sinon comme API un peu plus légère il y a l'API java sound, inclus d'office dans le JDK et la JRE. Par contre pour faire quelque chose de performant, c'est un peu plus compliqué parce que nettement plus bas niveau.
          • Partager sur Facebook
          • Partager sur Twitter
            28 janvier 2010 à 7:36:00

            Avec java sound, c'est un peu la galère pour lire les mp3.
            • Partager sur Facebook
            • Partager sur Twitter
            J'ai tous les badges d'OpenClassrooms.
              28 janvier 2010 à 14:08:44

              Citation

              Avec java sound, c'est un peu la galère pour lire les mp3.


              C'est pas beaucoup plus compliqué que de lire du wave avec les les plugins de tritonus.
              • Partager sur Facebook
              • Partager sur Twitter
                24 février 2010 à 12:25:10

                Bonjour
                En fait ce que je veux, c'est pouvoir ouvrir un fichier audio et le jouer dans un programme.
                J'ai utilisé JavaSoundAudioClip mais ça ne donne rien.
                Voici le code :
                import java.io.FileInputStream;
                import java.io.FileNotFoundException;
                import java.io.IOException;
                import java.io.InputStream;
                
                //J'importe la classe en question
                import com.sun.media.sound.JavaSoundAudioClip;
                
                
                public class MonSon extends JavaSoundAudioClip {
                
                	public MonSon(InputStream son) throws IOException {
                		super(son);
                	}
                	
                	public static void main(String[] args){
                		String str = "C:\\Users\\Bricelab\\Documents\\Programmation\\JAVA Projects\\Halo.mp3";
                		FileInputStream fic;
                		try {
                			fic = new FileInputStream(str);
                			MonSon son = new MonSon(fic);
                			son.loop();
                		}
                		catch (FileNotFoundException e1) {
                			// TODO Auto-generated catch block
                			e1.printStackTrace();
                		}
                		catch (IOException e) {
                			// TODO Auto-generated catch block
                			e.printStackTrace();
                		}
                	}
                
                }
                


                En exécutant j'obtiens une exception que voici :
                java.io.IOException: Unable to create AudioClip from input stream
                at com.sun.media.sound.JavaSoundAudioClip.<init>(Unknown Source)
                at MonSon.<init>(MonSon.java:12)
                at MonSon.main(MonSon.java:20)

                Merci de bien vouloir m'aider.
                • Partager sur Facebook
                • Partager sur Twitter
                  24 février 2010 à 13:31:18

                  J'ai fait un programme qui exécute un son wav en même temps que le programme principal s'exécute. J'ai donc dû utiliser un nouveau Thread.

                  Voici ma class qui exécute le son (tu as juste à remplacer fichier.wav par ton son) :
                  import	java.io.*;
                  import javax.sound.sampled.*;
                  
                  
                  public class Audio extends Thread{
                  	
                  	
                  	AudioInputStream audioInputStream = null;
                  	SourceDataLine line;
                  	
                  	public void run(){
                  		File fichier = new File("fichier.wav");
                  		try {
                  		AudioFileFormat format = AudioSystem.getAudioFileFormat(fichier);
                  		} catch (UnsupportedAudioFileException e1) {
                  			e1.printStackTrace();
                  		} catch (IOException e1) {
                  			e1.printStackTrace();
                  		} 
                  		
                  		try {
                  			audioInputStream = AudioSystem.getAudioInputStream(fichier);
                  		} catch (UnsupportedAudioFileException e) {
                  			e.printStackTrace();
                  		} catch (IOException e) {
                  			e.printStackTrace();
                  		}
                  		
                  		 AudioFormat audioFormat = audioInputStream.getFormat();
                  		 DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);
                  		 
                  		 try {
                  			 line = (SourceDataLine) AudioSystem.getLine(info);
                  			           
                  			 } catch (LineUnavailableException e) {
                  			   e.printStackTrace();
                  			   return;
                  			 }
                  		 
                  		try {
                  				line.open(audioFormat);
                  		} catch (LineUnavailableException e) {
                  					e.printStackTrace();
                  					return;
                  		}
                  		line.start();
                  		Fenetre.begin=true;
                  		try {
                  			byte bytes[] = new byte[1024];
                  			int bytesRead=0;
                  			while ((bytesRead = audioInputStream.read(bytes, 0, bytes.length)) != -1) {
                  			     line.write(bytes, 0, bytesRead);
                  		        }
                  		} catch (IOException io) {
                  			io.printStackTrace();
                  			return;
                  		}
                  	}
                  }
                  


                  Il te suffit ensuite d'insérer dans ton programme principal :
                  Audio son = new Audio();
                  son.start();
                  


                  PS : la classe Audio parait longue, mais en réalité elle est très courte car il y a plein de try/catch. ;)
                  Et si ton fichier est un MP3, tu peux aller sur MediaConverter et le mettre en wav.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 mars 2010 à 14:49:44

                    Gros Up :
                    lorsque je met ce code dans mon programme, il me met deux erreurs :

                    pour
                    Audio son = new Audio();
                    		son.start();
                    


                    il met dit :
                    "no enclosing instance of type morpion is accessible."
                    


                    puis pour
                    Fenetre.begin=true;
                    


                    il me répond :
                    "fenetre cannot be resolved"
                    


                    Merci d'avance de votre aide!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 mars 2010 à 14:54:28

                      C'est écrit morpion nulle part dans le code donné. Ca serait pas plutôt toi ? :) Relis-toi.
                      Pour le "fenetre cannot be resolved", ben c'est évident étant donné que la classe fenetre n'existe pas.

                      Il suffit pas de chopper des codes sur le net, faut souvent les retaper ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        7 mars 2010 à 15:02:14

                        Ok... pour fenêtre, en effet, c'est un peu couillon de ma part ^^
                        Par contre, je ne comprend pas pour morpion.
                        En fait, je ne maitrise pas du tout les thread ^^
                        J'ai mis le code dans le "public class"...
                        Je dois le mettre dans le main?
                        Ou carrément sous le public class?...
                        Je pense que mon erreur vient de là.

                        [edit] trop cool! J'ai finit par trouver tout seul!
                        Merci pour ton aide! =) :D
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 mars 2010 à 16:34:59

                          Slt. Merci pour ton code mais j'ai encore un petit problème.
                          Quand j'exécute j'obtiens ceci :
                          javax.sound.sampled.UnsupportedAudioFileException: file is not a supported file type
                          at javax.sound.sampled.AudioSystem.getAudioFileFormat(Unknown Source)
                          at Audio.run(Audio.java:15)
                          javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
                          at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
                          at Audio.run(Audio.java:23)
                          Exception in thread "Thread-0" java.lang.NullPointerException
                          at Audio.run(Audio.java:30)
                          Si tu veux voici mon code :

                          import	java.io.*;
                          import javax.sound.sampled.*;
                          
                          
                          public class Audio extends Thread{
                          	
                          	
                          	AudioInputStream audioInputStream = null;
                          	SourceDataLine line;
                          	
                          	public void run(){
                          		File fichier = new File("halo.wav");
                          		try {
                          		@SuppressWarnings("unused")
                          		AudioFileFormat format = AudioSystem.getAudioFileFormat(fichier);
                          		} catch (UnsupportedAudioFileException e1) {
                          			e1.printStackTrace();
                          		} catch (IOException e1) {
                          			e1.printStackTrace();
                          		} 
                          		
                          		try {
                          			audioInputStream = AudioSystem.getAudioInputStream(fichier);
                          		} catch (UnsupportedAudioFileException e) {
                          			e.printStackTrace();
                          		} catch (IOException e) {
                          			e.printStackTrace();
                          		}
                          		
                          		 AudioFormat audioFormat = audioInputStream.getFormat();
                          		 DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);
                          		 
                          		 try {
                          			 line = (SourceDataLine) AudioSystem.getLine(info);
                          			           
                          			 } catch (LineUnavailableException e) {
                          			   e.printStackTrace();
                          			   return;
                          			 }
                          		 
                          		try {
                          				line.open(audioFormat);
                          		} catch (LineUnavailableException e) {
                          					e.printStackTrace();
                          					return;
                          		}
                          		line.start();
                          		//Fenetre.begin=true;
                          		try {
                          			byte bytes[] = new byte[1024];
                          			int bytesRead=0;
                          			while ((bytesRead = audioInputStream.read(bytes, 0, bytes.length)) != -1) {
                          			     line.write(bytes, 0, bytesRead);
                          		        }
                          		} catch (IOException io) {
                          			io.printStackTrace();
                          			return;
                          		}
                          	}
                          	
                          	public static void main(String[] arg) {
                          		Audio son = new Audio();
                          		son.start();
                          
                          	}
                          	
                          }
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            9 mars 2010 à 17:10:36

                            "file is not a supported file type"

                            t'essaie de lire quoi comme format?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 mars 2010 à 22:45:38

                              Ton code est assez maladroit. o_O
                              Tu devrais éviter de mettre ton "main" dans la classe "Audio". Tu ferai mieux de faire une classe pour 'main', et une classe pour "Audio"...
                              Mais à part ça, j'ai repris ton code brut, et ça marche. Ton problème vient de ton fichier son. Tu es sûr que c'est un .wav ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 mars 2010 à 14:31:49

                                Je te remercie pour ton aide. En fait j'ai retrouvé mon erreur. Le fichier était corrompu.
                                S'il te plait peux-tu m'expliquer un peu ton code. Merci encore.
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Jouer de la musique

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown