首页 > 解决方案 > 我想用 Clip 用 Ja​​va 播放 wav 文件,但是三个 java 文件都没有工作

问题描述

第一个文件:没有声音产生。

import javax.sound.sampled.*;

public class AudioTest {

    public AudioTest() {
    
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        System.out.println(classLoader.getResourceAsStream("C:\\audio1.wav"));//to see if the sound file is found
    
        try{
          Clip clip = AudioSystem.getClip();
              AudioInputStream inputStream = AudioSystem.getAudioInputStream(classLoader.getResourceAsStream("C:\\audio1.wav"));
              clip.open(inputStream);
              clip.start();
              while (!clip.isRunning())
                  Thread.sleep(10);
              while (clip.isRunning())
                  Thread.sleep(10);
              clip.close();
            } catch (Exception  e)
                {
                  System.out.println("something failed");
                }
        System.out.println("done"); //to see if the sound is finished playing
 } 
}

第二个文件:没有声音产生。

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

public class AudioTest {

    public AudioTest() {
    
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        System.out.println(classLoader.getResourceAsStream("C:\\audio1.wav"));//to see if the sound file is found
    
        try{
          Clip clip = AudioSystem.getClip();
              AudioInputStream inputStream = AudioSystem.getAudioInputStream(classLoader.getResourceAsStream("C:\\audio1.wav"));
              clip.open(inputStream);
              clip.start();
              clip.close();
            } catch (Exception  e)
                {
                  System.out.println("something failed");
                }
     } 
}

第三个文件:没有产生声音。

import java.io.*;     
import javax.sound.sampled.*;

public class Test13 {
    static String filename = "C:\\audio1.wav";
    public static void main(String[] args) {
        
        try
        {
            Clip clip = AudioSystem.getClip();
            clip.open(AudioSystem.getAudioInputStream(new File(filename)));
            clip.start();
        }
        catch (Exception exc)
        {
            exc.printStackTrace(System.out);
        }
         
    }
}

问题是执行上述三个文件中的任何一个时都没有声音。但是现在我找到了解决这个问题的最佳方法,使用 File SoundFile = new File("src//audio1.wav");

标签: multithreadinganimationaudiographics

解决方案


第一个 java 文件现在似乎可以工作了

import java.io.IOException;
import javax.sound.sampled.*;

 class AudioTest {

    public void AudioPlay() {

        ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();

        try{
          Clip clip = AudioSystem.getClip();
          AudioInputStream inputStream = AudioSystem.getAudioInputStream(classLoader.getResourceAsStream("audio1.wav"));

          clip.open(inputStream);
          clip.start();
          while (!clip.isRunning())
              Thread.sleep(10);
          while (clip.isRunning())
              Thread.sleep(10);
          clip.close();
        } catch (Exception e)
            {
              e.printStackTrace(); 
              System.out.println(e); 
            }
        System.out.println("done"); //to see if the sound is finished playing
    } 
}
public class Test11 {

    public static void main(String[] args)  throws IOException
    {
    AudioTest au1 = new AudioTest();
    au1.AudioPlay();
    }
}

推荐阅读