Erreur lors de la lecture d'un média avec MN

Résolu
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 - 11 nov. 2009 à 00:38
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 12 nov. 2009 à 22:40
Bonjour à tous,
Je tente simplement de lire un média avec la librairie JMF, et j'ai systématiquement l'erreur suivante :
"javax.media.NoPlayerException: Cannot find a Player for file:\C etc."

Ca me le fait avec plusieurs types de fichiers vidéos (avi, wmv), donc je ne pense pas que ça vienne des codecs (mais je me trompe peut être)
Si j'essaie sur mon ordi pro, ça marche.
Ci dessous le code (il n'est pas de moi, je l'ai récupéré sur le net. J'ai gardé le nom original, si quelqu'un veut le voir directement) :

import java.awt.*;
import java.awt.event.*;
import javax.media.*;
import javax.swing.*;

/**
* Creer le 19 nov. 2003
*
* @author ludo
*/
public class LudoMediaPlayer extends JFrame implements ControllerListener //, Runnable
{
private boolean closing = false;
private Player player = null;
private JPanel videoPanel = null;

/**
* contructeur LudoMediaPlayer
* necessite un fichier de film en argument
*
*/
public LudoMediaPlayer( String nomFilm )
{
super();
setLocation( 200, 400 );
setTitle("Ludo player ;o) ");
getContentPane().setLayout( new BorderLayout() );
// met en place la methode de sortie de laplication
addWindowListener( new WindowAdapter()
{ // la c vrai : je ne fai pas dans le detail ;o)
public void windowClosing( WindowEvent we ) { System.exit(0); }
}
);
if ( nomFilm != null)
loadMovie( nomFilm ); // charge le film
}

/**
* methode de chargement du film a partir de son url
* dans le player
*/
private void loadMovie( String movieURL )
{
if ( movieURL.indexOf( ":" ) < 3 ) movieURL = "file:\" + movieURL;

try
{ // creation du player
player = Manager.createPlayer( new MediaLocator( movieURL ) );
player.addControllerListener( this ) ; // puisque quee on l implement
player.realize();
}
catch (Exception e)
{
System.out.println("Error creating player "+e);
return;
}
}

/**
* intercep tout les evenement en provenence du player
* voir dans le package la liste complete des event et leur declencheurs... ;o)
* @see javax.media.ControllerListener#controllerUpdate(ControllerEvent)
*/
public void controllerUpdate( ControllerEvent ce )
{

if ( ce instanceof RealizeCompleteEvent )
{ // demarage de la video
if ( videoPanel == null)
{ //creation du panel de vue
videoPanel = new JPanel();
videoPanel.setLayout( new BorderLayout() );
getContentPane().add( videoPanel, BorderLayout.CENTER );
}
else
videoPanel.removeAll();
// obtention du composent restituan l image en provenence du player
Component vis = player.getVisualComponent();
if ( vis != null )
{ // si valide alors on la met ds notre vue
videoPanel.add( vis, BorderLayout.CENTER );
videoPanel.setVisible(true);
this.pack(); // resize la taille en fct de la taille du film
}
player.start(); // lance la video
}
else if ( ce instanceof EndOfMediaEvent )
{
if (player != null)
{ // rembobine le film
player.setMediaTime(new Time(0));
if (player.getTargetState() < Player.Started)
player.prefetch();
// relance le film
player.start();
}
}
}

public static void main( String[] args )
{ // reclame l URL d un film : AVI , MPG ...
new LudoMediaPlayer( args[ 0 ] ).setVisible( true );
}

}

J'utilise Eclipse pour développer sous java, si ça a une quelconque importance...
Merci beaucoup de votre aide

@+. Hermios

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 nov. 2009 à 22:19
Salut,

J'ai pas trop compris ce que tu n'arrives pas à faire.

Lorsque tu installe Fobs, il me semble qu'il te crée un projet de test (comme celui installé avec JMF) qui te permet justement de savoir si l'installation est correcte ou non.

Il faut (toujours de mémoire : ca va faire 4 ans que j'y ai plus touché !), rajouter une ligne dans un fichier properties (ou un fichier de configuration d'un autre format) pour indiquer à JMF d'utiliser Fobs pour les codec non reconnus. Il faut rajouter dans ton classpath le jar de la librairie Fobs, et il faut rajouter la dll native (sous windows donc) dans le dossier system de windows, ou sinon rajouter dans la variable d'environnement PATH le chemin de cette dll.
______________________________________
DarK Sidious
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
11 nov. 2009 à 08:41
Salut,

Comme je l'ai déjà dit à plusieurs reprises ses derniers jours (c'est marrant le nombre de post sur JMF ces derniers temps !), JMF est très limité en nombre de codec lu (pas de DivX par exemple). Il faut utiliser une extension native pour pouvoir lire la grande majorité des codecs, telle que Fobs4JMF par exemple.
______________________________________
DarK Sidious
0
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
11 nov. 2009 à 10:46
Salut Darksidious,
Ok, Je vais tenter cette lib. J'ai effectivement lu un truc dessus hier soir, mais pour une raison que je ne saurais me rappeler (Alzheimer aidant, snif :') ), j'ai préféré ne pas l'utiliser.
Je regarde ce soir, et valide la réponse le cas échéant.
Par hasard (Je sais, j'abuse, dsl), tu sais pas où je pourrais trouver un exemple d'application?
Merci beaucoup en tout cas

@+. Hermios
0
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
11 nov. 2009 à 17:49
Resalut,
Ben j'ai ajouté la lib Fobs4JMF (donc maintenant je sais pourquoi j'étais réticent, c'était déjà fait en fait!!!), mais ça ne change rien. J'ai lu que Fobs4JMF "s'ajoutait" à jmf, ce qui voudrait donc dire que je n'ai pas besoin de changer mon code, ou alors j'ai mal compris? Dans ce cas, où puis je trouverla doc de Fobs4JMF? (Cherché, mais pas trouvé)
Sinon, si j'ai bien compris, alors je ne suis pas plus avancé. Si quelqu'un a une idée... Merci en tout cas

@+. Hermios
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
11 nov. 2009 à 20:04
Salut,

Oui Fobs s'ajoute à JMF, mais il faut l'avoir paramètrer pour que JMF en tienne compte !

Voici la doc de Fobs :
http://fobs.sourceforge.net/documentation.html
______________________________________
DarK Sidious
0
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
12 nov. 2009 à 22:04
Salut Darksidius,
Bon, j'essaie de suivre, mais y a toujours un truc qui va pas : j'ai installé JMF, mais il refuse de m'ajouter des éléments (j'ai toujours cette maudite "could not add item" qui s'affiche). En cherchant sur le net, tout ce que j'ai trouvé, c'est des soluces pour linux (visiblement, il faut ajouter des variables d'environnement, mais je ne sais pas lire le code linux), ou alors... changer de codecs (ce qui, le cas échéant, ne résoudra pas mon problème).
Encore une petite aide là dessus, ce serait vraiment sympa. Merci beaucoup

@+. Hermios
0
Hermios Messages postés 264 Date d'inscription dimanche 14 avril 2013 Statut Membre Dernière intervention 23 mai 2014 2
12 nov. 2009 à 22:35
Ca marche, même si j'ai toujours pas compris comment!!! Mais le truc, c'est que c'est pas du tout portable ce système, si? En gros, si je crée un jar, et que je le lance ailleurs, il va pas être d'accord j'imagine? Allé, je valide parce que ça marche, mais si tu pouvais juste me dire ce qu'il faudrait que j'installe sur un autre ordi pour que ça fonctionne (je peux transformer mon jar en exe, et créer un install, donc installer des dll et tout le tintoin!)
Merci mille fois en tout cas

@+. Hermios
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 nov. 2009 à 22:40
Salut,

C'est le soucis de devoir passer par des bibliothèques natives : le java est très puissant, mais est limité dès qu'on touche au système... et pour lire des vidéos avec des codecs particulier, il faut malheureusement passer par une bibliothèque native (et donc, on devient dépendant de l'OS utilisé !).

Pour pouvoir déployer une application, il te faut au minimum placer la dll dans un dossier qui est référencer dans la variable PATH de l'OS (le mieux, c'est de la mettre au même niveau que le jar de ton application, et de rajouter ce chemin dans la variable PATH), de copier le fichier de configuration de JMF au même niveau que le jar (voir même si tu le mets dans le jar de ton programme à tester si ca marche), et déployer aussi le jar de JMF et de Fobs. Bien entendu, tu peux faire tout cà à partir d'un installeur, sans devoir convertir le jar sous forme d'un binaire exe !
______________________________________
DarK Sidious
0
Rejoignez-nous