關於java AudioInputStream播放短音頻沒聲音的問題


參考java官網關於此問題的解釋

播放短的音頻時,在還沒有播放時,程序就調用了stop事件,解決方法,為Clip添加一個監聽器:

 1 import javax.sound.sampled.*;
 2 
 3 public class EarlyStopDemo {
 4     private Clip clip;
 5     
 6     public void go() throws Exception {
 7         AudioInputStream audioInputStream =
 8             AudioSystem.getAudioInputStream(
 9                 new java.io.File("testLong.wav"));
10         DataLine.Info info =
11                 new DataLine.Info(Clip.class, audioInputStream.getFormat());
12         clip = (Clip) AudioSystem.getLine(info);
13         clip.addLineListener(new LineListener() {
14                 public void update(LineEvent e) {
15                     if (e.getType() == LineEvent.Type.STOP) {
16                         synchronized(clip) {
17                             clip.notify();
18                         }
19                     }
20                 }
21             });
22         clip.open(audioInputStream);
23         clip.start();
24         synchronized (clip) {
25             clip.wait();
26         }
27         clip.close();
28     }
29 
30     public static void main(String[] args) throws Exception {
31         EarlyStopDemo acd = new EarlyStopDemo();
32         for (int i = 0; i < 10 ; i++ ) {
33             acd.go();
34         }
35     }
36 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM