Lecture vidéo : comment intégrer jmf dans son projet ??

Résolu
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 9 mars 2006 à 22:14
agussi Messages postés 9 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 22 avril 2008 - 11 mai 2008 à 22:51
Bonjour à tous !

Depuis quelques temps, j'essaie de trouver un moyen simple de lire une vidéo en java. Après quelques recherches, j'ai trouvé plusieurs exemples utilisant Java Media Framework (comme par exemple : http://www.javafr.com/codes/MEDIAPLAYER-OUVRE-LIT-FICHIER-VIDEO-UTILISE-API-JMF_18140.aspx ) qui fonctionnent très bien.

Mais où est le problème alors ? En fait, j'ai pu les faire fonctionner car j'avais installé le jmf pour windows dispo sur le site de sun.

Ma question est donc : Est-il possible avec Eclipse (et si oui, comment?) d'intégrer le jmf dans son projet, sans avoir à l'installer ?? (mon but étant de pouvoir faire fonctionner le lecteur vidéo sur n'importe quelle machine, sans avoir à installer jmf au préalable...)

J'ai déjà essayé de le faire en ajoutant à mon projet les fichiers jmf.jar, customizer.jar, mediaplayer.jar et multiplayer.jar, mais j'ai systématiquement l'erreur suivante à l'exécution (je ne pense pas que ce soit un problème de format, car comme je l'ai dit avant, ça marchait en installant jmf pour windows) :
"Unable to handle format: MPEG, 352x240, FrameRate=29.9, Length=126720"

Merci par avance ! :-) /codes/MEDIAPLAYER-OUVRE-LIT-FICHIER-VIDEO-UTILISE-API-JMF_18140.aspx
A voir également:

13 réponses

frank_sauvage Messages postés 56 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 9 avril 2006
19 mars 2006 à 23:23
rebonjour :)



sans vouloir etre tatillon swing et un explorateur n'est pas imcompatible avec les applets :)



sinon, pour tout dire la JMF est a sa version 2.1.1e qui est la
derniere qu'ils sortiront puisqu'ils ont arreté son developpement. il
reste malheureusement pas mal de bugs et de fonctions promises non
correctement implementées.



je travaille sur le sujet depuis environ un an (visio-conf) mais
je suis loin d'avoir reussi a percer tous les mysteres je crois malgré
de nombreuses heures dans le source de la jmf :'(



pour repondre a ta question concernant la version full-java, oui elle
existe, mais tres peu utilisable dans les faits. dans ton cas, je pense
que ce qui cloche avec le H263, c'est soit le support full-java (la
version pure java m'etonne mais je peux me tromper) soit le
demultiplexer RTP qui dans mes souvenirs n'est qu'en methodes natives.



pour le leightweight la petite astuce :

Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, new Boolean(true));



pour les variables d'environnement pas de la jmf mais tant qu'on y est :

System.getEnv() pour toutes les variables et System.getEnv(String variable) pour une variable precise.

pour les fixer je pense que ca doit se faire avec System.setPropertie..mais faut trouver laquelle..



sinon je reviens a JNLP qui peut t'aider je pense pour l'installation des methodes natives et jar.

ca marche bien quand tu deploies ton appli, tu peux deploier la jmf avec sans avoir a l'installer.

et tu n'es pas obligé d'en faire une appli web, tu peux toujours
pointer sur une URI d'installation locale (ex: chemin relatif sur un CD)



voili..en esperant que ca t'aide.

FSA;



une petite validation de reponse fait toujours plaisir, ca motive a repondre
3
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
10 mars 2006 à 12:49
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
10 mars 2006 à 19:31
Au temps pour moi, j'ai oublié de le mentionner : j'ai egalement essayé en l'incluant à mon projet, mais sans succès ...
0
frank_sauvage Messages postés 56 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 9 avril 2006
15 mars 2006 à 12:39
Bonjour



la jmf fait une utilisation intensive de methodes JNI pour la compression/decompression.

il te faut donc penser a mettre ces dll (ou .so sous linux) dans le path de ton systeme d'exploitation



pour le deploiement de ton application, il te faudra donc y penser. si
tu utilises un JNLP, toutes les fonctions y sont moyennant
configuration (detection du SE, chargement de la bonne bibliotheque
systeme).



pour la liste des jar que tu fourni, tu peux deja enlever le
customizer.jar, c'est une appli de la jmf qui te permet de generer un
jmf.jar plus leger en n'incorporant que les classes dont tu as
besoin..(tu pourrais d'ailleurs t'en servir.



pour le sound.jar, je dirais à eviter si possible, ou du moins faire
tres attention, car certaines classes rentrent desormais en concurrence
directes avec celles du Javasound de la VM.





une petite astuce : pour tes player video, passes les en composant leger (voir player et constructeur)

sinon tu auras des bugs d'affichage avec le chevauchement et deplacement de fenetres sous windows.



Cdlt;

FSA;
0

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

Posez votre question
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
19 mars 2006 à 21:25
Whaoh !! merci pour ces précieuses infos !!!

Pour info, mon appli est à base de swing (il ne s'agit donc pas de faire une quelconque lecture dans un navigateur internet). J'ai cependant quelques questions (de débutant ... ) :

- De ce que j'ai vu sur le site de Sun, il semblerait qu'on puisse lire une vidéo sans avoir à mettre à jour une quelconque variable d'environnement (grâce à leur jmf-2_1_1e-alljava.zip), moyennant certaines contraintes de format vidéo. Cette option a l'air intéressante puisqu'elle permettrait une portabilité windows - linux (principale contrainte de mon appli). J'ai cependant essayé avec un vidéo au format H.263 (qui s'ouvrait correctement avec Quicktime), mais avec mon player, elle s'ouvrait mais l'image restait figée ... saurais-tu d'où ça peut venir ?

- comment passer mon player en composant léger ?

- S'il est malgré tout nécessaire de passer par des variables d'environnement, comment les créer, et comment vérifier qu'elles existent (sous windows et linux) ?? Cette question est importante, car je ne sais pas à l'avance si la machine a ou non jmf d'installé ...

Désolé pour le dérangement, et encore merci pour ton aide, car j'en ai bien besoin ...
0
jguiraud2002 Messages postés 4 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 24 mars 2006
21 mars 2006 à 16:15
Bonjour,

Désolé mais apparement pas de réponse de validation !!
Mais moi j'ai encore une petite question. Désolé encore de te déranger.
Concrètement moi j'essaye également d utiliser JMF. Mon problème est que je dois l'installer sur toutes les machines clients ( ca c'est un gros problème). Tu sembles connaitre une possibilité pour éviter de le faire mais je n'ai pas très bien compris comment...
Pourrais tu expliquer pas à pas la façon de procéder ???

Merci beaucoup par avance
0
jguiraud2002 Messages postés 4 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 24 mars 2006
21 mars 2006 à 16:16
PS: désolé pour le smiley je me suis trompée !!!
0
jguiraud2002 Messages postés 4 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 24 mars 2006
21 mars 2006 à 16:16
PS: désolé pour le smiley je me suis trompée !!!
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
21 mars 2006 à 21:05
Bonsoir à tous ! Désolé pour mes temps de réponse un peu long ...

Encore 1000 mercis pour ces précisions, et je constate que j'ai encore bien des progrès à faire ... . Je pense en effet que je vais abandonner la version "alljava", et que je vais faire au cas par cas (version windows, et version linux)

Pour information, j'ai pour ma part trouvé une solution plutôt simple et efficace, surtout quand on veut que ça marche sur plusieurs bécanes :
- récupérer un petit source du genre http://www.javafr.com/codes/MEDIAPLAYER-OUVRE-LIT-FICHIER-VIDEO-UTILISE-API-JMF_18140.aspx
- récupérer sur le site de sun ( http://java.sun.com/products/java-media/jmf/2.1.1/download.html ) la version de jmf pour l'os voulu (pour windows dans notre exemple)
Après ça relève un peu du bricolage, mais bon ça marche :
- On installe jmf une fois. On peut donc récupérer d'une part les packages 'jmf.jar', 'mediaplayer.jar', et 'multiplayer.jar', que l'on va inclure dans le classpath du projet, et d'autre part la liste de dll présents dans un des sous-répertoires du répertoire d'installation de jmf.
- par la suite, il suffira simplement de copier ces dll dans '%windir%\system32' avant de lancer l'appli java pour la 1ere fois sur la bécane voulue (opération qui peut donc se faire automatiquement, sans passer par l'installeur.)

Comme on peut le voir, cette ébauche de solution a une limite : elle ne fonctionne que sous windows. La question (peut être un peu naïve?) serait donc : y a-t-il sous linux un répertoire système équivalent où on puisse effectuer la même manip (notemment copier les .so, équivalents si j'ai bien compris des .dll), de sorte que le player vidéo java puisse fonctionner directement après ?
Si ce n'est pas le cas, il reste toujours possible d'effectuer la même manip, mais en créant en plus soi même les variables d'environnement crées par l'installeur de jmf (utiliser pour cela, comme suggéré par frank, System.setProperty , et aussi System.getEnv pour vérifier qu'elles existent)

Il y a certainement une meilleure solution (notemment avec JNLP, mais j'avoue ne pas bien comprendre comment ça marche...), mais pour ma part ça me conviendra si je peux faire pareil sous linux.

Voilo ! Encore merci pour tout !!!
0
jguiraud2002 Messages postés 4 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 24 mars 2006
24 mars 2006 à 16:52
Coucou,

Je me doutais bien que lors de l'installation de JMF certaines dll se copiaient.
J'aimerai cependant savoir lesquelles exactement tu copie pour les faire fonctionner.
En effet, mon appli ne doit tourner que sur windows !!

Merci bp d'avance
July
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
25 mars 2006 à 18:44
Hello !

Je ne sais malheureusement pas si certaines dll n'ont pas besoin d'être copiées. Je sais simplement que si tu les copies toutes, ça marche !
0
frank_sauvage Messages postés 56 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 9 avril 2006
25 mars 2006 à 19:18
oups..désolé pour le temps de reponse..mais..faut bien dire..qu'un elderscroll ca sort tous les 4 ans ^^.





pour revenir a JNLP, en fait c'est extrement simple :

le petit tuto te montre comment ca marche (10mn) : http://java.sun.com/developer/technicalArticles/Programming/jnlp/



en fait, ce n'est qu'un petit fichier xml, mais qui est associé a la
machine virtuelle (ouverture auto sous win). dans le fichier xml, tu
dis juste la liste des jar, des dlls, leur position, si l'application
peut marcher off-line (ca evite apres qu'il veuille pas demarrer si il
ne peut pas se co au serveur de maj).

et bien sur la classe principale de l'appli.

apres, si tu modifie ton code, tu n'as qu'a remplacer sur le serveur de
maj, et chaque machine telechargera la derniere version a la prochaine
execution....





sinon, pour les dll, oui tu peux toutes les mettre..ca ne peut pas
faire de mal. apres, si tu as besoin de gagner de la place, tu n'auras
qu'a demander je te dirais quelle dll tu utilises en fonction de ce que
tu fais :)..



++

FSA;
0
agussi Messages postés 9 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 22 avril 2008
11 mai 2008 à 22:51
bonjour a tous

je suis aussi sr un projet d'enregistrement de video avec jmf
et j'ai besoin que cela fonctionne aussi sous linux

sous windows j'utilise la version optimisée pour windows et sous linux, j'ai installé la version pour linux
mais alors que mon code fonctionne sous windows, j'ai une NoDataSourceException sous linux

Auriez vous plus d'info sur la facon de bien installer JMF sous linux notamment les .so etc ?

merci d'avance
agussi
0
Rejoignez-nous