Lecteur de musique en Java?


J'ai du Code qui lit un fichier mp3 java.

Le problème que je rencontre était que,

- > La sortie audio n'a été entendue que lorsque le programme s'est exécuté en mode débogage avec des points d'arrêt, mais pas en mode Exécution.

Quel pourrait être le moyen possible de contrer ce problème? J'ai joint le code pour une meilleure compréhension.

 FileInputStream mp3_file=new FileInputStream("xyz.mp3");
 Player mp3=new Player(mp3_file);
 mp3.play();
 System.out.println("Over");
Author: Buhake Sindi, 2011-06-30

4 answers

J'ai fait face au même problème dans mon projet. J'ai utilisé pour la boucle. Il résoudre mon problème.

FileInputStream mp3_file=new FileInputStream("xyz.mp3");
Player mp3=new Player(mp3_file);
 for(int i=0;i<=3; i++)
     mp3.play();

System.out.println("Over"); 

Mais si vous créez un fichier jar exécutable de votre code et que vous l'exécutez, cela fonctionne bien..... ;)

 0
Author: Kamahire, 2011-06-30 07:13:50

Votre programme se termine probablement avant la fin de la musique. Assurez-vous que votre programme ne se termine pas tant que la musique n'est pas terminée. Par exemple:

mp3.play();
System.out.println("Press Enter to stop");
System.in.read();  // wait until user presses Enter
 1
Author: Jesper, 2011-06-30 06:24:30

Très probablement votre programme est juste en train de quitter parce que le code dans la méthode main est terminé très rapidement.

Nous ne savons pas quel est votre Player mais je pense qu'il joue de la musique sur un thread différent du thread principal, donc tant que votre code s'arrête, cela fonctionne bien.

Dans la méthode main, vous devez arrêter l'exécution du code. Pour cela, vous pouvez simplement lire quelque chose de la console en utilisant:

import java.util.Scanner;
...
// here we will get input and program won't quit until we press Return
new Scanner(System.in).readLine();

En plus de cela, vous pouvez utiliser quelque chose comme

try{Thread.sleep(Long.MAX_VALUE);} catch(Exception e){}

Pour dormir fil principal et attendre trop de temps.

 0
Author: Ahmet Alp Balkan - Google, 2011-06-30 06:24:27

Threading avec une directive waitFor() pourrait être la voie à suivre. Cela pourrait également vous donner la possibilité d'avoir un thread séparé pour l'interface de contrôle qui vous permet d'interrompre ou de mettre en pause.

 0
Author: Keith Higgs, 2018-07-19 23:18:22