我想知道如何在 Java 中最好使用DataLine
从麦克风捕获音频,并将其直接播放到扬声器,即使有一些延迟。
基本上,我希望能够从麦克风中获取音频,存储有限数量样本的缓冲区,能够以某种方式修改每个样本,并通过扬声器在每个样本的最短时间播放在录制和播放之间。有点像编写一个 Java 程序来使用我的电脑作为效果踏板;这可能吗?(假设我已经知道如何修改样本)。为了清楚起见,我不想从麦克风录制有限数量的样本,停止录制,修改,然后播放;我希望它能够连续录制和播放。
我想知道如何在 Java 中最好使用DataLine
从麦克风捕获音频,并将其直接播放到扬声器,即使有一些延迟。
基本上,我希望能够从麦克风中获取音频,存储有限数量样本的缓冲区,能够以某种方式修改每个样本,并通过扬声器在每个样本的最短时间播放在录制和播放之间。有点像编写一个 Java 程序来使用我的电脑作为效果踏板;这可能吗?(假设我已经知道如何修改样本)。为了清楚起见,我不想从麦克风录制有限数量的样本,停止录制,修改,然后播放;我希望它能够连续录制和播放。
这是从 a 读取TargetDataLine
到字节缓冲区,然后SourceDataLine
无限期地将其写入到 a 中的问题。
由此产生的延迟将高度依赖于您使用的音频缓冲区的大小。缓冲区越大,延迟越大。
看看这里的 AudioLoop 示例。