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