java - java中的独立 channel

标签 java audio wav

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

相关文章:

php - HTTP header ,将文件发送到html5 <audio>

java - 如何使用 Java 代码启动 Tomcat 服务器?

java - java.util.regex.Matcher::useAnchoringBounds 如何工作?

javascript - JavaScript,在onmouseover事件中播放声音效果

java - 在 Java 中,使用剪辑播放音频无法正常工作且没有错误消息

java - 重置从文件加载的 Java AudioInputStream

c - 如何在 C 中获取 WAV 文件的持续时间?

java - 16+ 位音频格式如何工作?

Java 游戏开发,使用 "Classes"

java.lang.NoClassDefFoundError : org/apache/taglibs/standard/tag/rt/core/ImportTag 错误