elawem
Messages postés3Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention15 avril 2005
-
13 avril 2005 à 18:54
mina1206
Messages postés4Date d'inscriptionvendredi 21 août 2009StatutMembreDernière intervention14 mai 2010
-
18 nov. 2009 à 15:48
Bonjour à tous, je dois afficher les flux vidéos de plusieurs webcams pour un jeu de belote en réseau.
Grâce aux différents tutoriaux et exemples du site j'ai réussi à
acquérir le flux et l'afficher dans un JPanel, cependant comme cela est
destiné à un jeu de belote, je dois obtenir ce flux dans un format bien
précis: du 160*120 en RGB.
Voici le code que j'ai mis en oeuvre pour récupérer les périphériques video de la machine:
videoFormat = new VideoFormat(VideoFormat.RGB, new Dimension(160, 120), 230400, Format.byteArray, 20f);
deviceList = CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.RGB));
webcam = (CaptureDeviceInfo)deviceList.get(i);
Je pensais que l'object VideoFormat ainsi crée allait me donner un flux
en 160*120. En fait il ne permet que de selectionner les peripheriques
supportant ce mode.
Je ne trouve pas comment modifier la taille de ce flux apres acquisition du CaptureDeviceInfo.
J'ai bien trouvé qu'apres avoir crée un Player on pouvait accéder à une
interface de tyep Control pour modifier le flux mais je voudrai que ca
soit automatique.
Pour résumer, je cherche un moyen de spécifier la taille du rendu vidéo avant de faire un:
frank_sauvage
Messages postés56Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention 9 avril 2006 14 avril 2005 à 22:12
bonjour,
effectivement, le fait de specifier un format lors de la recuperation du CDI, ne permet pas d'obtenir un flux dans ce meme format.
pour cela, il vous faudra utiliser un Processor. et specifier ce format en tant que format de sortie grace à, si mes souvenirs sont bons, la methode setOutputFormat.
si je puis me permettre,
vous semblez vous attaquer à la JMF depuis peu, et ce que vous cherchez à faire n'est pas des plus simples. quel est votre delai de livraison ?
sinon pour vous aiguiller un peu dans vos recherches, vous devrez utiliser quelque chose du type :
CDI -> DataSource -> processor -> CloneableDataSource-> RTPManager |_______| RTPManager -> Player.
(la cloneable datasource vous servant a utiliser une seconde fois le flux pour l'affichage local)
pour votre transmission reseau il vous sera neccessaire d'utiliser le protocole RTP grace à :
-soit l'implémentation par defaut.
- soit definir votre propre support à RTP grace à l'interface RTPConnector.
si effectivement, il vous sera probablement apparent qu'il est plus rapide d'utiliser l'implementation par defaut, sachez que cette derniere suit à la lettre le RFC 1889/1890 ( mis à jour vers le 3550 ?? pas sur, mais non essentiel), et que donc vous serez pas à meme de passer les NAT et les firewalls dans la diffusion de vos flux.
c'est donc la que vous devrez trouver un autre moyen de passer, soit en implementant vous meme STUN (toujours pas porté sur JAVA), soit en bidouillant votre propre protocole.
donc pour résumer :
- la premiére etape est de vous familiariser avec les objets de la JMF sus-cités.
- la seconde étant un travail sur la partie reseau pour la transmission des flux.
il s'agit ici de visio-conférence temps réelle, c'est une partie interressante mais ardue de la JMF.
cependant, si votre but n'est que la possibilité pour les differents participants de pouvoir se voir, il existe neanmoins une autre possibilité : l'utilisation de capture d'image et leur publication via HTML. si l'idée peut paraitre saugrenue, elle est malgré tout rapidement realisable.
pour cela utilisez le GrabFrameControl..cette interface ne posséde qu'une seule methode grabFrame qui renvoi un buffer. il vous suffit ensuite d'utiliser la classe BufferToImage et de la serializer vers le serveur ou autre.
elawem
Messages postés3Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention15 avril 2005 15 avril 2005 à 10:44
Le jeu constitue mon projet de langage Java en école d'ingénieur, il ne
sera testé que sur le réseau local donc les flux n'ont pas besoin de
passer a travers des firewalls. C'est un peu triste de passer par la
facilité, mais comme il y a 5 autres projets à rendre dans un mois il
va falloir aller vite avec le streaming.
Merci pour votre aide, elle est précieuse et va nous permettre d'avancer après 2 jours de galere :)
frank_sauvage
Messages postés56Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention 9 avril 2006 15 avril 2005 à 17:09
oh un collégue étudiant :)
je suis moi même en licence d'informatique à paris 5..donc je suis plus où moins dans les mêmes conditions actuellement ;)
sinon pour revenir à votre probléme, si vous n'avez qu'à le faire marcher en reseau local..
sachez que la version 2.1.1 de la JMF implemente desormais le protocole
RTSP (streaming multicast) ce qui sera probablement alors encore plus
simple pour vous.
P.S. la documentation de la JMF en ligne n'est pas à jour si vous y acceder via le site de sun..
le mieux est donc de telecharger les sources et de regenerer les javadocs localement.
madjonk
Messages postés1Date d'inscriptionjeudi 28 avril 2005StatutMembreDernière intervention10 mai 2005 10 mai 2005 à 14:56
Salut,
Je travaille aussi dans mon projet avec l'API JMF avec lequel je débute.
J'aurais besoin de quelques éclaircissements... voila mon probleme:
Je récupère des datas frame d'une video, grace à l'API JMF, que j'envoie dans le réseau.
A l'autre bout du réseau, je les récupère et je voudrais les remettre dans le format de départ.
Mon problème réside dans le fait que l'API JMF ne me permet pas de construire un fichier de sortie .avi me contenant tous les frames de la vidéo. C'est à dire un fichier .avi contenant les bon headers, etc..(Les frames arrivent dans l'ordre à l'autre bout du réseau.) Y t-il moyen avec l'api JMF de générer le fichier .avi (avec les bon headers et le bon format)
frank_sauvage
Messages postés56Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention 9 avril 2006 11 mai 2005 à 15:29
Bonjour,
je ne suis pas sur de comprendre ce que vous voulez faire exactement..
Comment faites vous pour recuperer les dataFrame ? a partir de quel
classe et quel type de flux en entrée.. pour l'envoi reseau.comment
faites vous ? utilisez vous le RTPManager ?
par contre, en ce qui concerne l'enregistrement dans un fichier, et
plus particulierement un AVI, la jmf le permet sans trop de
difficultées normalement..
en fait pour ca, vous devez utiliser un processeur et un datasink..
pour specifier le format des pistes utilisez la methode setFormat()
pour pouvoir specifier le format en sortie du processeur, utilisez la methode : setContentDescriptor()
par exemple : (tres simplifié au niveau de la gestion des tracks)
salvucho
Messages postés2Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention 8 août 2005 8 août 2005 à 07:47
Bonjour à tous, je suis un pt nouveau en programmation, et je dois afficher les flux vidéos de plusieurs webcams connectées sur des USB d'un seul PC.
J'arrive à voir le flux d'une webcam, mais quand je connecte la 2ème il bug !
Quelqu'un pourrait m'aider ? ?
Voici un bout de code
hakim8086
Messages postés1Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention19 juillet 2007 19 juil. 2007 à 12:15
Bonjour a tous:
Je travaille aussi dans mon projet avec l'API JM
, je veus afficher un flux video sur mon ardinateur et en meme je l'envoyer ds le reseau .
le probleme est : si j'onvoyer le flux
sur le reseau
je peut pas l'afficher sur mon ordinateur et le contraire
et lors de l'execution il affiche un erreur d'exception "java.io.IOException: Capture device in use" c_ad le data source de webcam est utilise par un autre player ou autre processor ??????
alors je veut recupere le flux video et je l'affiche dans sur mon ordinateur dans un panel et en meme temps j'envoyer sur le reseau .
Est ce que je peut dupliquer l'affichage d'un seul player dans 2 panel ou + ?????
Est ce je peut creer + d'un player pour un seul data source ?????
Merci de votre aide .
ghilashamza
Messages postés3Date d'inscriptionlundi 5 novembre 2007StatutMembreDernière intervention11 mai 2008 11 mai 2008 à 15:04
moi aussi j'ai le même probleme mais je n'arive pas encor à le faire, si vous avez la solution,j'attend votre aide.
e-mail: [mailto:zivou123@yahoo.fr zivou123@yahoo.fr]
mina1206
Messages postés4Date d'inscriptionvendredi 21 août 2009StatutMembreDernière intervention14 mai 2010 18 nov. 2009 à 15:48
Bonjour tous le monde, alors je dois capturer les images d'une webcam pour effectuer un traitement dessus mais je débute avec le concept du flux vidéo, je souhaite obtenir une petite orientation pour voir comment commencer