2

我想知道如何在 Java 中最好使用DataLine从麦克风捕获音频,并将其直接播放到扬声器,即使有一些延迟。

基本上,我希望能够从麦克风中获取音频,存储有限数量样本的缓冲区,能够以某种方式修改每个样本,并通过扬声器在每个样本的最短时间播放在录制和播放之间。有点像编写一个 Java 程序来使用我的电脑作为效果踏板;这可能吗?(假设我已经知道如何修改样本)。为了清楚起见,我不想从麦克风录制有限数量的样本,停止录制,修改,然后播放;我希望它能够连续录制和播放。

4

1 回答 1

1

这是从 a 读取TargetDataLine到字节缓冲区,然后SourceDataLine无限期地将其写入到 a 中的问题。

由此产生的延迟将高度依赖于您使用的音频缓冲区的大小。缓冲区越大,延迟越大。

看看这里的 AudioLoop 示例。

于 2016-03-21T00:11:05.047 回答