该软件录制了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/