Java Sound使用特定的Ports和DataLines

时间:2013-04-14 18:06:09

标签: java javasound

这感觉就像我在这个网站上提到的第100个与Java Sound相关的问题,但我无法在Java Sound API或jsresources.org中找到答案。我正在制作一个多轨录音机,到目前为止它工作得很好,比预期好,我目前遇到的问题是允许用户在运行时为每个音轨选择一个输入。现在我的程序只从TargetDataLine获取Mixer,我可以在录制期间控制音量以及余额。如果我列出Ports并允许用户选择特定的Port,例如笔记本电脑中的内置麦克风,如何获取特定TargetDataLine的{​​{1}}用于录音?这是关闭所有未使用的Port的问题吗?

我还注意到,当列出Ports来源引用输入和目标输出时,我只是习惯了Ports,如果有人能够澄清我会很感激它。 / p>

可以帮助我解决当前问题的是理解DataLinesPorts之间的关系,我知道这两者是什么,但我不明白为什么你不能得到{{1}来自DataLines就像你的混音器一样,那两者之间的关系是什么?

1 个答案:

答案 0 :(得分:0)

你已经超越了我试图做的事情,但也许我仍然可以帮助一点!

您是否看到了Port和DataLine之间差异的摘要? http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/package-summary.html

在我看来,给定的端口只能使用SourceDataLine或TargetDataLine中的一个,具体取决于它是输入端口还是输出端口。

您是否也尝试过这里的例子? http://docs.oracle.com/javase/tutorial/sound/capturing.html

在我看来,由于Port扩展了Line,如果你用你的Port替换它的Line(假设它是一个输入端口),读取音频的示例代码应该有效。示例代码是否适合您?

我猜测如果你混合来自多个端口的声音,则需要解压缩声音数据,自己添加声音值并将它们重新打包为PCM样本(即,进行自己的音频混合)对于单个输出线。