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

API standards et tierces Java Discussion :

Enregistrer un flux H264 depuis le protocole rtsp


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut Enregistrer un flux H264 depuis le protocole rtsp
    Bonjour,

    Je suis sur un problème que je n'arrive pas à régler, j’espère que quelqu'un pourra m'aider..

    Je souhaite enregistrer un flux en H264 provenant d'une camera IP via le protocole rtsp.

    Je voudrais enregistrer e flux dans plusieurs fichiers, du genre toutes les X secondes, je ferme le fichier et j'en créé un nouveau. J'ai entrevu JMF, mais je ne comprend pas vraiment son fonctionnement, la plupart des explications se faisant pour lire le flux.. (je ne suis même pas sur que JMF lise correctement ce type de fichier)

    Si quelqu'un a une idée, je suis ouvert à tout, au java, au C.....

    je suis juste assujetti à la plateforme linux !

    Merci d'avance et bonne journée

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    precision, je suis prêt à tout, linux, windows... mais il faut que j'y arrive..

  3. #3
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    Salut,
    Je ne suis pas un expert de ce type de protocol, mais juste je voulais vous donner une petit idée générale.

    Je pense que tu peux utilisé JMF pour lire les flux et faire un petit programme avec java pour gérer les sauvegardes dans des fichiers.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    j'ai essayé JMF, c'est une laie à mettre en place et la doc est vraiment pas terrible... je n'ai trouvé aucune réponse pertinente me permettant d'être sûr que JMF est compatible avec le H264..

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    re,

    alors j'ai procédé avec vlcJ, qui est très simple à mettre en place sur linux (5min alors que sous windows ça ne marche toujours pas !)

    je boucle pour lancer les instances VLC qui enregistrent les vidéos, mais concernant la perte entre les vidéos (le temps de capter le flux à chaque fois), j'ai utilisé deux instances de player, et je ne coupe la première que lorsque la seconde est lancée, fonctionnelle, et en train d'enregistrer (je teste directement la taille du fichier)

    Je reste soumis à un problème, le temps de fermer le flux j'ai un chevauchement de 0.5 a A seconde entre mes vidéos...

    si quelqu'un connait un peu vlcj, j'aimerais bien quelques explications, du
    genre :
    - pourquoi lorsque je lance un player.startMedia() il me renvoie true alors qu'il n'enregistre qu'une seconde apres ? (le isPlaying() renvoie true aussi évidemment)
    - pourquoi lorsque je lance un player.prepareMedia(url), la méthode player.isplayable() me renvoie false ? alors que si juste après je fais un player.play() alors le flux est lu ???

    Pour le moment mon programme marche, mais je suis toujours ouvert à des explications, sur cette API ou sur JMF.

    En tout cas bonne journée / weekend à tout ceux qui sont passé sur mon post !

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    Boujour,
    Je suis entrain de faire mon projet de fin d’étude vidéo surveillance mobile sous android. Précisément à la tache de l'enregistrement du flux de caméra ip sur la carte SD.
    J'ai rien trouvé sur le net qui peut m'aider, j'ai passer pas mal de temps mais en vain.
    dumoulex est ce que vous pouvez m'aider avec votre solution qui est implémenté
    en java (puisque l'android est composé de java et xml)?

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut reouverture
    suite à suppression des messages privés, on reprend le post..

  8. #8
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    Merci dumoulex,
    Est ce vous pouvez nous donner un bout de code de l'enregistrement ou des liens qui nous aide (si vous voulez)
    J'ai cherche sur le vlcJ, mais je me suis perdu, est ce que vous pouvez me guider un petit peux?
    je développe sous android.
    Mon besoin est l'enregistrement de flux de caméra ip à partir de son url ( http ou rtsp) format de vidéo 3gp, mes video vont être de courte durée (5min à 10 min) taille fixe ou non peux n'importe.
    Merci d'avance.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    re,

    j'ai envoyé un MP hier avec une procédure expliquant comment fonctionnait mon système, l'avez vous reçu ?

    je n'ai plus le code à disposition, et de toute façon il ne m'appartient plus et je n'ai pas le droit de le diffuser.

    En revanche je peux aider !

    est ce que vous avez installer vlcJ ? fonctionne-t-il ? (parce que sinon c'est mal parti!)

  10. #10
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    J'ai installé le vlcJ, mais il ne fonctionne pas est ce que je dois l'ajouter au variable d’environnement?
    Est ce vous pouvez me donner des qui m'aide dans la programmation?
    Merci d'avance

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    logiquement il suffit d'ajouter le jar (vous l'avez?) au projet, donc dans le classpath. ou si vous etes sous eclipse, ajouter le jar

    il y a aussi JNA.jar à recuperer et à integrer au projet :
    http://java.net/projects/jna/downloads/directory/3.3.0


    Il faut également installer vlc sur la machine, et sous unix préciser dans le programme :
    System.setProperty("jna.library.path", "/usr/lib/");
    qui stipule l'adresse des fichier liés à la JNA

    ainsi que
    NativeLibrary.addSearchPath("vlc", "/usr/lib/");
    qui stipule l'adresse des fichier liés à VLC


    ensuite la creation d'un lecteur/enregistreur peut commencer

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    voici comment proceder pour un enregistrement simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    MediaPlayerFactory enregistreurFactory = new MediaPlayerFactory();
    HeadlessMediaPlayer enregistreur = enregistreurFactory.newHeadlessMediaPlayer();
     
    optionsVlcJ = new String[] { ":sout=#standard{mux=mp4,access=file,dst=" + urlFichier + "}" };
     
    // lance l'enregistrement
    enregistreur.startMedia(urlH264, optionsVlcJ);
     
    // ici une boucle pour attendre 5 minutes ou plus
     
    // arret de l'enregistrement
    enregistreur.stop();
     
    // parcours du fichier pour reindexer le fichier
    enregistreur.release();
     
     
    // des infos sur le flux
    libvlc_media_stats_t stats = enregistreur.getMediaStatistics();
    // info sur le bitrate qui indique si des données transitent entre vlc et la camera
    float bitrateCourant = stats.f_demux_bitrate;
    à voir après si tu veux plus complet et plus optimisé

  13. #13
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    Merci Infiniment
    J'ai installer les autres .jar (jna et platform), j'ai réglé les variables d’environnement.
    J'ai adapter le code que vous m'avez envoyer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    HeadlessMediaPlayer enregistreur = enregistreurFactory.newHeadlessMediaPlayer();
    			  String urlFichier="/sdcard/enreg";
    			 String	 urlcam= "http://202.212.193.26:555/nphMotionJpeg?Resolution=640x480&Quality=Standard";
    			 String[]	 optionsVlcJ = new String[] { ":sout=#standard{mux=3gp,access=file,dst=" + urlFichier + "}" };
     
    			 // lance l'enregistrement
    			 //while (currentTimeMillis=)
    			 enregistreur.startMedia(urlcam, optionsVlcJ);
     
    			 try {
    				Thread.sleep(300000);
    			} catch (InterruptedException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    			 // ici une boucle pour attendre 5 minutes ou pluss
     
    			 // arret de l'enregistrement
    			 enregistreur.stop();
     
    			 // parcours du fichier pour reindexer le fichier
    			 enregistreur.release();
     
     
    			 // des infos sur le flux
    			 libvlc_media_stats_t stats = enregistreur.getMediaStatistics();
    			 // info sur le bitrate qui indique si des données transitent entre vlc et la camera
    			 float bitrateCourant = stats.f_demux_bitrate;
    mais lorsque je fais le run il m'indique ces erreur

    Could not find class 'uk.co.caprica.vlcj.player.MediaPlayerFactory', referenced from method com.andro.surv.Visualisationmulti.onClick
    java.lang.NoClassDefFoundError: uk.co.caprica.vlcj.player.MediaPlayerFactory

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    est ce que tu utilise un IDE pour développer ? parce que ça reste super pratique concernant les classpath.. et quand je lis classNotFound exception c'est généralement ça.

    Je suppose que java ne trouve pas le chemin de la classe, donc soit il ne trouve pas le vlcJ.jar à cause du chemin, soit il ne trouve pas la classe. (je suis aller sur la page de vlcJ, je ne trouve pas le jar en telechargement, tu l'as bien télécharger ? si oui peux tu me donner l'url ? merci)

    sinon est ce que le MediaPlayerFactory est bien instanciée ? parce que dans le code reçu il ne l'est pas.

    Logiquement, si il y a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MediaPlayerFactory enregistreurFactory = new MediaPlayerFactory();
    avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HeadlessMediaPlayer enregistreur = enregistreurFactory.newHeadlessMediaPlayer();
    ça devrait aussi renvoyer une exception du même type.

  15. #15
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    j'ai bien instancié la MediaPlayerFactory.
    j'ai télécharger vlcj-1.2.0.jar à partir de cette page http://www.java2s.com/Code/Jar/v/Downloadvlcj120jar.htm

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    j'avais mal lu l'exception :S

    comment est ce que tu compiles ? utilises tu eclipse ou un logiciel de prog ou bien à la main direct dans l'editeur ?

    je ne peux que conseiller d'utiliser un IDE tel que eclipse ou netbeans, qui propose facilement d'intégrer les jar, je ne fais plus que comme ça, depuis la fois où j'ai craqué à cause de classNotFoundException ou de NoClassDefFoundError.

    ça serait bien d'avoir un peu plus d'info parce que la les 5 lignes de code sont correctes, l'exception levée est par rapport à la structure de ton projet. donc dit moi un peu la structure, comment sont organiser les packages, quel éditeur utilises tu...

  17. #17
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    Je compile mon projet à travers éclipse qui intègre l’émulateur de l'android
    la première image présente l'arborescence de mon projet

    En effet:
    * le dossier src englobe les classes .java (elles sont reparties à des packages selon mon besoin)
    * Referenced Librairies représente les .jar ajouter
    * le dossier res contient un dossier layout qui forme les classes .xml (ressource) qui servent à la consruction de l'interface graphique

    Alors que la deuxième présente l'outil de teste ( résultat de compilation d’éclipse lors il intégré le dsk android).

  18. #18
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    bonjour dumoulex,
    j'ai ajouté mes .jar dans dans dossier libs dans mon projet de ce fait j'ai éliminé les erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Could not find class 'uk.co.caprica.vlcj.player.MediaPlayerFactory', referenced from method com.andro.surv.Visualisationmulti.onClick
    java.lang.NoClassDefFoundError: uk.co.caprica.vlcj.player.MediaPlayerFactory
    Mais lors du run je reçoit maintenant ce message d’erreur dans ma console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    The library 'jna.jar' contains native libraries that will not run on the device.
     The following libraries were found:
     - com/sun/jna/darwin/libjnidispatch.jnilib
     - com/sun/jna/linux-i386/libjnidispatch.so
     - com/sun/jna/linux-amd64/libjnidispatch.so
    - com/sun/jna/sunos-x86/libjnidispatch.so
     - com/sun/jna/sunos-amd64/libjnidispatch.so
     - com/sun/jna/sunos-sparc/libjnidispatch.so
     - com/sun/jna/sunos-sparcv9/libjnidispatch.so
     - com/sun/jna/freebsd-i386/libjnidispatch.so
     - com/sun/jna/freebsd-amd64/libjnidispatch.so
    Est ce que vous pouvez m'aidez?
    Merci d'avance

Discussions similaires

  1. Caméra IP lecture d'un flux au protocole RTSP avec JMF
    Par jchevalay54 dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 26/09/2012, 09h41
  2. [Conception] Enregistrement de dates concaténées depuis formulaire
    Par carelha dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/12/2006, 15h14
  3. [ThunderBird] Refuse de lire les flux RSS depuis 3jours
    Par Swoög dans le forum Thunderbird
    Réponses: 4
    Dernier message: 27/06/2006, 21h33
  4. [AJAX] Enregistrer un flux XML
    Par Bissada dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/06/2006, 17h52
  5. Enregistrer fichier xls - pilotage depuis access
    Par Celia1303 dans le forum Access
    Réponses: 5
    Dernier message: 15/11/2005, 14h15

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