[AIDE JAVA] Comment faire lire un fichier musique [Fermé]

Signaler
Messages postés
106
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
6 janvier 2017
-
Messages postés
1
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
16 décembre 2015
-
Bonjour,
J'ai une petite question, c'est a vous de choisir si vous voulez m'aider mais bon, lisez en entier ça vous fera de bien. ^^
Ma question serai que une gentille personne me fasse un petit code en java qui fait :
1 - Télécharger une musique au lancement de l'application
2 - Lire la musique au lancement de l'application (SVP, elle ne s'affiche pas sous un logiciel quelconque comme VLC ou autre, elle est lue sans l'aide d'un logiciel ou elle est lue sans afficher une autre application).
3 - Ne pas lire la musique en boucle, la lire une seule fois.

POSEZ MOI DES QUESTIONS SI VOUS AVEZ BESOIN ET MERCI A CELUI QUI FAIT CELA ! :D

3 réponses

Messages postés
426
Date d'inscription
dimanche 31 juillet 2011
Statut
Membre
Dernière intervention
17 février 2015
22
T'a trouvé la gentille personne dans ce cas

import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.*;

public class Sound {
    private AudioFormat format;
    private byte[] samples;
    /**
     * 
     * @param filename le lien vers le fichier song (URL ou absolute path)
     */
    public Sound(String filename){
     try{
      AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
      format = stream.getFormat();
      samples = getSamples(stream);
     }
     catch (UnsupportedAudioFileException e){
      e.printStackTrace();
     }
     catch (IOException e){
      e.printStackTrace();
     }
    }
    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 (IOException e){
      e.printStackTrace();
     }
     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();
    }
}


voilà comment tu l'utilise

public static void main(String[] args) {
       Sound player = new Sound("CLICK.WAV");
     InputStream stream = new ByteArrayInputStream(player.getSamples()); 
    player.play(stream);
}


"L'ordinateur est une grande invention : il y a autant d'erreur qu'avant mais plus personne n'est responsable..."
15
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
426
Date d'inscription
dimanche 31 juillet 2011
Statut
Membre
Dernière intervention
17 février 2015
22
est ce que le type du fichier que tu as chargé est de type .WAV? Quel est le type d'extension que tu a utilisé? et vérifie que le fichier se trouve dans racine (root) de ton project., c'est à partir de là,
Bonjour,
merci pour ce code qui fonctionne parfaitement ! Par contre comment arrêter la musique ? J'ai essayer stream.close() mais ça ne fonctionne pas...
En espérant que quelqu'un me répondra ! :)
merciiiiiiiiiiiiiiiiiiiiiiiiiiiii bcp
Ma musique est de type mp3
Messages postés
1
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
16 décembre 2015

merciiiiiiiiiiiiii énormément :D
Messages postés
16371
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 856
Pour le côté "une gentille personne me fasse un petit code en java", tu rêves ! Mais tu pourrais t'intéresser à JavaFX avec par exemple ce tutoriel : Les applications web avec JavaFX (attention : perturbations en cours sur le SdZ).
Messages postés
2
Date d'inscription
lundi 9 novembre 2015
Statut
Membre
Dernière intervention
9 novembre 2015
1
Hello tout le monde,
J'ai trouvé une autre solution pour faire jouer un son .wav (si vous avez un son en .mp3 vous pouvez le convertir à l'aide de certains sites internet en .wav.....) :

import java.io.*;
import javax.sound.sampled.*;

public class Son {


public static void main(String[] args) {
System.out.println("Départ de la musique/son");
JouerLeSon("monSon.wav");
System.out.println("Fin du programme, la musique/son a été jouée!");
}
public static void JouerLeSon(String sonFile) { //la méthode importante qui sert à jouer le son à chaque fois qu'on l'appelle en y passant l'URL du fichier...
SourceDataLine soundLine = null;
int BUFFER_SIZE = 64 * 1024; // 64 KB


try {
File soundFile = new File(sonFile);
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
AudioFormat audioFormat = audioInputStream.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
soundLine = (SourceDataLine) AudioSystem.getLine(info);
soundLine.open(audioFormat);
soundLine.start();
int nBytesRead = 0;
byte[] sampledData = new byte[BUFFER_SIZE];
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(sampledData, 0,
sampledData.length);
if (nBytesRead >= 0) {
soundLine.write(sampledData, 0, nBytesRead);
}
}
} catch (UnsupportedAudioFileException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (LineUnavailableException ex) {
ex.printStackTrace();
} finally {
soundLine.drain();
soundLine.close();
}
}
}

J'espère que ce petit programme vous aidera quand même! (Rien ne vaut d'essayer...)