Java - 使用音频剪辑时出现问题

时间:2013-08-27 16:52:46

标签: java audio wav

我一直在youtube上搜索有关如何在java中添加声音的教程,他们似乎都做了同样的事情,但这不适合我:

import java.applet.Applet;
import java.applet.AudioClip;

import javax.swing.JFrame;


public class main extends JFrame{

public main(){
    super("hi");
    setSize(480, 360);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
}
public static void main(String[] args){
    main Main = new main();

    AudioClip clip = Applet.newAudioClip(main.class.getResource("original.wav"));
    clip.play();
}
}

当我尝试运行它时,它在我初始化剪辑的行上给了一个空指针异常。我怀疑这是因为我有错误的文件网址。为了澄清,该文件位于项目文件夹中。

我也尝试过:     AudioClip clip = null;         URL url = null;

    try {
        url = new URL("original.wav");
        clip = Applet.newAudioClip(url);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    clip.play();

但这也不起作用。它给了我一个MalformedURLException

1 个答案:

答案 0 :(得分:1)

我的工作是使用javax.sound.sampled库。这是我用来加载剪辑的代码 -

public Clip loadClip( String filename )
{
    Clip clip = null;

    try
    {
        AudioInputStream audioIn = AudioSystem.getAudioInputStream( getClass().getResource( filename ) );
        clip = AudioSystem.getClip();
        clip.open( audioIn );
    }
    catch( Exception e )
    {
        e.printStackTrace();
    }

    return clip;
}

你这样实现它。

Clip sound = loadClip( "/sound.wav" );

将声音放在源文件“res”中。我使用单独的功能播放剪辑 -

public void playClip( Clip clip )
{
    if( clip.isRunning() )
    {
        clip.stop();
    }
    clip.setFramePosition( 0 );
    clip.start();
}

我通常把它放在一个Art类中,所以你可以把它称为

Art.playClip( Art.sound );

我希望这可以帮到你!