Java Audio - Как играть песню во время игры (приложение, а не апплет) - PullRequest
1 голос
/ 24 сентября 2010

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ - НУЖНО ДВА ПРОСТЫХ ОТВЕТА.

1) Мне удалось получить код, работающий с URL (это код из одного из ответов ниже). Но моя песня находится в файле WAV. Когда я пытаюсь сделать File url = new File ("---"); он не работает.

Вместо этого в трассировке стека (спасибо за этот совет!) Написано

"Failed to allocate clip data: Requested buffer too large"

Песня, которую я пытаюсь сыграть, - техно, длиной около 3 минут.

Как обойти проблему размера данных клипа?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Посмотрите на классы Java Sound API для сэмплированного звука . В частности, интерфейс Clip и класс AudioSystem.

Java Sound использует SPI для добавления поддержки дополнительных форматов к настройкам по умолчанию, встроенным в J2SE. Вы можете добавить mp3plugin.jar на основе JMF, чтобы обеспечить поддержку MP3 в JavaSound.


Для воспроизведения WAV в цикле, см. Этот небольшой пример ..
import java.net.URL;
import javax.sound.sampled.*;

public class LoopSound {

  public static void main(String[] args) throws Exception {
    URL url = new URL(
      "http://pscode.org/media/leftright.wav");
    Clip clip = AudioSystem.getClip();
    AudioInputStream ais = AudioSystem.
      getAudioInputStream( url );
    clip.open(ais);
    clip.loop(5);
    javax.swing.JOptionPane.showMessageDialog(null, "Close to exit!");
  }
} 
0 голосов
/ 17 марта 2012

Ознакомьтесь с этим руководством, в котором показано, как реализовать собственный цикл чтения-подачи-воспроизведения и избежать ошибок памяти:

http://codeidol.com/java/swing/Audio/Play-Non-Trivial-Audio/

...