java中的独立通道

java中的独立通道,java,audio,wav,Java,Audio,Wav,这个软件记录PC的声音(使用targetdataline),但我不能用Java将两个通道(立体声)分开 例如:我用一根音频线(立体声)连接到我的电脑,一个ipode和一个iphone,ipode在右声道,iphone在左声道。所以我希望能够录制右声道或左声道。当我录制的时候,我把这两个声音放在同一个音频文件中 我的音频格式 float sampleRate = 8000.0F; // 8000,11025,16000,22050,44100 int sampleSizeInBits = 16;

这个软件记录PC的声音(使用targetdataline),但我不能用Java将两个通道(立体声)分开

例如:我用一根音频线(立体声)连接到我的电脑,一个ipode和一个iphone,ipode在右声道,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,并使用它读取特定通道上的数据。每当您需要某个特定频道的音频时,您都可以根据信息的读取位置知道要读取的内容。将音频数据保存在字节[]中最合适,因为您可以选择从字节[]读取哪些数据。我建议你再检查一遍声音,然后决定如何处理。我的系统麦克风有问题,我会查看此代码。

您可以发布您尝试的详细信息吗?代码片段?My AudioFormatfloat sampleRate=8000.0F;//80001102516000205044100 int sampleSizeInBits=16;//8,16个int通道=2;//1,2布尔符号=true;//true,false布尔值bigEndian=false;//true,false返回新的音频格式(sampleRate,sampleSizeInBits,channels,signed,bigEndian)并用“TargetDataLine”编写我的文件,例如:
TargetDataLine.open(audioFormat);targetDataLine.start();AudioSystem.write(新的AudioInputStream(targetDataLine),文件类型,audioFile)请更新问题-可以删除评论。我只是想帮助你以一种更容易得到好答案的方式来表述这个问题。谢谢你的回答,你必须使用targetDataLine的read(int-read(byte[]b,int-off,int-len)方法,对吗?但我怀疑你是否能够使用一个例子?