Воспроизведение звука на Java [дубликаты]

1

Привет, я пытаюсь воспроизвести звук в java, код выглядит так:

public void playSound(String sound) {
    try {
        InputStream in = new FileInputStream(new File(sound));
        AudioStream audio = new AudioStream(in);
        AudioPlayer.player.start(audio);
    } catch (Exception e) {}
}

Я импортировал sun.audio *; однако получить сообщение об ошибке:

Ограничение доступа: Тип "AudioPlayer" не является API (ограничение на требуемую библиотеку "C:\Program Files\Java\jre7\lib\rt.jar")

Теги:
audio
player

1 ответ

4
Лучший ответ

Следующая программа воспроизводит 16-битный звук wav из eclipse, если мы используем javax.sound.

import java.io.*;
import java.net.URL;
import javax.sound.sampled.*;
import javax.swing.*;

// To play sound using Clip, the process need to be alive.
// Hence, we use a Swing application.
public class SoundClipTest extends JFrame {

   // Constructor
   public SoundClipTest() {
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setTitle("Test Sound Clip");
      this.setSize(300, 200);
      this.setVisible(true);       
      try {
         // Open an audio input stream.           
          File soundFile = new File("C:/Users/niklas/workspace/assets/Sound/sound.wav"); //you could also get the sound file with an URL
          AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);              
         // Get a sound clip resource.
         Clip clip = AudioSystem.getClip();
         // Open audio clip and load samples from the audio input stream.
         clip.open(audioIn);
         clip.start();
      } catch (UnsupportedAudioFileException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      } catch (LineUnavailableException e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args) {
      new SoundClipTest();
   }
}
  • 2
    Отличный выбор: вам действительно не нужен фрейм, это просто беспорядок, но, тем не менее, нет смысла расширяться от JFrame как вы не добавляете новую функциональность в класс, и вы должны быть уверены, что пользовательский интерфейс создан в контексте потока диспетчеризации событий. Посмотрите Начальные Темы для большего количества деталей
  • 0
    Спасибо вам большое! Это работает очень хорошо, и из-за того, как это работает, у меня может быть несколько звуков, перекрывающих друг друга (например, музыка и звуковые эффекты)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню