我已经使用sound.sampled api在java中编写了一个p2p语音聊天应用程序,我可以与其他人进行对话,但我实际上听到了我的声音回复给了我和我#39 ; m只发送我的语音包到其他连接(不是我自己)。其他用户说他也可以听到他的声音也回复给他。
这是我正在使用的音频捕捉和播放的片段,它也有非常糟糕的回声。
package soundtest;
import java.io.*;
import javax.swing.*;
import javax.sound.sampled.*;
public class Soundtest extends JFrame{
public static void main(String[] args) {
AudioFormat format = new AudioFormat(44100, 16, 2, true, true);
DataLine.Info targetInfo = new DataLine.Info(TargetDataLine.class, format); //Read from
DataLine.Info sourceInfo = new DataLine.Info(SourceDataLine.class, format); //Write to
try{
TargetDataLine microphone = (TargetDataLine) AudioSystem.getLine(targetInfo);
microphone.open(format);
microphone.start();
SourceDataLine speakers = (SourceDataLine) AudioSystem.getLine(sourceInfo);
speakers.open(format);
speakers.start();
int numBytesRead;
byte[] targetData = new byte[microphone.getBufferSize() / 5];
for(;;){
numBytesRead = microphone.read(targetData, 0, targetData.length);
if (numBytesRead == -1) break;
speakers.write(targetData, 0, numBytesRead);
}
}
catch(Exception e){
System.err.println(e);
}
}
}
有谁知道回声的原因是什么?