gpt4 book ai didi

java - 第一次播放 ogg 文件有效,第二次播放时出现 LineUnavailableException

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

我正在尝试用 Java 循环 ogg 音频文件。我正在使用VorbisSPI .

我成功地播放了一次文件。当我尝试再次播放该文件或播放另一个文件时,我得到一个

LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian not supported.

我不知道我做错了什么。

方法如下。

public static void testLine(File file) {
try (AudioInputStream in = AudioSystem.getAudioInputStream(file)) {
AudioFormat inFormat = in.getFormat();
AudioFormat outFormat = new AudioFormat(PCM_SIGNED, inFormat.getSampleRate(),
16, inFormat.getChannels(), inFormat.getChannels() * 2, inFormat.getSampleRate(), false);
Info info = new Info(SourceDataLine.class, outFormat);

SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
if (line != null) {
line.open(outFormat);

FloatControl volume = (FloatControl) line.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue((float) ambiance.audio.Track.DEFAULT_VOLUME);

// stream
line.start();

byte[] buffer = new byte[65536]; // is this magical? // yes: the highest number which can be represented by an unsigned 16-bit binary number
AudioInputStream stream = AudioSystem.getAudioInputStream(outFormat,in);
for (int n = 0; n != -1; n = stream.read(buffer, 0, buffer.length)) {
line.write(buffer, 0, n);
}

line.drain();
line.stop();
in.close();

retVal = true;
}
} catch (UnsupportedAudioFileException|LineUnavailableException|IOException e) {
JOptionPane.showMessageDialog(null, e.getMessage(),
e.getClass().toString(), JOptionPane.ERROR_MESSAGE);
}
}

最佳答案

完成后,您需要在 line 上调用 close()

关于java - 第一次播放 ogg 文件有效,第二次播放时出现 LineUnavailableException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36783769/

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