Clipインターフェイスを使用してJavaでサウンドを正しく再生するのに問題があります。
サウンドの再生は、次を使用して機能します。
clip = (Clip)mixer.getLine(dataLineInfo);
clip.open(audioFormat, byteData, 0, byteData.length);
clip.start();
ただし、クリップを閉じないとメモリリークが発生します。
クリップを開始する前にラインリスナーを追加してみましたが、次のコードを使用します。
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
e.getLine().close();
ただし、これによりサウンドが劣化します。
メソッドに1秒間のスリープを追加すると、私のマシンで再び機能するようになりますが、より洗練されたソリューションをお勧めします。リスナーメソッドで待機することは良い習慣ではなく、他のマシンでは時間がかかる可能性があります。
音が止まる前の任意の時間に停止イベントが送信されるのは奇妙なことです。
これを解決するためのより良い方法について誰かが何かアイデアを持っていますか?