无法创建AudioData对象?(Could not create AudioData object

2019-09-28 21:55发布

我有我的代码有问题,每个我运行该项目时,这个被抛出。 现在我已经把范围缩小到时候我调用play()方法,但没有当我打电话的PLAYL()方法中的声音确实起到。

package net.chrypthic.Ball;
import sun.audio.*;
import java.io.*;

public class SoundManager {

AudioPlayer ap = AudioPlayer.player;
AudioStream as;
ContinuousAudioDataStream loop = null;
public SoundManager(String music)
{
    try
    {
        InputStream input = new FileInputStream("./"+music);
        as = new AudioStream(input);
        AudioData ad = as.getData();
        loop = new ContinuousAudioDataStream(ad);
    }catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
}
public void play()
{
    ap.start(as);
}
public void stop()
{
    ap.start(as);
}
public void playL()
{
    ap.start(loop);
}
public void stopL()
{
    ap.start(loop);
}
}

为什么? 我通过声音/ gsong1b.wav它具有大小6.2MB的,为2分钟之久,并且具有的16000,比特率。 我听说声音必须小于4MB大,但是它扮演,而当我环....任何帮助,将不胜感激仅错误。

Answer 1:

这些类使用(AudioPlayer,语音串流),即使它们是从官方的Java JDK,其实都是保留类,这意味着甲骨文公司(和Sun之前)保留更改它们,恕不另行通知。 你应该使用官方的声音,而不是API:

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

//...

public static void main(String[] args) throws Throwable {
        Clip clip = AudioSystem.getClip();
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(SoundManager.class.getResourceAsStream("C://temp/my.mp3"));
        clip.open(inputStream);
        clip.start(); 
    }


Answer 2:

有HeadspaceMixer,而不是一试。 javax.sound不是一个完整的实现。



Answer 3:

使用您的声音按钮的IDE Goto作用进行metthod。 对于.wav文件连续播放。 我使用下面的代码,它使用线程工作正常。 确保导入thev以下。 进口sun.audio。 ; 和进口java.io. ;

        Thread sound;
        sound = new Thread(){

           public void run(){

             AudioPlayer MGP=AudioPlayer.player;
             AudioStream BGM;
             AudioData MD;
             ContinuousAudioDataStream loop=null;
  for(;;){

        try{ 
         BGM=new AudioStream(new FileInputStream("C:\\Users\\HAMMED\\01FATIHA         (New).wav"));//enter the sound directory and name here
         AudioPlayer.player.start(BGM);

         //MD=BGM.getData();//not necessary
         //loop=new ContinuousAudioDataStream(MD);//not necessarry

        sleep(48000);// enter the elapse time of ur sond to avoid noise
    }catch(Exception e){

       JOptionPane.showMessageDialog(null, e);
    }


    MGP.start(loop);// It does nothing.I was trying to use this but no success.
        }
     }
  };
    sound.start();        


文章来源: Could not create AudioData object?
标签: java audio wav