通过TargetDataLine流式传输实时音频

时间:2013-11-28 05:40:52

标签: java audio-streaming javasound

所以,我已经有一段时间从事宠物项目了,我终于完成了所有工作......主要是。我的项目代码已经出现在JAVA audio data streaming 0s(请原谅我忘了启动我的TargetDataLine xp)。我的问题更具理论性,可能会受到诸如“使用低级语言”等问题的答案,但我很好奇是否有办法在Java中实现。在我的代码设置为synchronously的情况下,我的音频数据的读/写与缓冲区大小之间存在延迟,我想知道是否有一种流式传输音频的方式(最好是来自TargetDataLine)具有最小延迟,以便可以识别地播放歌曲或其他相对高质量的声音。我的逻辑是:

while (Stream.RENDERING_BUFFER.isOpen()) {
    int readLength = Stream.PROCESSING_BUFFER.read(Stream.READ_BUFFER, 0, Stream.BUFFER_SIZE);
    Stream.RENDERING_BUFFER.write(Stream.READ_BUFFER, 0, readLength);
}

谢谢!

1 个答案:

答案 0 :(得分:2)

SourceDataLine相当低级别。它依赖于Java所适用的每个操作系统的本机代码实现。

减少延迟的主要方法是缩小缓冲区。

还有其他与Java音频和“实时”保证有关的问题。您可能会发现这篇文章: Real-Time Low Latency Audio Processing in Java

相关问题