该软件记录PC的声音(带有targetdataline),但我无法在Java中分离两个 channel (立体声)......
例如:我用一根音频线(立体声)将一个 ipod 和一个 iphone 连接到我的 PC,ipod 在右声道,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 上设置 channels=1 并使用它来读取特定 channel 上的数据。每当您需要特定 channel 上的音频时,您都可以根据读取信息的位置知道要读取的内容。将音频数据保存在 byte[] 中是最合适的,因为您可以选择从 byte[] 读取的数据。我建议您再次查看 sound.sampled 并决定如何处理它。我的系统麦克风有问题,我会查看这段代码。
关于java - java中的独立 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592046/