2010-07-18 6 views
0

Я пытался использовать метод создания фоновой музыки для программы java, но при нажатии кнопки воспроизведения отображалась ошибка ввода-вывода IO.Использование музыки в программе java

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: не удалось создать аудио поток из входного потока

+1

Пожалуйста отступы ваш код 4 пробела, чтобы сделать импорт читаемым. – Daniel

ответ

2

Вы должны использовать JMF (Java Media Framework). Для вашего интереса: список принятых форматов можно найти here.

Короче говоря, он поддерживает файлы AIFF, AVI, GSM, MVR, MID, MPG, MP2, MOV, AU и WAV.

Но есть workarond, как указано here:

На стороне записки, если добавить мим-установку в JMFRegistry для отображения содержимого Windows Media (например, .asf и .wmv) к типу контента «video/mpeg», JMF может фактически сыграть Windows Media или любой другой файл DirectShow (и только файл - http wont work).

0

Я был бы удивлен, если Java может передать ОС Windows Образцы формата мультимедиа - попробуйте преобразовать .wmv в .wav-файл и посмотреть, будет ли он работать.

+0

Ну теперь предыдущая ошибка в порядке, но она отображает java.io.IOException: не удалось создать объект AudioData – Yoosuf

0

Только что получил это, а также.

java.io.IOException: could not create AudioData object 

Появляется из источника [1], что это означает, что «ваш аудиофайл размером> 1 MB», и это не нравится, что по какой-либо причине. Может быть, ошибка [?], Что они не подходят для этого.

Одним из способов, возможно, является использование JMF, как было предложено, если вы хотите, чтобы цикл работал для больших файлов в любом случае.

[1] http://www.docjar.com/docs/api/sun/audio/AudioStream.html#getData

 Смежные вопросы

  • Нет связанных вопросов^_^