IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

[Socket] Rafraichissement lent de l'image


Sujet :

Multimédia Java

  1. #1
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut [Socket] Rafraichissement lent de l'image
    bonjour,
    j'ai fait une appli web qui permet de visualiser les images de ma webcam a distance:
    http://viper.sign.free.fr/jnlp/vs.html
    ca se passe comme ca:
    lancement du serveur
    serveur active webcam
    serveur transforme les données de la webcam en image compressée (ImageIO)
    serveur attend clients
    label 0:
    pour chaque client (pcc) serveur envoi dans la socket l'image compressée
    pcc serveur attend 100 ms
    retour label 0

    client accede a la page web
    client recoit puis execute l'applet de la page web
    client etablis une connexion à un serveur

    label 1:
    client attend image compressée
    client décompresse l'image
    client affiche l'image
    retour label 1:
    -----------------------------

    donc, qd j'ouvre la page webcam du pc où il y a le serveur lancé, j'ai un bon rafraichissement (5 images par secondes)
    (meme si jouvre 2 pages web)
    mais quand je suis a distance... ca a l'air d'etre une image toutes les 8 secondes
    si vous voyez un moyen d'optimiser ca, ca seré cool de m'en faire part
    Colère et Haine mènent à la Puissance

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Alors y faudrait peut-être voir du côté des solutions de streaming video (est-ce supporté dans le Media Framework ?) et de compression de type MPEG et autre mais ca va devenir plus compliqué
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    si si, c'est supporté, le hic c'est que le client doit avoir JMF d'installer sur son pc et de plus,
    il faudrait que l'applet ouvre un port UDP en ecoute, ce qui n'est pas permis par l'applet, ca donnerait donc du java web start, mais je n'ai pas envie de passer par cette solution
    Colère et Haine mènent à la Puissance

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    Quelle taille fait ton image compréssée ? Comment la compresses-tu ?
    Il faudrait que ton image compressée fasse MAXIMUM 10Ko je pense pour que tu puisses espérer la recevoir à une image par seconde ( sachant que c'est aussi très dépendant de la puissance en upload de ta ligne )

    Imaginons 10Ko par image. Et ta connexion supporte au maximum un upload de 36Ko par secondes.

    Ca fait à peu près 3 images / secondes, mais il faut aussi compter le temps d'acquisition et de compression.

    Je pense que pour optimiser tout ça, il faudrait que tu rediriges directement le flux de ta webcam sur l'applet au lieu de passer par des images compressées : il doit y avoir un moyen dans ta webcam d'obtenir une image de petite qualité succeptible de fournir un flux de petite taille idéale pour l'envoie par internet.

    Il y a aussi une idée d'optimisation qui me vient en tête : un système de threads. Tu lances 3 threads max simultanées par exemple, et chacune reçoie une image, et tu affiches quand une thread a fini le téléchargement..
    K

  5. #5
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    ok merci du conseil, ca va etre chaud a appliquer mais un peu de gym me fera le plus grand bien.

    l'image est de taille 352*288, mais c'est pas la compression qui prend du temps puisqu'en local y'a pas de souci, c'est juste au niveau du transfert.
    je verrai combien l'image prend comme place.
    j'ai tester la compression png, jpg et bmp avec ImageIO puis le transfert en local.
    la compression bmp rendait l'affichage des images plus rapide, donc c'est en effet un challenge entre temps de compression et temps de transmission.

    je reverrai s'il la transmission est acceptable en compression png ou jpg ce soir.
    ma connexion porte du 100Ko/s en upload sinon
    Colère et Haine mènent à la Puissance

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Pense aussi aux threads, ça peut aider

    Peut-être qu'en effectuant une recherche sur le net, tu trouveras une librairie de compression d'image adapté à la diffusion rapide sur le net.

    La suggestion citée plus haut, par rapport à la compression mpg ou autre format streamé est interessante aussi, mais après on ne parle plus d'une suite d'image fixes, mais d'une vidéo, mais une webcam est quand même à la base plus adapté à ce type de fonctionnement
    K

  7. #7
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    c'est la m**** quand on veut streamé de la video, je l'ai deja fait, c'est un de mes autres projets, d'ailleurs y'a un bug auquel il faudrait que je m'interesse.

    Pour en revenir a notre histoire, je viens de faire les modif pour que la compression soit du jpg (7Ko/image environ)

    alors je vous explique un peu plus:
    avec la compression bmp, y'avais pas de souci pour l'envoi de données, ca marchait bien:
    raw -> ByteArrayOutputStream (par ImageIO)
    ByteArrayOutputStream.toByteArray() -> Socket.getOutputStream().write()
    (meme pas besoin d'un flush())

    mais depuis que j'ai transformé bmp par jpg, il envoi la premiere image et stop fini! (j'ai pas mis de flush() non plus)

    Vous voyez des modif a apporter?
    mon code se trouve en ligne
    http://viper.sign.free.fr/jnlp/VideoSurveillance.java
    http://viper.sign.free.fr/jnlp/VSApplet.java
    Colère et Haine mènent à la Puissance

  8. #8
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    je viens de modifier en ajoutant le flush(), meme resultat
    Colère et Haine mènent à la Puissance

  9. #9
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    bon, compression png admissible par rapport à bmp, mais c'est pas top, 10 images en 15 secondes.
    si vous avez des idées pour resoudre le pb de la compression jpg, vous etes les bienvenus.

    C'est peut etre du au fait que le serveur ait eu le temps d'écrire X images dans la socket avant que le client ait rappatrié les données
    Colère et Haine mènent à la Puissance

  10. #10
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    Invalid JPEG file structure: two SOI markers

    voici une erreur reportée alors que je n'utilise pas la compression jpg dans mon prog, qqun pour m'aider?
    Colère et Haine mènent à la Puissance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débuter] Socket très lent
    Par uriotcea dans le forum Réseau
    Réponses: 6
    Dernier message: 16/03/2013, 18h38
  2. Affichage lent d'une image
    Par GJ-Albert dans le forum 2D
    Réponses: 3
    Dernier message: 16/12/2009, 23h26
  3. ContextMenuStrip (RenderMode=System) rafraichissement LENT !
    Par arnofly dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/06/2009, 16h06
  4. [Réseau] socket trop lent
    Par cid7777 dans le forum C++
    Réponses: 5
    Dernier message: 12/07/2007, 00h30
  5. Sockets + Sauvegarde de fichiers (mp3, images...)
    Par sqwam71 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 21/05/2006, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo