Как я могу воспроизвести файл WAV, используя Java? - PullRequest
1 голос
/ 02 мая 2009

Я отправляю файлы WAV, используя клиент и сервер, но я хочу воспроизвести WAV, когда он получен. Я пытаюсь этот метод, но он не работает:

Runtime.getRuntime().exec("C:\\Documents and   Settings\\Administratore\\Desktop\\gradpro\\test1\\s1.wav") ;

Это исключение, которое я получаю:

«Ошибка! Это не сработало! Java.io.IOException: Невозможно запустить программу« C: \ Documents »: ошибка CreateProcess = 193,% 1 не является допустимым приложением Win32»

Что я делаю не так?

Ответы [ 6 ]

2 голосов
/ 02 мая 2009

Вам необходимо запустить программу аудиоплеера (возможно, Windows Media Player или что-то подобное), а затем передать имя файла (полный путь к файлу) в качестве параметра:

String wavPlayer = "/path/to/winmediaplayer.exe";
String fileToPlay = "/path/to/wav/file.wav";

Runtime.getRuntime().exec(wavPlayer, new String[]{fileToPlay}) ;

Это должно сработать.

1 голос
/ 17 июля 2009

Что не так с Javas, встроенной в поддержку воспроизведения WAV? Вы можете воспроизвести его с помощью AudioClip:

private void playBackClip(String fileName) {
    try {
        AudioInputStream soundStream = null;
        if (fileName.startsWith("res:")) {
            soundStream = AudioSystem.getAudioInputStream(
                Object.class.getResourceAsStream(fileName.substring(4)));
        } else {
            File audioFile = resMap.get(fileName);
            soundStream = AudioSystem.getAudioInputStream(audioFile);
        }
        AudioFormat streamFormat = soundStream.getFormat();
        DataLine.Info clipInfo = new DataLine.Info(Clip.class,
                streamFormat);

        Clip clip = (Clip) AudioSystem.getLine(clipInfo);
        soundClip = clip;
        clip.open(soundStream);
        clip.setLoopPoints(0, -1);
        clip.start();
    } catch (UnsupportedAudioFileException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (LineUnavailableException e) {
        e.printStackTrace();
    }
}
0 голосов
/ 03 декабря 2011

Старый вопрос, но для записи:

java.awt.Desktop.getDesktop().open(new java.io.File(my_filename));
0 голосов
/ 17 июля 2009

Вместо того, чтобы указывать медиаплеер для использования, позвольте Windows найти его для вас:

String comspec = System.getenv().get("ComSpec");
String fileToPlay = "/path/to/wav/file.wav";

Runtime.getRuntime().exec(comspec, new String[]{"/c", "start", fileToPlay}) ;

Вы в основном делаете что-то вроде:

cmd.exe /c start path_to_wav_file.wav

Чтобы увидеть все параметры, которые дает старт, вы запускаете (запуск - это встроенная операция cmd.exe, а не отдельная программа, поэтому вам нужно запустить cmd.exe вместо «start.exe») , сделай

start /h
0 голосов
/ 02 мая 2009

Обязательно ли использование аудиоплеера по умолчанию? Если нет, вы можете заглянуть в AudioSystem .

Java.
0 голосов
/ 02 мая 2009

Попробуйте:

Runtime.getRuntime().exec("'C:\Documents and Settings\Administratore\Desktop\gradpro\test1\s1.wav'") ;

Обратите внимание на дополнительные одинарные кавычки. Я даже не уверен, сработает ли ваш метод, но попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...