Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 2014
-
11 nov. 2009 à 00:38
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDerniè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) :
/**
* 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 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
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 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
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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