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

例如:我将一台ipode和一台带音频电缆(立体声)ipode的iphone连接到我的PC上,右声道连接到iphone。因此,我希望能够记录右声道或左声道。在我录制的那一刻,我在相同的音频文件中拥有两种声音。

我的音频格式

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);

有人有主意吗?

最佳答案

您可以在targetDataLine上设置通道= 1,并使用它来读取特定通道上的数据。每当需要在特定 channel 上播放音频时,您都可以根据从何处读取信息来知道要读取的内容。将音频数据保存在byte []中是最合适的,因为您可以选择从byte []中读取什么数据。我建议您仔细检查一下sound.sample并决定如何处理它。我的系统麦克风有问题,我会看这段代码。

关于java - Java中的单独 channel ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28592046/

10-11 21:38