Воспроизведение песни в java

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

Я использую качающуюся графику для игры, если это имеет значение.

Ошибка, которую я получаю, когда пытаюсь использовать песню «javax.sound.sampled.UnsupportedAudioFileException: не удалось получить входной аудиопоток из входного файла»

public static void main(String args[]) {

Sound s = new Sound();
s.playSound("C:/Users/isac/Desktop/banjos.wav");
}
}


public void playSound(String file) {
    try {
        AudioInputStream audio = AudioSystem.getAudioInputStream(new File(
                file));
        Clip clip = AudioSystem.getClip();
        clip.open(audio);
        clip.start();
    }

    catch (UnsupportedAudioFileException uae) {
        System.out.println(uae);
    } catch (IOException ioe) {
        System.out.println(ioe);
    } catch (LineUnavailableException lua) {
        System.out.println(lua);
    }
}

}


person Isac    schedule 01.12.2014    source источник
comment
Что ты имеешь в виду под использованием песни?   -  person Sybren    schedule 01.12.2014
comment
не могли бы вы сослаться на эту ссылку top" title="сэмплированный звук javax unsupportedaudiofileexception не удалось получить аудиовход str"> stackoverflow.com/questions/11104118/   -  person vembutech    schedule 01.12.2014
comment
stackoverflow.com/questions/11104118/   -  person sunysen    schedule 01.12.2014
comment
Sybren - Когда я использую целую песню более 1 минуты, она не работает. Только когда я использую 2-секундные звуковые эффекты   -  person Isac    schedule 01.12.2014
comment
Какая строка вызывает исключение?   -  person Radiodef    schedule 01.12.2014


Ответы (1)


Сообщение об ошибке, которое вы получаете, указывает на то, что проблема, вероятно, связана с форматом файла, а не с его длиной.

Вы можете проверить формат аудиофайла, просмотрев его свойства — обычно для этого требуется щелкнуть правой кнопкой мыши в Windows. Важные свойства могут находиться на вкладке «Дополнительно». Java может читать многие форматы, но чаще всего я видел зависание в следующем:

  1. человек пытается загрузить .mp3 или .ogg или другую форму сжатия, но не реализовал какие-либо библиотеки, которые могут распаковывать эти файлы (не ваша ситуация, поскольку ваш banjo.wav - это wav).

  2. .wav - это не стандартный формат "CD Quality" (44100 кадров в секунду, 16-битное кодирование, стерео), а скорее что-то вроде 24-битного или 32-битного кодирования или 48000 или 96000 кадров в секунду.

Текущие DAW часто упрощают запись в форматах, которые превосходят «Качество компакт-диска», но Java пока их не поддерживает.

По большей части вы можете конвертировать аудиофайлы, которые не читаются с помощью Java, в файлы, которые можно прочитать с помощью Audacity (бесплатно), если вы не работаете с другой программой для домашней студии. Будьте осторожны при получении Audacity, так как некоторые сайты, предоставляющие его (кроме официального сайта), могут содержать рекламное ПО, вредоносное ПО или вирусы.

В качестве примечания: для более длинного файла было бы лучше загрузить его в SourceDataLine для воспроизведения, а не в клип. С SourceDataLine вам не нужно ждать, пока загрузится весь файл, прежде чем он начнет воспроизводиться, и он не будет занимать столько оперативной памяти. В учебниках по Java есть раздел для звука Java и страница, посвященная воспроизведению.

person Phil Freihofner    schedule 01.12.2014