gpt4 book ai didi

java - Java 7更新25:动态音频不再在本地applet中工作。有替代方法吗?

转载 作者:行者123 更新时间:2023-12-03 02:18:24 25 4
gpt4 key购买 nike

我一直在通过循环剪辑来生成动态音频
并动态更新缓冲区。

随着Java更新7 25(2013年6月18日),该剪辑不再播放
对其缓冲区进行的更改,仅循环其原始内容。
在下面的剪辑中,如果test == 0,则播放白噪声,但如果
测试== 1。它曾经双向播放噪音,并且在运行时仍会播放
作为控制台应用程序而不是本地小程序。

剪辑打开后,我真的需要更新该缓冲区:
某些软件突然变得沉默了。还有另一个(或正确的)
办法吗?提前致谢。

    AudioFormat.Encoding enc = new AudioFormat.Encoding("PCM_SIGNED");

AudioFormat frmt = new AudioFormat(enc, 22050, 16, 2, 4, 22050, false);

DataLine.Info info = new DataLine.Info(Clip.class, frmt);

Clip loop_clip;

int size = 8192;

byte[] sound_buf = new byte[size];

for (int i = 0; i < size; i++)
sound_buf[i] = 0;

int test = 1;

if (test == 0)
for (int i = 0; i < size; i++)
sound_buf[i] = (byte) (Math.random() * 256);

try {
loop_clip = (Clip) AudioSystem.getLine(info);

loop_clip.open(frmt, sound_buf, 0, size);

} catch (LineUnavailableException e) {
e.printStackTrace();
return;
}

if (test == 1)
for (int i = 0; i < size; i++)
sound_buf[i] = (byte) (Math.random() * 256);

loop_clip.setLoopPoints(0, -1);

loop_clip.loop(999);

最佳答案

在打开剪辑后,我没有找到使剪辑缓冲区可访问的解决方案,但是我使用SourceDataLine和feed缓冲区模拟了一个剪辑。它肯定会占用更多CPU,但至少可以在本地applet中对其进行测试。

关于java - Java 7更新25:动态音频不再在本地applet中工作。有替代方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com