首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放.Wav文件

播放.Wav文件
EN

Stack Overflow用户
提问于 2014-05-15 03:35:48
回答 2查看 76关注 0票数 0

我在用

代码语言:javascript
复制
String comspec = System.getenv().get("ComSpec");

String fileToPlay = "/path/to/wav/file.wav";

Runtime.getRuntime().exec(comspec, new String[]{"/c", "start", fileToPlay}) ;

我继续得到一个错误,我所需要做的就是播放一个.wav文件

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-15 05:12:24

下面是只播放、循环和暂停AudioPlayer文件的.wav类的代码:

代码语言:javascript
复制
class AudioPlayer implements Runnable
{
    AudioInputStream input;
    Clip clip;
    private boolean running;

    public AudioPlayer(String path)
    {
        running = true;
        try
        {
            clip = AudioSystem.getClip();
            input = AudioSystem.getAudioInputStream(new File(path));
            clip.open(input);
        }
        catch (UnsupportedAudioFileException | IOException | LineUnavailableException e)
        {
            System.out.println(e);
        }
    }    
    public void play()
    {        
        clip.loop(1);
        running = true;
    }
    public void stop()
    {
        running = false;
        clip.stop();        
    }
    public void loop()
    {
        running = true;        
        new Thread(this).start();
    }
    public void suspend()
    {
        running = false;
    }
    @Override
    public void run()
    {
        try
        {
            Thread.sleep(2);
        }
        catch(InterruptedException e)
        {

        }
        while(running)
        {
            clip.loop(1);
        }
    }
}

让播放音频的对象成为一个新线程总是很理想的,这样您就可以轻松地播放、暂停它们。

javax.sound API,特别是Clip类,有非常有用的方法,您可以使用这些方法来实现广泛的声音系统。一定要检查一下!

如果你还有任何问题,只需在这篇文章上发表评论。

票数 0
EN

Stack Overflow用户

发布于 2014-05-15 03:53:32

尝试使用javax.sound api。

代码语言:javascript
复制
AudioSystem.getAudioInputStream(File file);

试着按照下面的代码运行,这对我有效。

代码语言:javascript
复制
  AudioInputStream s;
        AudioFormat f;
        DataLine.Info i;
        File inputFile;
        Clip c;

        s = AudioSystem.getAudioInputStream(inputFile);
        f = s.getFormat();
        i = new DataLine.Info(Clip.class, f);
        c = (Clip) AudioSystem.getLine(i);
        c.open(s);
        c.start();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23668818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档