java中的单独通道

时间:2015-02-18 19:19:30

标签: java audio wav

该软件记录了PC的声音(带有targetdataline),但是我无法将Java中的两个声道(立体声)分开...

例如:我连接到我的PC一个ipode和一个iphone,一个音频线(立体声)ipode在右侧通道,iphone在左侧通道。所以我希望能够录制正确的频道或左声道。在我录制的那一刻,我在同一个音频文件上有两个声音。

我的AudioFormat

float sampleRate = 8000.0F; // 8000,11025,16000,22050,44100  int
sampleSizeInBits = 16; // 8,16  int channels = 2; // 1,2 boolean
signed = true; // true,false  boolean bigEndian = false; // true,false
return new AudioFormat(sampleRate, sampleSizeInBits, channels,
  signed,bigEndian);

用“TargetDataLine”编写我的文件例如:

targetDataLine.open(audioFormat);  
targetDataLine.start();
AudioSystem.write(new AudioInputStream(targetDataLine), fileType,
  audioFile);

有没有人有想法?

1 个答案:

答案 0 :(得分:0)

您可以在targetDataLine上设置channels = 1,并使用它来读取特定通道上的数据。只要您需要特定频道上的音频,您就可以根据信息的读取位置了解要阅读的内容。将音频数据保存在byte []中是最合适的,因为您可以选择从字节[]中读取的数据。我建议你再次查看sound.sampled并决定如何处理它。我的系统麦克风出了问题,我会查看这段代码。