在java程序中使用音乐

时间:2010-07-18 08:05:36

标签: java audio wmv

我正在尝试为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:无法从输入流

创建音频流

3 个答案:

答案 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