java - 在 Java 7 中播放声音

标签 java fedora javasound

我正在尝试用 Java 播放声音文件。我写了这段代码:

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class SoundBang
{
    private File _file;
    private AudioInputStream _audio;
    private Clip _clip;

    public SoundBang( )
    {
        _file = new File( "file/sound/bang.wav" );

        try
        {
            _audio = AudioSystem.getAudioInputStream( _file );
            _clip = AudioSystem.getClip( );
            _clip.open( _audio );
            _clip.start( );
        }
        catch ( LineUnavailableException e )
        {
            e.printStackTrace( );
        }
        catch ( IOException e )
        {
            e.printStackTrace( );
        }
        catch ( UnsupportedAudioFileException e )
        {
            e.printStackTrace( );
        }
    }

    public static void main ( String[ ] args )
    {
        new SoundBang( );
    }
}

问题是当我运行此代码时我听不到任何声音。

声音文件的 URL 是正确的(我通过打印绝对 URL 进行了测试,没有问题)。我正在使用 Eclipse Juno、openjdk-7 和 Fedora 17 以及 KDE。

最佳答案

几件事:

  1. clip.start 会生成一个新线程在后台执行,并在应用程序终止时终止。尝试在开始剪​​辑后 sleep 。
  2. 开始之后还需要向前寻求吗?看起来这只是一条额外的线。

尝试创建你的主要方法:

public static void main ( String[ ] args )
{
    new SoundBang( );
    Thread.sleep(2000); // Sleep 2 seconds
}

关于java - 在 Java 7 中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099435/

相关文章:

linux - 如何在 Fedora 10 中将 .rpm 文件转换为 .deb 文件

java - 一个使用Java音频?

java - Google App Engine 的 Blobstore Java API 是如何工作的?

java - 在 "Refactor"-> "Rename local Variable"上禁用 Eclipse 中的信息列表

linux - 系统调用表中不存在的系统调用

python - 由于某种原因无法在 Fedora 上安装 Twisted for Python3

java - Java 声音缩放

javafx - 使用Java实时生成音频波形

java - Wildfly 增加线程数

java - Jackson ObjectMapper解析HashMap返回所有字段= NULL