我正在尝试编写一个读取 wav 文件并发送输出的小程序,就好像它来自我的麦克风一样。不幸的是,我对声音 API 没有太多经验。
背景:我基本上想要实现的是一个程序,当我在语音聊天(即 Teamspeak、Ventrilo)中时会播放声音。为了让它现在工作,我必须将录音设备切换到“你听到的”,播放声音,然后切换回麦克风。该程序应模拟来自麦克风的输入。
到目前为止,我只能播放声音。我想我只需要一个不同的 SourceLine?
public class Player {
private final int BUFFER_SIZE = 128000;
private AudioInputStream audioStream;
private AudioFormat audioFormat;
private SourceDataLine sourceLine;
public void playSound(File soundFile) {
try {
audioStream = AudioSystem.getAudioInputStream(soundFile);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
audioFormat = audioStream.getFormat();
DataLine.Info infoIn = new DataLine.Info(SourceDataLine.class,
audioFormat);
try {
sourceLine = (SourceDataLine) AudioSystem.getLine(infoIn);
sourceLine.open(audioFormat);
} catch (LineUnavailableException e) {
e.printStackTrace();
System.exit(1);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
sourceLine.start();
int nBytesRead …Run Code Online (Sandbox Code Playgroud)