Je prépare un guide d'étude en Java pour m'aider à apprendre le japonais, mais j'ai eu du mal à le faire parler en japonais. Espeak n'a pas fonctionné, j'ai donc utilisé ce code pour obtenir un fichier .mp3 et installé mpg123 pour lire le fichier. Cela fonctionne très bien sur le terminal, mais il ne peut pas le faire jouer en Java.
Mon code:
String command="mpg123 "+dir+"/Xubuntu\\ Apps/Study\\ guide/Japanese/sounds/あう.mp3";
System.out.println(command);
try {Runtime.getRuntime().exec(command);} catch (IOException e) {e.printStackTrace();}
Le résultat
mpg123 /home/myuser/Documents/Xubuntu\ Apps/Study\ guide/Japanese/sounds/あう.mp3
Je n'entends aucun son, mais lorsque je copie/colle la commande dans le terminal, cela fonctionne bien.
Pourquoi ne pas jouer en Java?
Si vous souhaitez utiliser un code Embed pour jouer la chanson, vous pouvez utiliser ce code, :)
Source: http://Java-demos.blogspot.hu/2012/11/Java-code-to-play-mp3-file.html
Code de lecture d'une chanson MP3 en Java:
import javax.media.*;
import Java.net.*;
import Java.io.*;
import Java.util.*;
public class AudioPlay {
public static void main(String args[]) throws Exception {
// Take the path of the audio file from command line
File f = new File(args[0]);
// Create a Player object that realizes the audio
final Player p = Manager.createRealizedPlayer(f.toURI().toURL());
// Start the music
p.start();
// Create a Scanner object for taking input from cmd
Scanner s = new Scanner(System.in);
// Read a line and store it in st
String st = s.nextLine();
// If user types 's', stop the audio
if (st.equals("s")) {
p.stop();
}
}
}
Explication :
Player est une interface du package javax.media . Comme vous ne pouvez pas créer directement un objet pour une interface, une classe l'implémentant est écrite et son objet est utilisé. Manager est une classe qui fait la chose.
Il y a plusieurs états dans lesquels un joueur sera. Elles sont
NON RÉALISÉ: Cela signifie que le joueur ne sait rien de ce qu'il doit faire (à propos du média).
RÉALISER: le joueur est en train de réaliser que c'est le monde (déterminer les ressources) nécessaire pour faire le travail (lire le fichier)
RÉALISÉ: Cela signifie que le lecteur obtient ses ressources pour lire le fichier et qu'il disposera également d'informations sur le type de média, etc.
PREFETCHING: Il se prépare maintenant, il sait comment lire le fichier.
PREFETCHED: Maintenant, il sait lire le média. Il peut tirer maintenant.
START: démarre la musique, lance la lecture du fichier.
Nous avons créé un lecteur réalisé, cela ne signifie pas que les étapes NON RÉALISÉES, RÉALISÉES sont ignorées, elles sont automatiquement effectuées. La méthode
createRealizedPlayer(URL url)
prend une URL qui pointe vers le fichier multimédia. Pour obtenir l'objet URL à partir d'un objet File, vous pouvez utiliser la méthodetoURL()
dans la classeJava.io.File
, car elle est obsolète, nous avons appelé la méthodetoURI()
qui renvoieJava.net.URI
object. puis la méthodetoURL()
en elle. L'utilisateur doit également arrêter la musique pour que l'entrée soit prise par l'utilisateur.La sortie ne peut toutefois pas être affichée. Vous devez l'essayer. N'oubliez pas que, lors de l'exécution du programme, indiquez le chemin complet du fichier audio, sinon
ArrayIndexOutOfBoundsException
apparaîtra. La commande pourrait ressembler à ceci:
Java AudioPlay "Path/to/file.mp3"
Le crédit va à démo Java