2010-07-18 13 views
0

J'essayais la méthode de création d'une musique de fond pour un programme Java, mais elle affichait une erreur d'E/S lorsque je cliquais sur le bouton de lecture.Utilisation de la musique dans un programme 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 
    } 
} 

Quand je lance le programme et clique sur le jeu, il affiche l'erreur suivante, java.io.IOException: Impossible de créer le flux audio de flux d'entrée

+1

S'il vous plaît indentez votre code en 4 espaces, pour rendre lisibles les importations. – Daniel

Répondre

2

Vous devez utiliser JMF (Java Media Framework). Pour votre intérêt: La liste des formats acceptés peut être trouvée here. En bref, il prend en charge les fichiers AIFF, AVI, GSM, MVR, MID, MPG, MP2, MOV, AU et WAV.

Mais il y a un workarond comme indiqué here:

Sur une note de côté, si vous ajoutez un paramètre mime- en JMFRegistry à la carte contenu Windows Media (comme .asf et .wmv) au type de contenu "video/mpeg", JMF peut réellement jouer Windows Media ou tout autre fichier DirectShow (et seulement le fichier - http ne fonctionnera pas).

0

Je serais surpris si Java peut remettre de Windows Exemples de format de média - essayez de convertir le fichier .wmv en fichier .wav et voyez si cela fonctionne.

+0

Eh bien maintenant l'erreur précédente est ok mais elle affiche java.io.IOException: impossible de créer un objet AudioData – Yoosuf

0

Je viens d'obtenir ceci, aussi bien.

java.io.IOException: could not create AudioData object 

Apparait de la source [1] que cela signifie que « votre fichier audio est de taille> 1 Mo » et il n'aime pas que, pour une raison quelconque. Peut-être un bug [?] Qu'ils n'acceptent pas pour cela.

Une solution de rechange pourrait être d'utiliser JMF à la place, comme suggéré, si vous voulez que la boucle fonctionne pour les gros fichiers de toute façon.

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