2009-02-23 9 views
6

में wav खेलने मैं here (1) और here(2) वर्णन के अनुसार एकमुसीबत जावा

PCM_UNSIGNED 11025.0 Hz, 8 bit, mono, 1 bytes/frame 

फ़ाइल खेलने के लिए कोशिश कर रहा हूँ।

पहला दृष्टिकोण काम करता है, लेकिन मैं sun.* सामान पर निर्भर नहीं होना चाहता हूं। दूसरे परिणाम केवल कुछ प्रमुख फ्रेमों में खेला जा रहा है, जो एक क्लिक की तरह लगता है। एक आईओ मुद्दा नहीं हो सकता क्योंकि मैं एक ByteArrayInputStream से खेल रहा हूं।

Plz अपने विचारों को साझा करें कि यह क्यों हो सकता है। TIA।

उत्तर

23

मुझे यकीन नहीं है कि आपके द्वारा लिंक किया गया दूसरा दृष्टिकोण क्यों एक और धागा शुरू करता है; मेरा मानना ​​है कि ऑडियो वैसे भी अपने धागे में खेला जाएगा। क्या समस्या है कि क्लिप समाप्त होने से पहले आपका आवेदन खत्म हो गया है?

import javax.sound.sampled.*; 
import java.io.File; 
import java.io.IOException; 
import javax.sound.sampled.LineEvent.Type; 

private static void playClip(File clipFile) throws IOException, 
    UnsupportedAudioFileException, LineUnavailableException, InterruptedException { 
    class AudioListener implements LineListener { 
    private boolean done = false; 
    @Override public synchronized void update(LineEvent event) { 
     Type eventType = event.getType(); 
     if (eventType == Type.STOP || eventType == Type.CLOSE) { 
     done = true; 
     notifyAll(); 
     } 
    } 
    public synchronized void waitUntilDone() throws InterruptedException { 
     while (!done) { wait(); } 
    } 
    } 
    AudioListener listener = new AudioListener(); 
    AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(clipFile); 
    try { 
    Clip clip = AudioSystem.getClip(); 
    clip.addLineListener(listener); 
    clip.open(audioInputStream); 
    try { 
     clip.start(); 
     listener.waitUntilDone(); 
    } finally { 
     clip.close(); 
    } 
    } finally { 
    audioInputStream.close(); 
    } 
} 
+0

असल में मैं इसे एक अलग थ्रेड में नहीं चलाता, केवल ब्रेवटी के लिए जुड़ा हुआ है। बहुत धन्यवाद !!! – yanchenko

+0

@ जतरो - आप सही हैं; मैं एपीआई में उस कॉल को याद किया था; मैं कोड अपडेट करूंगा। – McDowell

+0

नाली() http://download.oracle.com/javase/tutorial/sound/playing.html – lucks

संबंधित मुद्दे