我的代码出现问题,每次运行项目时都会抛出此问题。现在我把它缩小到当我调用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分钟,比特率为16000Hz。 我听说声音必须小于4mb大但它会播放,而且当我循环播放时只会出错... 非常感谢任何帮助。
答案 0 :(得分:2)
您使用的那些类(AudioPlayer,AudioStream),即使它们来自官方Java JDK,实际上也是保留类,这意味着Oracle(以及之前的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();
}
答案 1 :(得分:0)
尝试使用HeadspaceMixer。 javax.sound不是一个完整的实现。
答案 2 :(得分:0)
使用IDE转到Action执行声音按钮的方法。 用于连续播放.wav文件。我使用以下代码,它使用线程工作正常。请确保您导入以下内容。 import 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();