multithreading - 我想用 Clip 用 Java 播放 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");
解决方案
第一个 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();
}
}
推荐阅读
- c# - EntityFramework Core:获取实体和相关数据发生的变化
- rhapsody - 从接口创建单独的单元 cls 文件
- java - 为什么从 10 个单选按钮保存数据时无法更新数据库?
- opencv - 简单的 blob 检测器不检测 blob
- python - Python Instagram 自动记录器
- javascript - 我如何在这个对象中发送上下文?
- excel - 使用 VBA 将 Excel 转换为 VCF 时无法添加某些值
- python - Statsmodels:使用 ARIMA 实施直接和递归的多步预测策略
- php - COUNT() 函数不返回行数
- r - 如何使用 rmarkdown 在 ioslides 演示文稿中制作可滚动幻灯片