2012-01-19 230 views
0

我有五个wav文件。我想使用sourceDataLine从单个Java程序中串行播放它们。但是我的程序没有保持正确的顺序。任何人都可以提供我的代码段?在java中播放声音

+7

号向我们展示你的** **代码。 –

+0

为了更快得到更好的帮助,请发布[SSCCE](http://sscce.org/)。虽然使它为2个声音样本,而不是5. –

回答

3

您是否检查Documentation

尝试这个例子从here

import java.io.*; 
import javax.sound.sampled.*; 
/** 
* Use SourceDataLine to read line-by-line from the external sound file.  
*/ 
public class SoundLineTest { 
    public static void main(String[] args) { 
     SourceDataLine soundLine = null; 
     int BUFFER_SIZE = 64*1024; // 64 KB 

     // Set up an audio input stream piped from the sound file. 
     try { 
     File soundFile = new File("gameover.wav"); 
     AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile); 
     AudioFormat audioFormat = audioInputStream.getFormat(); 
     DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat); 
     soundLine = (SourceDataLine) AudioSystem.getLine(info); 
     soundLine.open(audioFormat); 
     soundLine.start(); 
     int nBytesRead = 0; 
     byte[] sampledData = new byte[BUFFER_SIZE]; 
     while (nBytesRead != -1) { 
      nBytesRead = audioInputStream.read(sampledData, 0, sampledData.length); 
      if (nBytesRead >= 0) { 
       // Writes audio data to the mixer via this source data line. 
       soundLine.write(sampledData, 0, nBytesRead); 
      } 
     } 
     } catch (UnsupportedAudioFileException ex) { 
     ex.printStackTrace(); 
     } catch (IOException ex) { 
     ex.printStackTrace(); 
     } catch (LineUnavailableException ex) { 
     ex.printStackTrace(); 
     } finally { 
     soundLine.drain(); 
     soundLine.close(); 
     } 
    } 
} 
+1

这是最好的评论,不是? :-) – Scorpion

+0

@Scorpio:我还没有完成。 – CloudyMarble

+0

+1优秀的编辑。 –