我有我的代码有问题,每个我运行该项目时,这个被抛出。 现在我已经把范围缩小到时候我调用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大,但是它扮演,而当我环....任何帮助,将不胜感激仅错误。
这些类使用(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();
}
有HeadspaceMixer,而不是一试。 javax.sound不是一个完整的实现。
使用您的声音按钮的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();