java - 使用剪辑无法在Java中播放声音

标签 java eclipse file audio avaudiofile

我想使用下面的代码在Java中播放声音。声音是WAV格式的,所以我认为这段代码应该可以正常工作,但是与其播放声音,它什么也没做。我的控制台上甚至没有错误。因此有人可以帮助我使此代码播放声音。 (此声音包含在我的src文件的一个包中)

 public static void main(String[] args) {

 new Thread(new Runnable() {

        @Override
        public void run() {

            try {

                Clip clip = AudioSystem.getClip();

                File file = new File("C:\\Users\\Jovan\\Desktop\\song.wav");

                AudioInputStream inputStream = AudioSystem.getAudioInputStream(file);

                clip.open(inputStream);

                clip.start();

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    });
 }

最佳答案

您必须等待剪辑播放并结束。您也可以创建一些侦听器,但这更加复杂。当剪辑播放完毕(isActive()为false)时,您结束。

public class P {

 public static void main(String[] args) {

 new Thread(new Runnable() {

        @Override
        public void run() {

            try {

            System.out.println("started");

                Clip clip = AudioSystem.getClip();

                File file = new File(".......................wav");

                AudioInputStream inputStream = AudioSystem.getAudioInputStream(file);

                clip.open(inputStream);

                clip.start();

                while(clip.isOpen()) {
                  try { Thread.sleep(2000); } catch(InterruptedException ie) {}
                  if(!clip.isActive()) break;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }).start();
 }

 }

关于java - 使用剪辑无法在Java中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48735326/

相关文章:

java - 重用验证方法。转换对象

当值包含双引号时,Java jackson ObjectMapper 失败?

java - 安卓模拟器无法运行

java - 应该如何访问已编译 jar 中的资源?

perl - perl 的 int(-M $file) 有什么作用?

Java 从文本文件中提取值

android - Eclipse 导出的 apk 崩溃

java - Eclipse:升级到 Spring Boot 2.0.1 后无法检测类异常

python - 围绕文件对象堆叠过滤器

java - 如何从 ListView 中选择特定文件