Javaアプリケーションでサウンドを再生しようとしていますが、closeClip
インスタンスが再生に使用された後でもPulseAudio Eventloopスレッドが実行されたままなので、音:私のLinuxマシン&短剣でLinux PulseAudioを使用しているときにJavaオーディオクリップを閉じることができません
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
final class AudioClipTest {
public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
try (AudioInputStream instream = AudioSystem.getAudioInputStream(new File("resources/test-sound.wav"))){
final AudioFormat format = instream.getFormat();
final Clip clip = (Clip) AudioSystem.getLine(new DataLine.Info(Clip.class, format));
clip.addLineListener(new LineListener() {
@Override
public void update(final LineEvent event) {
if (event.getType() == LineEvent.Type.STOP) {
System.out.println("Finished playing audio.");
event.getLine().close();
// FIXME: This line is never reached on Linux with
// PulseAudio
System.out.println("Closed audio data line.");
}
}
});
clip.open(instream);
clip.start();
}
}
}
。、上記の主な方法は、関連するサウンドを再生し、印刷する
再生済みのオーディオ。
Windowsでは、‡機械印刷
完成したオーディオを再生しました。
クローズドオーディオデータライン。
正しく終了します。
Linuxマシンで実際に使用されているClip
の実装はorg.classpath.icedtea.pulseaudio.PulseAudioClip
ですが、Windowsではcom.sun.media.sound.DirectAudioDevice.DirectClip
です。 ここでは何が起こっていますか? — PulseAudioClip.close()
何が返ってこないのですか?
&短剣。配信:Linux Mint 18.1; カーネル:4.4.0-92-一般x86_64; OpenJDK:8u131-b11-2ubuntu1.16.04.3; PulseAudioは:1:8.0-ubuntu3.3
&ddagger。配信:Windows 10 Pro; バージョン: ; OSビルド:15063.540 x64; Oracle JDK:1.8.0_144-b01; のDirectX:バージョン12