JMF ET RTP

aurao08 Messages postés 2 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 13 juillet 2006 - 13 juil. 2006 à 10:08
hou22 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 4 décembre 2012 - 4 déc. 2012 à 14:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37558-jmf-et-rtp

hou22 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 4 décembre 2012
4 déc. 2012 à 14:46
Je suis entrain de développer une application de chat et chatvideo et j'ai un problème de création le main de tes classes aider moi créer ce main.*Merci bcp
yaqel Messages postés 2 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 29 mai 2012
29 mai 2012 à 17:07
vous allez ouvrir une connexion RTP à l'aide de JMF et voila vous aurez la transmission audio en d'autre terme vous pouvez faire des appels a l'aide de cette application. mais vous aurez un problème de retard lié au codage de l'information.
hardoozzzz Messages postés 2 Date d'inscription lundi 30 janvier 2012 Statut Membre Dernière intervention 28 mai 2012
28 mai 2012 à 04:18
salut a tous , je suis entrain de réaliser une application de communication (envoi fichier ca marche , tchat ca marche ) , il me reste que l'appel , bon j'ai essayer avec ces classes , j'ai un erreur au niveau de detection de cam , bon le video n'est pa necessaire pour moi , donc j'aime bien savoir comment faire just un appel vocal , quelqu'un peut m'aider ? ! merci bien :))))
yaqel Messages postés 2 Date d'inscription mardi 6 mars 2012 Statut Membre Dernière intervention 29 mai 2012
12 mars 2012 à 20:03
moi aussi j'ai trouvé un problème quand j'avais essayé de compiler le programme avec ce que vous nous avez ordonner de mettre dans le main
cordialement
isimsiene Messages postés 3 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 24 janvier 2012
24 janv. 2012 à 14:35
Bonjour,je suis débutante en programmation multimédia avec Java(JMF)
j'ai essai sa comme serveur
new RTPWriter(new VideoCapture(), new SoundCapture());
et sa comme client
new RTPReader(adresseIP);
mais n'a pas marcher :(
comment je pour avoir une application client (web ) à base de ce ci ?
sisisousou Messages postés 43 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 24 janvier 2012
10 févr. 2011 à 00:04
kakaAfrica quand tu a crée le fichier jar a tu exporté avec lui les jar de JMF ?
kakaAfrica Messages postés 1 Date d'inscription dimanche 16 mai 2010 Statut Membre Dernière intervention 4 février 2011
4 févr. 2011 à 15:29
Bonjour,je suis débutant en programmation multimédia avec Java(JMF) et j'ai fait un lecteur multimédia avec JMF. Le problème que j'ai rencontré est que j'ai integré toutes les bibliothèques mais dès que j'installe mon lecteur sur une machine où je n'ai pas encore installé JMF, le lecteur ne joue pas.Quelqu'un pourrait m'aider?
NB : j'ai fait un executable windows avec launch4j et InnoSetup.
med_aboub Messages postés 1 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 3 mars 2010
3 mars 2010 à 16:49
j'ai essayé le laibrairie, je lance le serveur rtp , avec l'adresse 127.0.0.1 et les port par deffaut puis j'ai lancé le client avec l'adresse 127.0.0.1 avec un renversement de port avec le serveur. le client m'affiche alors delais de 30s dépassé.
j'ai essayé de lire le flus RTP du serveur avec le JMF studio , ce dernier detecte un fklux mais de meme il m'affiche une delais d'attente de 60 szconde. une aide sera trés precieuse à l'étape ou je suis merci.
cs_samymand Messages postés 6 Date d'inscription samedi 29 novembre 2008 Statut Membre Dernière intervention 23 juin 2009
23 juin 2009 à 18:06
Je n'arrive pas obtenir ma webcam comme device de capture avec ma classe Serveur
je suis trois fois perturbé

a l'aide
cs_samymand Messages postés 6 Date d'inscription samedi 29 novembre 2008 Statut Membre Dernière intervention 23 juin 2009
23 juin 2009 à 14:00
salut,
merci beaucoup pour votre aide car j'ai un peu avancé
mais j'ai un autre problème du moins deux exceptions:

Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1041)
at java.awt.Container.add(Container.java:365)
at StreamingClient.main(StreamingClient.java:43)
RTP Handler internal error: javax.media.ControllerErrorEvent[source=com.sun.media.content.unknown.Handler@117a8bd,message=Internal module com.sun.media.BasicRendererModule@19dfbff: failed to handle a data format change!]

je suis perdu
O'skour
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
19 juin 2009 à 10:22
Salut,

as-tu installé jmf grâce à l'installeur pour windows, ou par le biais du fichier zip. Dans le dernier cas, il n'y a pas les fichiers jni nécessaire pour communiquer avec windows. Sinon, prie très fort :/

Pour pouvoir envoyer le flux depuis un fichier, je sais que sur le site de Sun, dans la section JMF, il donnait un exemple pour ça (au pire, regarde dans le code source de jmfregistry, qui a cette fonctionnalité)

Au pire des cas, je te suggère de te pencher sur http://jffmpeg.sourceforge.net/ qui est une surcouche à JMF mais est plus performant et multiplateforme. Il pourra certainement répondre à tes besoins.

Bon courage :)
cs_samymand Messages postés 6 Date d'inscription samedi 29 novembre 2008 Statut Membre Dernière intervention 23 juin 2009
19 juin 2009 à 10:10
s'il vous plait............
je suis a genou et je le resterai while(Pas_solution(jmf)){}
voila: je voudrais d'abords pouvoir envoyer un flux provenant d'un fichier(audio ou vidéo)...
merci a vous tous
n'oubliez pas je suis a genou
cs_samymand Messages postés 6 Date d'inscription samedi 29 novembre 2008 Statut Membre Dernière intervention 23 juin 2009
19 juin 2009 à 09:49
bonjour.....
j'ai intalle JmfRegistry, le probleme c'est qu'il me signale une erreur "Capture device query unsuccesful" lorsque je click sur "Detect Capture Devices"
je suis sous windows vista....
merci
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
17 juin 2009 à 16:58
Normalement, quand tu installes JMF sur ton poste, JmfRegistry est installé également (vu sous mon Windows)

Lien de téléchargement de JMF : http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/download.html
cs_samymand Messages postés 6 Date d'inscription samedi 29 novembre 2008 Statut Membre Dernière intervention 23 juin 2009
17 juin 2009 à 16:11
ok! mais ou je trouve JmfRegistry
j'ai telecharge le code source mais j'ai du mal a le faire marcher

merci
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
17 juin 2009 à 09:01
Bonjour,
je te conseille d'installer JmfRegistry qui te permettra de générer les devices JMF selon ton installation, et dans ce cas là; voir s'il te reconnait ta camera.

Voilou
cs_samymand Messages postés 6 Date d'inscription samedi 29 novembre 2008 Statut Membre Dernière intervention 23 juin 2009
17 juin 2009 à 08:52
salut la compagnie.....
je suis debutant en java et je travail actuellement sur un projet:
ton API m'interesse beaucoup sauf qu'a la place d'une webcam je souhaite utiliser une camera connecte a une carte video
voila...que me conseillez vous?
merci
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
28 mai 2009 à 16:27
Il faut effectivement une camera enregistré dans JMFRegistry pour que cela fonctionne.

Bon courage pour la suite
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
28 mai 2009 à 15:56
Ah oui en effet!!
Merci beaucoup!!

A propos de ta classe VideoCapture nous sommes bien d'accord qu'il faut une camera qui soit connecté au PC et que celle-ci soit enregistré dans JMFRegistry?

En tout cas merci beaucoup pour tes réponses!
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
28 mai 2009 à 10:46
Bonjour,
Pour obtenir l'addresse IP : InetAddress.getLocalHost().getHostAddress();

Pour RTCP, je ne saurais te dire, peut-être que RTP l'utilise de manière caché, parce que, en somme, ce qui nous préoccupe, c'est d'envoyer via RTP.

Pour créer un flux (par exemple):
RtpSendMedia r1 = new RtpSendMedia(ip);
r1.addCaptureMedia(new VideoCapture());

Voilou
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
28 mai 2009 à 10:36
Bijour,

Au niveau du fonctionnement de rtp j'aurai une petite question. J'ai eu beau lire des tonnes de docs dessus je ne vois toujours pas le lien entre rtp et rtcp. Ou plutôt non j'ai bien compris que rtcp était juste la pour donner des indications sur le réseau mais faut-il toujours implémenté rtcp dès que l'on implémente rtp?
Dernière petite question comment transformer ceci InetAddress.getLocalHost() en String?? J'aimerais faire ça pour l'envoyer à RtpReader mais je n'y arrive pas non plus...
Merci d'avance!!
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
27 mai 2009 à 09:35
En effet je pourrai extrapoler mais je n'y arrive pas du tout...pour les capture d'écran j'ai déjà réussi a les faire et j'ai également réussi a créer une vidéo a partir des images.
Mon seul problème est l'envoie de ces images a l'aide du protocole RTP sur le serveur red5 que j'ai...
J'avais pensé aux objets distribués a un moment mais ils ne conviennent pas pour l'application que je veux faire.
Tu me parle de sérialisation un terme qui est toujours rester obscure pour moi. Je vais regarder quelques tutos pour me remettre dans ce bain la et voir si je ne peux pas en tirer quelque chose.

Est-ce que tu pourrai me mettre en quelque lignes la méthode (voir un bout de code) pour créer un flux RTP? Car apparement une fois ce flux créé je n'aurai plus qu'a utiliser "RtpReader" sur le serveur et le tour sera joué :-)

Merci de ta patience une fois de plus et de tout le travail que tu fourni!!
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
26 mai 2009 à 16:57
RTP va te créer un flux. Donc au pire, tu pourras enregistrer le flux que tu reçois (RtpReceiveMedia) dans un fichier vidéo (un exemple qui n'est pas basé sur RTP, mais tu peux extrapolé je pense : http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/guide/JMFCapturing.html).

Néanmoins, je ne sais pas comment faire un flux de capture d'écran en JMF. Je sais faire une capture simple (http://www.java-tips.org/java-se-tips/java.awt/how-to-capture-screenshot.html). Après il faut voir comment l'envoyer sur le réseau (car BufferedImage n'est pas serialisé, mais tu peux peut-être renvoyer un byte[] qui lui est serialisable) et le récupérer (la solution la plus simple je pense serait RMI, avec une méthode distante où tu passes ton tableau de bytes[] et qui va te l'enregistrer en tant qu'image côté serveur, puis générer la vidéo)

Voilou
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
26 mai 2009 à 15:40
Ok en fait j'ai voulu simplifier un poil mon problème.
Je vais t'expliquer ce que je vise comme cela tu y verra plus clair.
J'ai un poste client qui lance l'application que je veux créer (celle qui me pose problème pour le moment) et qui prend des captures d'écran et les envoie a un serveur red5 qui ensuite crée une vidéo de toutes ces images.

Enfin mon problème actuel est l'envoie des images sur le serveur red5...comment pourrais-je résoudre cela?
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
26 mai 2009 à 15:32
addCaptureMedia est là pour spécifier le flux à utiliser (au départ, on pouvait en mettre plusieurs, le nom est resté ...)

Que veux-tu dire par "prendre qu'une image" et "ecrire sur le serveur de fichier" ? RTP est un protocole en quelque sorte de streaming audio / vidéo. Es-tu sûre que c'est ce que tu veux faire ?
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
26 mai 2009 à 15:16
Quel est l'utilité de "addCaptureMedia"?? Pareillement je ne vois pas comment modifier "VideoCapture" pour ne prendre qu'une image...Mon but est tout de meme "d'écrire" sur le serveur le fichier que je veux...
Vraiment désolé de ne pas comprendre mais là je suis un peu perdu...

Merci en tout cas!!!
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
26 mai 2009 à 13:52
Dans ce cas, il ne faut pas utiliser RtpWriter, mais plutôt RtpSendMedia de la façon suivante :
RtpSendMedia r1 = new RtpSendMedia(ip);
r1.addCaptureMedia(new VideoCapture());

Voili voilà
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
26 mai 2009 à 12:36
Par curiosité on pourrai très bien "virer" le flux audio non? c'est a dire que dans toutes les classes on enlève tout ce qui se rapporte à l'audio et uniquement à l'audio.
Je travaille actuellement en local et je n'ai rien modifié de ce que tu avais fait tout en utilisant le "main exemple" que tu proposai (avec modifications au niveau des paramètres) et cela ne donnai pas tout a fait le résultat escompté...est-ce que tu aurai une idée?

Mon objectif est seulement d'envoyer une image de type BufferedImage via RTP.

En fait je cherche juste a faire une connection RTP simpliste avec un seul envoi d'une image...le seul code source que je trouve c'est le tien qui est bien plus complet et bien plus complexe...

Merci de tes réponses!!
Buzard
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
26 mai 2009 à 11:03
Bonjour,

Cela fait longtemps que je ne me suis pas penché sur cette source.

En ce qui concerne RtpWriter, voici ce qu'on a au niveau du constructeur par défaut :
RtpWriter(ICaptureMedia audio, ICaptureMedia video, String ip)

Le premier argument correspond au flux audio, le second au flux video, et le dernier à l'adresse ip de capture de ces flux (127.0.0.1, localhost ...)

Je parle de client / serveur car RTP repose sur cette approche : nous avons une machine qui capturent les flux pour les transmettre sur le réseau (le serveur, car c'est une opération centralisée) et une machine qui reçoit ce flux par le réseau (le client, qui se contente d'afficher)

En ce qui concerne RtpReader, on a:
RtpReader(String ip)

L'argument correspondant à l'adresse ip de la machine d'où provient la capture de flux.

RtpReader est un composant Swing, et il ne s'affiche uniquement si un flux audio / vidéo est présent (voir le code:
//Nous créeons un timer afin de s'assurer que toutes les 30 secondes
//nous puissons avoir la video et l'audio
time = new Timer(30000, new ActionListener() {
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
add(getMediaComponent(), BorderLayout.CENTER);
validate();
if(rm.isReady() && rm2.isReady()){
time.stop();
}
}
});

time.start();)

Du coup, si rien ne s'affiche, peut-être que l'adresse ip est mauvaise ou que le flux n'est pas lancé.

Voilou
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
26 mai 2009 à 09:51
Avant tout merci indiana pour ta réponse rapide!!

hélas celle-ci ne me satisfait pas totalement. Cela me paraît toujours un peu flou, j'ai un peu de mal avec l'exemple que tu donne. D'après ce que j'ai vu (ce n'est peut-etre qu'un détail) pour créer un RTPWriter il faut inverser new VideoCapture() et new SoundCapture() mais également il faut rajouter l'adresse IP en 3eme paramètre.
Egalement quand tu parle de création de serveur qu'entend tu exactement par la?? et de création de client??
A propos du composant graphique comment se fait-il qu'il ne se lance pas (pas même une demi-seconde...)?

Merci d'avance pour tes réponses et veuillez m'excuser si mes questions paraissent enfantines...
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
25 mai 2009 à 18:06
Bonsoir,

Dans le cas d'une émission (création d'un serveur), il faut utiliser les classes suivantes RTPWriter et ICaptureMedia. AbstractCaptureMedia, VideoCapture et SoundCapture sont des classes pour faciliter la création d'un ICaptureMedia

Dans le cas de la récéption (création d'un client), la classe RtpReader suffit.

Rappel de l'exemple :
Serveur :
new RTPWriter(new VideoCapture(), new SoundCapture()); //Lance un serveur Vidéo / Audio

Client :
new RTPReader(adresseIP); //Lance un client Vidéo / Audio. C'est un composant graphique !!!!!

Voili voilà
buzard65 Messages postés 9 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 28 mai 2009
25 mai 2009 à 16:39
Bonjour,

Avant tout merci a tous de faire vivre cette partie du site.
En fait j'aurai voulu clarifier les choses pour être sûr d'avoir tout bien compris. L'arborescence (enfin les liens entre les classes s'effectue de la façon suivante) :
On veut envoyer au serveur à ce moment on crée un objet de type RTPWriter et il faut absolument utiliser dans ce cas les classes ICaptureMedia,AbstractCaptureMedia,VideoCapture,SoundCapture,RtpSendMedia et RtpWriter

On veut lire sur un serveur à ce moment on crée un objet de type RTPReader et il faut absolument utiliser dans ce cas les classes
ICaptureMedia,AbstractCaptureMedia,VideoCapture,SoundCapture,RtpReceiveMedia et RtpReader

C'est bien cela?
math_gury Messages postés 32 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 8 juin 2009
4 mai 2009 à 11:26
Merci, une mine d'or !!
;)
sadlisa888 Messages postés 1 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 21 juillet 2008
21 juil. 2008 à 12:25
merci pour le code c est fort interessant
hamzagasmi Messages postés 14 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 30 avril 2008
5 févr. 2008 à 16:02
bonjour
je voudrais realiser un player video sur mobile en utilisant session rtp.si quelqu'un peut m'aider,car je suis pressé par ce projet.
merci
ctoigo Messages postés 2 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 14 novembre 2007
14 nov. 2007 à 16:39
javax.media.NotRealizedError: Cannot get visual component on an unrealized player
at com.sun.media.BasicPlayer.getVisualComponent(BasicPlayer.java:491)
at com.sun.media.MediaPlayer.getVisualComponent(MediaPlayer.java:48)
at webcam.WebCam.start(WebCam.java:70)
at webcam.WebCam.(WebCam.java:39)
ctoigo Messages postés 2 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 14 novembre 2007
14 nov. 2007 à 15:56
Hi OK?, I am trying to use their classes to mount a chat on the web using applet, but giving this error, I wonder if it is possible uses-ló for this type of connection
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
14 nov. 2007 à 15:43
Euuuuuuuuuuuuuuuuuh euuuuh (je fais Hollande)
c'est une classe utilitaire que j'ai faite
Voici la source :

package projet.media;

//IMportation des packages nécessaires
import java.awt.Dimension;
import java.awt.Image;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Vector;

//Importation des packages de la JMF
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Controller;
import javax.media.Format;
import javax.media.Player;
import javax.media.Processor;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.AudioFormat;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;

/**
* Titre : UtilitiesMedia

* Description : Classe utilitaire sur la JMF

* Copyright : Copyright (c) 2006

* Société : MonProjet

* @author Julien
* @version 1.0
*/
public class UtilitiesMedia {
/**Méthode retournant la capture d'une image sur un flux vidéo
* @param player Player
* @return Retourne l'image
*/
public static Image captureImage(Player player) {
Buffer buf = null;
BufferToImage btoi = null;
FrameGrabbingControl fgc = (FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");

buf = fgc.grabFrame();
btoi = new BufferToImage((VideoFormat)buf.getFormat());
return btoi.createImage(buf);
}

/**Méthode de configuration de processeurs
* @param p Processeur à configurer.
* @return Retourne le processeur configuré
*/
public static synchronized Processor configureProcessor(Processor p) {
//Attendre tant que le Processor n'est pas configuré.
while(p.getState() < Processor.Configured){
//Configuration du Processor
p.configure();
}

return p;
}

/**Méthode retournant le device audio par défaut
* @return Retourne le device
*/
@SuppressWarnings("unchecked")
public static CaptureDeviceInfo getDefaultAudioDevice() {
Vector<CaptureDeviceInfo> deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat(AudioFormat.LINEAR,8000,8,1));
CaptureDeviceInfo device = null;

if(deviceList.size() > 0){
device = deviceList.get(0);
}

return device;
}

/**Méthode retournant le device vidéo par défaut
* @return Retourne le device
*/
@SuppressWarnings("unchecked")
public static CaptureDeviceInfo getDefaultVideoDevice() {
Vector<CaptureDeviceInfo> deviceList = CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.YUV));
CaptureDeviceInfo device = null;

if(deviceList.size() > 0){
device = deviceList.get(0);
}

return device;
}

/**Méthode retournant une liste de dimension disponible pour le device vidéo
* @param device Device vidéo
* @return Retourne une liste de dimensions
*/
public static Vector<Dimension> listOfSize(CaptureDeviceInfo device) {
Vector<Dimension> v = null;
Format[] f = device.getFormats();

if(f.length > 0){
HashSet<Dimension> hash = new HashSet<Dimension>();

for(int i = 0; i < f.length; i++){
if(f[i] instanceof VideoFormat){
hash.add(((VideoFormat)f[i]).getSize());
}
}

v = new Vector<Dimension>(hash);

if(v.size() <= 0){
v = null;
}
else{
Collections.sort(v, new Comparator<Dimension>() {
/* (non-Javadoc)
* @see java.util.Comparator#compare(java.awt.Dimension, java.awt.Dimension)
*/
public int compare(Dimension arg0, Dimension arg1) {
int cmp = 0;

if(arg0 instanceof Dimension && arg1 instanceof Dimension){
cmp = ((Dimension)arg0).toString().compareTo(((Dimension)arg0).toString());
}

return cmp;
}

});
}
}

return v;
}

/**Méthode initialisant le player
* @param p Player
* @return Retourne le player
*/
public static synchronized Player realizePLayer(Player p) {
//Attendre tant que le Player n'est pas réalisé.
while(p.getState() < Controller.Realized){
//Configuration du player
p.realize();
}

return p;
}

/**Méthode initialisant le processor
* @param p Processor
* @return Retourne le processsor
*/
public static synchronized Processor realizeProcessor(Processor p) {
//Attendre tant que le Processor n'est pas réalisé.
while(p.getState() < Processor.Realized){
//Configuration du Processor
p.realize();
}

return p;
}
}
wawaaa Messages postés 19 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 21 novembre 2007
14 nov. 2007 à 15:41
merci
A quoi correspond UtilitiesMedia?
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
14 nov. 2007 à 15:34
oui certainement

essaie le code source de webcam ci-dessus pour voir si ça marche. Sinon, ça veut peut être dire que tu as un soucis
wawaaa Messages postés 19 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 21 novembre 2007
14 nov. 2007 à 15:31
Merci bien, c'est sympa. Juste une petite question:
Ce genre d'ereur:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
at java.util.Vector.get(Vector.java:710)
at VideoCapture.jbinit(VideoCapture.java:112)
at VideoCapture.(VideoCapture.java:45)
C'est du au fait qu'il trouve pas la web cam?
Merci
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
14 nov. 2007 à 14:46
Salut,
il faut utiliser mon API comme une librairie normale, mais surtout, il faut installer JMF afin de pouvoir l'utiliser.

Enfin, pour les lancer, tu peux faire par défaut (comme j'ai mis en conclusion) :
Serveur :
new RTPWriter(new VideoCapture(), new SoundCapture()); //Lance un serveur Vidéo / Audio

Client :
new RTPReader(adresseIP); //Lance un client Vidéo / Audio. C'est un composant graphique !!!!!

Sachant que les classes VideoCapture et SoundCapture sont des classes par défaut, et tu peux mettre les tiennes à la place (à condition d'utiliser l'interface ICaptureMedia)
Voili voilà
wawaaa Messages postés 19 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 21 novembre 2007
14 nov. 2007 à 14:41
Salut,
Ce code me semble très interressant. Le problème est que je n'arrive pas a le faire fonctionner. Je ne comprend pas comment faut installer l'api ou l'appeler dans un projet. J'ai tester avec un main serveur classique au meme endroit que les .java fournit, mais ca a pas l'air de fonctionner. Si quelqu'un a réussit, ce serait sympa de me donner un coup de main.
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007
1 nov. 2007 à 01:45
allez, petit commentaire de ma part, pour dire à indiana-jules que tu as fais un remarquable boulot, voila plusieurs jours que je travaille sur tes sources pour creer un serveur/client streaming MP3 dans le cadre d'un projet. une webradio en quelque sorte.
Petit souci, je souhaite compresser mes fichiers audio en MP3, mais impossible de le faire. j'ai toujours une erreur a la con qui dit qu'il ne peut pas faire cette operation. bien entendu, j'ai recuperer tous les formats de compression dans la classe AbstractCaptureMedia, la methode format. Mais je n'ai aucun choix sur le mp3, de nombreux choix sur le mpegaudio/rtp, dvi/rtp ect.... mais ca ne m'interesse pas.
de plus, après de nombreux tests, j'ai remarqué que la compression en mpegaudio/rtp, 44100 Hz, 16-bits, Stereo, BigEndian, Signed avait les mêmes caractèristiques qu'un fichier encodé en MP3, 44100 Hz, 16-bits, stereo, debit: 128Kbps mais je ne suis pas certains que ce soit une compression en Mp3. Si quelqu'un avait une idée.
Et ne me faites pas le coup, install le plugin Mp3 fourni avec la librairie JMF, parce que je l'ai déjà fait, et suivi la procédure à la lettre.
Ca me fait chiez, parce que c'est le seul point bloquant sur mon projet.
Encore merci, pour ces sources. Je mettrai en ligne mon projet une fois fini.
rocky_appolo Messages postés 1 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 22 mai 2007
22 mai 2007 à 15:10
merci beaucoup indiana_jules pour ce précieux code, je vous serai bien reconnaissant si tu nous fait un petit exemple d'exploitation de ces fonctionnalités (un truc comme une main classe) pour voir plus clair comment ça marche. Je tiens à te dire que le code est assez clair et super bien commenté, merci encore ;)
cs_sifouane Messages postés 1 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 17 mai 2007
17 mai 2007 à 15:23
Salut pour tous,
j'ai telechargé ces classes(RTP_JMF),mais j'ai auune idée pour les utiliser,si qq un a une idée sur l'utilisation de ces classes pour le trnsfert de l'audio entre deux clients (Téléphonie),je serai trés reconnaissant de son aide.
Merci.
algo571@yahoo.com
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
24 avril 2007 à 08:19
Humf, ca va dire que La JMF n'a pas su détecter ta Webcam. De souvenir, lorsqu'on installe la JMF, il y a un exe qui permet de regénérer les fichiers de "device". Essaye de les regénérer et de les utiliser.

Voilà
cesar05 Messages postés 6 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 22 février 2009
23 avril 2007 à 20:45
salut
bon j'ai volu utiliser ton api pour le transfert de la voix et ca marche bien .mais par analogie avec la video na pas marche.
En effet g une erreur a ce niveau:
CaptureDeviceInfo cam;
....
....
cam=(CaptureDeviceInfo)deviceList.get(0);//ca retourne une erreur
any suggestions et merci
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
29 mars 2007 à 08:32
C'est normal, il n'y est pas du fait que c'est censé être une api :)

En revanche, je te confirme que ça marche, j'e l'ai utilisé pour un projet. Là je n'y pas assez, mais je verrais pour te retrouver les mains client / serveuyr

Voilà :)
baba njida Messages postés 1 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 25 mars 2007
25 mars 2007 à 23:26
merci de publier votre code,
Je travaille sur un projet de voix et video sur ip,
et ce code peut me resoudre quelques problème.
Mais je n'arrive pas à trouver la methode "main" afin d'éxecuter le code.
Svp aide moi afin de voir ce code en marche et merci.
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
13 nov. 2006 à 13:12
Pour récupérer, normalement, il suffit de suivre le code ci-dessous (normalement, ca marche) :
package projet.media;

//Importation des packages nécessaires
import java.awt.BorderLayout;
import java.io.IOException;

import javax.swing.JComponent;

//Importation des packages de la JMF
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.NotRealizedError;
import javax.media.Player;
import javax.media.Processor;


/**
* Titre : WebCam


* Description : Classe affichant une WebCam


* Copyright : Copyright (c) 2006


* Société : MonProjet


* @author Indiana_Jules
* @version 1.0
*/
public class WebCam extends JComponent {
//Constantes
/**Constante de sérialisation*/
private static final long serialVersionUID = 1L;

//Variables locales
private Player player;
private Processor processor;

/**Constructeur par défaut
* @throws IOException Erreur entrée sortie
* @throws NotRealizedError Impossible d'initialiser le flux
* @throws NoPlayerException Impossible de créer un player
*/
public WebCam() throws IOException, NoPlayerException, NotRealizedError {
setLayout(new BorderLayout());
start();
}

/**Méthode retournant le player utilisé
* @return Retourne le player
*/
public Player getPlayer() {
return player;
}

/**Méthode retournant le processor utilisé
* @return Retourne le processor
*/
public Processor getProcessor() {
return processor;
}

/**Méthode lançant le flux de la webcam
* @throws IOException Erreur entrée sortie
* @throws NotRealizedError Impossible d'initialiser le flux
* @throws NoPlayerException Impossible de créer un player
*/
public void start() throws IOException, NoPlayerException, NotRealizedError {
processor = Manager.createProcessor(UtilitiesMedia.getDefaultVideoDevice().getLocator());
UtilitiesMedia.configureProcessor(processor);
UtilitiesMedia.realizeProcessor(processor);
processor.start();

player = Manager.createPlayer(processor.getDataOutput());
player.start();

add(BorderLayout.CENTER, player.getVisualComponent());
validate();
}

/**Méthode arrêtant le flux de la webcam*/
public void stop() {
player.stop();
player.close();
player.deallocate();
player = null;

processor.stop();
processor.close();
processor.deallocate();
processor = null;

removeAll();
validate();
}
}
cooluhuru Messages postés 4 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 22 octobre 2006
19 oct. 2006 à 04:55
salut, je débute pas mal en JMF,

ton code m'interpelle quand aux possibilité de streaming evoluées.

Apr contre, là ça fait 6 heures queje cherche comment capturer ma cam pour la mettre dans tes fonctions,
plsu precisement comment je fais pourrecuper le Processor.....

merci en tout cas, et tchuz
aurao08 Messages postés 2 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 13 juillet 2006
13 juil. 2006 à 10:08
Salut,

merci pour cet exemple, moi c'est le ReceiveMedia.java qui m'a beaucoup servi, puisque j'ai quelque soucis avec mes receveur vidéo.

Bonne continuation.
Rejoignez-nous