простой способ проигрывать звуки каждые x секунд в java

У меня около 20 разных звуков, и я хочу, чтобы они воспроизводились, например, каждую секунду. каждый звук имеет продолжительность около 0,7 секунды. Я даже не знаю, как импортировать mp3 в java. Как я могу это сделать в Java?

ОБНОВЛЕНИЕ

 try
 {
      in = new FileInputStream(new File("C:\\Users\\Toshiba\\Downloads\\Music\\adios.wav"));

      AudioStream as = new AudioStream(in);
      AudioPlayer.player.start(as);

      Thread.sleep(1*1000);

  } catch (Exception e)
  {
      JOptionPane.showMessageDialog(null, e);
  }

у меня новая проблема. я не могу остановить это, как только он начнется


person Altiano Gerung    schedule 25.05.2014    source источник
comment
Попробуйте написать код, который это сделает.   -  person Maroun    schedule 25.05.2014
comment
Я бы использовал JavaFX, поскольку у него есть Класс MediaPlayer, который может воспроизводить mp3, тогда как Java по умолчанию практически не поддерживает mp3. Используйте задачу TimerTask для воспроизведения звуков через определенные промежутки времени.   -  person Cobbles    schedule 25.05.2014
comment
AudioPlayer - это внутренний проприетарный API, который может быть удален в будущем, поэтому безопаснее использовать другую библиотеку. Если вы не хотите переходить на Java, вы можете использовать эту библиотеку: javazoom.net/javalayer /javalayer.html   -  person Cobbles    schedule 25.05.2014
comment
можешь прислать мне пример использования этой библиотеки?   -  person Altiano Gerung    schedule 26.05.2014
comment
неа что вопрос про игру с 1 звуком. У меня вопрос - воспроизвести много звуков с задержкой от одного к другому.   -  person Altiano Gerung    schedule 26.05.2014


Ответы (2)


Вам необходимо использовать javax.sound.sampled библиотеку, документацию по которой можно найти также здесь, поскольку вы хотите воспроизводить звук every x секунды, вам следует использовать

Thread.sleep(x*1000);

после воспроизведения звука. (x - это количество секунд, в течение которого компьютер должен ждать.)

Если вы предоставите больше кода, я буду более конкретным.

person padawan    schedule 25.05.2014
comment
Могу ошибаться, но не верю, что библиотека поддерживает mp3 - person Cobbles; 25.05.2014
comment
мне просто нужно воспроизводить звук каждую секунду, вот и все - person Altiano Gerung; 25.05.2014
comment
Вам нужно изучить библиотеку, которую я написал - person padawan; 25.05.2014
comment
Я нашел способ воспроизводить звук, но у меня возникла новая проблема: после запуска проигрывателя его нельзя остановить. пожалуйста, посмотрите мое обновление в моем сообщении, чтобы узнать подробности моего кода - person Altiano Gerung; 25.05.2014

Используйте JavaFX. Он поставляется с netbeans

TimerTask task = new TimerTask() {
        @Override
        public void run() {
            //MediaPlayer player;
            //Media audioFile = new Media(new File("PATH_TO_SOUND"));
            //player = new MediaPlayer(audioFile);
            //player.play();

            FileInputStream in = new FileInputStream(new File("C:\\Users\\Toshiba\\Downloads\\Music\\adios.wav"));
            AudioStream as = new AudioStream(in);
            AudioPlayer.player.start(as);
        }
    };
Timer timer;
timer.scheduleAtFixedRate(task, 0, 1000); //start immediately, 1000ms period

Импорт:

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
person Cobbles    schedule 25.05.2014
comment
timer.scheduleAtFixedRate(task, 0, 1000) выдает ошибку. он говорит, что не могу найти символ - person Altiano Gerung; 25.05.2014
comment
извините, я уже исправил это, прежде чем импортировать его из библиотеки javax, я перехожу на библиотеку java, и она решена. но это все равно дает мне ошибку, вы можете показать мне, какую библиотеку нужно импортировать? - person Altiano Gerung; 25.05.2014
comment
Какую среду IDE вы используете? Я начал создавать приложение с помощью обычного Java Swing, и я не мог воспроизводить mp3, но JavaFX - это отдельный набор инструментов с графическим интерфейсом. Я использую netbeans, который поставляется с JavaFX, поэтому я предлагаю вам создать новый проект JavaFX, и тогда этот код должен работать. - person Cobbles; 25.05.2014
comment
Я обновил ответ соответствующим импортом. - person Cobbles; 25.05.2014
comment
Какой символ он не может найти? - person Cobbles; 25.05.2014
comment
Я создаю свой проект не с использованием javafx, а только с java. Timer не может быть найден - person Altiano Gerung; 26.05.2014
comment
Таймер взят из библиотеки java.util.Timer так что вы сможете использовать его без JavaFX .. - person Cobbles; 26.05.2014
comment
как вы думаете, этот код работает. в Media Contructor нет параметра File. ну, я думаю, этот вопрос занимает слишком много времени, я думаю закрыть его. - person Altiano Gerung; 26.05.2014
comment
Как я уже сказал, класс Media взят из библиотеки JavaFX javafx.scene.media. Я добавил в свой ответ вашу версию, отличную от javafx. попробуйте :) Но вам нужно будет добавить способ остановить воспроизведение звука после запуска, если он застрял в цикле, но я раньше не использовал классы AudioPlayer. - person Cobbles; 26.05.2014