【问题标题】:Can't play sound in java using clip无法使用剪辑在java中播放声音
【发布时间】:2018-02-11 19:08:46
【问题描述】:

我想使用下面的代码在 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();
            }

        }
    });
 }

【问题讨论】:

  • 你必须启动线程这可能是原因
  • 仍然没有任何反应
  • 你必须展示整个程序 - 我已经猜了一天够了
  • 但这是我的整个程序,只是没有导入

标签: java eclipse file audio avaudiofile


【解决方案1】:

您必须等待剪辑播放并结束。您也可以创建一些监听器,但这更复杂。当剪辑完成播放(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();
 }

 }

【讨论】:

    【解决方案2】:

    你刚刚启动了这个线程,所以创建一个对象:

    import java.io.*;
    import  javax.sound.sampled.*;
    
    class x {
        public static void main(String[] args) {
    
            Thread b= new Thread(new Runnable() {
    
                @Override
                public void run() {
                    try {
                        Clip clip = AudioSystem.getClip();
                        File file = new File("G:/skit/msg.wav");
                        AudioInputStream inputStream = AudioSystem.getAudioInputStream(file);
                        clip.open(inputStream);
                        clip.start();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
    
                }
            });
            b.start();
        }
    }
    

    【讨论】:

    • 仍然没有任何反应
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多