我正在尝试为java程序创建背景音乐的方法,但是当我点击播放按钮时它显示了IO excedption错误。
package javaentertainment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.IOException;
import javax.swing.*;
import sun.audio.AudioData;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Music
{
public static void main(String args[])
{
JFrame frame=new JFrame();
frame.setSize(100,100);
JButton button=new JButton("P L A Y");
frame.add(button);
button.addActionListener(new AL());
frame.show();
}
public static class AL implements ActionListener
{
public void actionPerformed(ActionEvent e) {
music();
}
}
public static void music()
{
AudioPlayer MGP=AudioPlayer.player;
AudioStream BGM;
AudioData MD;
ContinousAudioDataStream loop=null;
try
{
BGM = new AudioStream(new FileInputStream("Vision.wmv"));
MD=BGM.getData();
loop=new ContinousAudioDataStream(MD);
}
catch (IOException ex)
{
System.out.println(ex);
}
MGP.start(loop); // word loop was underlined by netbeans
}
}
当我运行程序并单击播放时,它会显示以下错误, java.io.IOException:无法从输入流
创建音频流答案 0 :(得分:2)
您应该使用JMF(Java Media Framework)。为了您的兴趣:可以找到已接受格式的列表here。
简而言之,它支持AIFF,AVI,GSM,MVR,MID,MPG,MP2,MOV,AU和WAV文件。
但是有一个工作区如here所述:
另一方面,如果添加一个 JMFRegistry中的mime-setting要映射 Windows Media内容(例如.asf 和.wmv)到内容类型 “video / mpeg”,JMF实际上可以发挥 Windows Media或任何其他DirectShow 文件(只有文件 - http不会工作)。
答案 1 :(得分:0)
如果Java可以处理Windows Media格式样本,我会感到惊讶 - 尝试将.wmv转换为.wav文件并查看它是否有效。
答案 2 :(得分:0)
刚刚得到这个。
java.io.IOException: could not create AudioData object
从源[1]出现,这意味着“您的音频文件大小> 1 MB”并且由于某种原因它不喜欢它。也许是一个错误[?],他们不适应这个。
如果您希望循环适用于大型文件,则可以使用JMF代替建议使用JMF。
[1] http://www.docjar.com/docs/api/sun/audio/AudioStream.html#getData