Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过扬声器从麦克风播放音频_Java_Audio_Signal Processing_Microphone_Speaker - Fatal编程技术网

Java 通过扬声器从麦克风播放音频

Java 通过扬声器从麦克风播放音频,java,audio,signal-processing,microphone,speaker,Java,Audio,Signal Processing,Microphone,Speaker,我想知道如何在Java中,最好使用DataLine从麦克风捕获音频,并直接播放给扬声器,即使有一些延迟 基本上,我希望能够从麦克风中获取音频,存储有限数量样本的缓冲区,能够以某种方式修改每个样本,并通过扬声器播放,在录制和播放每个样本之间的时间尽可能短。有点像编写一个Java程序,将我的电脑用作特效踏板;这可能吗?(假设我已经知道如何修改样本)。我想说清楚,我不想从麦克风上录制有限数量的样本,停止录制,修改,然后播放;我希望它能够连续录制和播放。这是一个从TargetDataLine读取到字节缓

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


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

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

产生的延迟在很大程度上取决于您使用的音频缓冲区的大小。缓冲区越大,延迟越大


看看AudioLoop示例。

看来jsresources.org不再是一个有效的链接。@PhilFreihofner Ok我已经更新了链接。幸运的是我在GitHub上缓存了一个副本。谢谢!这是有价值的信息。我很高兴看到它可用。你的答案应该已经被选中了。Matthias的代码是可靠的。我也看过他的其他音频作品,都很好。