Problème avec les exceptions levées par le lecteur de JMF

o00gourou00o Messages postés 7 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 15 décembre 2010 - 15 déc. 2010 à 15:55
 Utilisateur anonyme - 15 déc. 2010 à 16:25
Bien le bonjour !!

Je suis en train de développer une appli qui doit pouvoir lire des vidéos.
J'ai bien installé JMF, ainsi que jffmpeg. Ça lit pas mal de formats correctement, c'est pas mal, par contre j'ai un souci avec les formats qui ne sont pas pris en charge.
J'aimerais qu'une petite boîte de dialogue apparaisse si le lecteur n'a pas le codec adéquat afin d'en informer l'utilisateur. Le problème, c'est que le message apparaît trois fois, et que je ne vois vraiment pas comment faire en sorte qu'une seule boîte de dialogue apparaisse.

Voilà le code qui initialise et lance le lecteur :

    private void initComponents() {
        this.setConfig(); // Récupère la variable filePath, le chemin d'accès du fichier vidéo à lire
        try {
            this.fileURL = new URL("file:///" + this.filePath);
        } catch (MalformedURLException ex) {
            Logger.getLogger(VideoPanel.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
            this.mediaPlayer = Manager.createRealizedPlayer(this.fileURL); // Cette ligne lève une NoPlayerException
            Component video = this.mediaPlayer.getVisualComponent();
            Component controls = this.mediaPlayer.getControlPanelComponent();
            if (video != null) {
                add(video, BorderLayout.CENTER);
            }
            if (controls != null) {
                add(controls, BorderLayout.SOUTH);
            }
        } catch (IOException ex) {
            Logger.getLogger(VideoPanel.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NoPlayerException ex) { // Et ce message apparaît trois fois
            JOptionPane.showMessageDialog(null, "Le format de la vidéo n'est pas pris en charge." + System.getProperty("line.separator") + "(" + ex + ")", "Erreur", JOptionPane.ERROR_MESSAGE);
        } catch (CannotRealizeException ex) {
            Logger.getLogger(VideoPanel.class.getName()).log(Level.SEVERE, null, ex);
        }
mediaPlayer.start();
    }


Je remarque également que quand je donne un faux chemin pour le fichier, ce n'est pas la IOException qui est levée mais toujours la NoPlayerException...

Donc voilà, je trouve tout ça un peu bizarre et je me demandais si quelqu'un ici pouvait me filer un coup de main ^^

1 réponse

Utilisateur anonyme
15 déc. 2010 à 16:25
Bonjour

Tu peux concaténer les différents messages et n'afficher ta boite de dialogue qu'une seule fois.












TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
Rejoignez-nous