簡體   English   中英

音頻剪輯不會連續循環

[英]Audio Clip won't loop continuously

任何人都可以指出我正確的方向為什么這段代碼不會連續播放這個音頻剪輯? 它只播放一次並停止播放。

final Clip clip = AudioSystem.getClip();
final AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("Alarm_Police.wav"));
clip.open(inputStream);
clip.loop(Clip.LOOP_CONTINUOUSLY);

如果您運行的是更大的應用程序,則此答案可能不適用。 但是對於只使用那段代碼的簡單測試,這可能會有所幫助:

Clip.loop()啟動它自己的線程,但該線程不會使JVM保持活動狀態。 因此,為了使其工作,請確保剪輯不是唯一的線程。

如果我從這個片段中省略Thread.sleep(..),我會得到與你相同的問題;

import java.io.File;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Snippet {
    public static void main(String[] args) throws Exception {

        AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("notify.wav"));
        Clip clip = AudioSystem.getClip();
        clip.open(inputStream);
        clip.loop(Clip.LOOP_CONTINUOUSLY);
        Thread.sleep(10000); // looping as long as this thread is alive
    }
}

要播放完整的音頻文件,您需要知道睡眠的時間長度。 另一種方法是:

while(clip.isRunning())
{
  Thread.sleep(100);
}

這將保持休眠(以100毫秒為增量),直到isRunning()狀態變為false。 在此循環之前,您可能需要初始睡眠,以便isRunning()狀態有時間設置。

我的音頻文件包含20秒的警報聲。 我需要它不斷響起。 我繼續使用下面顯示的代碼,而不是使用線程。

        while(true){
            clip.start();
            clip.loop(clip.LOOP_CONTINUOUSLY);              
        } 

認為這會有所幫助。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM