各位, 我希望自己建立一个数组, 存放自己的PCM声音样本, 然后播放, 我不希望通过转换成任何wav, au等文件, 我的代码如下, 但失败了:
import sun.audio.*;byte Buffer[]=new byte[1024];
ByteArrayInputStream in=new ByteArrayInputStream(Buffer);
AudioStream as=null;
try{
as=new AudioStream(in);
}catch(Exception e)
{
System.out.println(e.toString());
}
AudioPlayer.player.start(as);出错信息为:
java.io.IOException: could not create audio stream from input stream
同志们有办法吗? java就不能直接将PCM样本送到声音设备吗?

解决方案 »

  1.   

    为什么不用JMF呢,sun包中的不是标准的API,将来有可能会被移除,或者接口被修改的。
      

  2.   

    楼上的朋友, 我的PCM数据就放在Buffer[1024]里面, 怎么用jmf来倒到声音设备上呢? 给个hello world 例子好吗? 谢谢啦
      

  3.   

    能先解释一下PCM数据如何放到Buffer中的吗?也就是说你的PCM数据是怎么来的?
      

  4.   

    请参考一下下面文章:
    http://www.blogjava.net/shinzey/articles/163573.html
      

  5.   

    这个PCM声音, 就是声卡能采集到的最原始声音, 也就是用16位表示一个声音样本, 你不必再绕到这个声音是从什么文件里来的, 或者从哪收集来的, 就当我自己凭空造出来的, 没有来源, 问题是这些样本怎么播放. 
      

  6.   

    播放midi音乐格式
    url0= getClass().getClassLoader().getResource("1.mid");
    url1= getClass().getClassLoader().getResource("2.mid");
    url2= getClass().getClassLoader().getResource("3.mid");
    url3 = getClass().getClassLoader().getResource("4.wav");
    private Sequencer sequencer;
    private Sequence sequence;
    try{
            System.setProperty ("javax.sound.midi.Sequencer","com.sun.media.sound.RealTimeSequencerProvider");
            sequencer= MidiSystem.getSequencer(); 
    sequencer.open(); 
            sequence= MidiSystem.getSequence(url0); 
            sequencer.setSequence(sequence);
            sequencer.start();  //播放
     }catch(Exception e){
       e.printStackTrace();
     }
    播放wav:
     private AudioClip clip;
     clip = Applet.newAudioClip(url3);
     clip.play();
    最好是下载JMF,java媒体框架