Por que não consigo reproduzir arquivos mp3 em java

3

Estou fazendo um guia de estudo em java para me ajudar a aprender japonês, mas tenho tido dificuldade em falar japonês para mim. O Espeak não funcionou, então usei este código para obter um arquivo .mp3 e mpg123 instalado para reproduzir o arquivo. Isso funciona bem no terminal, mas ele não consegue tocá-lo em java.

Meu código:

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();}

A saída

mpg123 /home/myuser/Documents/Xubuntu\ Apps/Study\ guide/Japanese/sounds/あう.mp3

Não ouço som, mas quando copio / colo o comando no terminal, funciona bem.

Por que não está jogando em java?

    
por TAAPSogeking 02.11.2013 / 19:31

1 resposta

1

Se você gostaria de usar um código Embed para tocar a música, então você pode usar este código,:)

Fonte: link

Código para tocar uma música em MP3 em 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();
        }
    }
}
  

Explicação :

     

Player é uma interface no pacote javax.media . Como você não pode criar um objeto para uma interface diretamente alguma classe   implementá-lo é escrito e seu objeto é usado. Gerente é tal   classe que faz a coisa.

     

Existem vários estados em que um jogador será. Eles são

     

UNREALIZED : Significado, o jogador não sabe nada sobre o que tem a fazer (sobre a mídia)

     

REALIZING : Significado, o jogador está percebendo que é mundo (determinando recursos) necessário para fazer o trabalho (reproduzir o arquivo)

     

REALISED : o que significa que o jogador obtém seus recursos para reproduzir o arquivo e também terá algumas informações sobre o tipo de mídia, etc.

     

PREFETCHING : Está ficando pronto agora, é saber como ele poderia reproduzir o arquivo.

     

PREFETCHED : Agora, sabe como tocar a mídia. Pode disparar agora.

     

START : inicia a música e começa a reproduzir o arquivo.

     

Criamos um player realizado, isso não significa que as etapas UNREALIZED, REALIZING são ignoradas, elas são feitas automaticamente. O método createRealizedPlayer(URL url) usa uma URL que aponta para o arquivo de mídia. Para obter o objeto URL a partir de um objeto File, você pode usar o método toURL() na classe java.io.File , pois ele é obsoleto chamamos o método toURI() que retorna java.net.URI object e, em seguida, o método toURL() em O usuário também precisa parar a música, então a entrada é tirada do usuário.

     

A saída, no entanto, não pode ser mostrada, você terá que tentar, lembre-se que ao executar o programa, forneça o caminho completo do arquivo de áudio, caso contrário ArrayIndexOutOfBoundsException surgirá. O comando pode ser assim:

java AudioPlay "Path/to/file.mp3"

Crédito Vai para Demonstração Java

    
por Ten-Coin 03.11.2013 / 06:11