Précédent   Forum des professionnels en informatique > Java > Général Java > APIs
APIs Forum sur les API standard et API complémentaires. Avant de poster -> FAQ Java, Les meilleures API Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 10h49   #1
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
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
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h04   #2
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
precision, je suis prêt à tout, linux, windows... mais il faut que j'y arrive..
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h49   #3
Membre émérite
 
Avatar de anisj1m
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2006
Messages : 1 055
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Tunisie

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

Informations forums :
Inscription : juillet 2006
Messages : 1 055
Points : 929
Points : 929
Envoyer un message via Yahoo à anisj1m
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.
__________________
Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.
anisj1m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 14h52   #4
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
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..
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 15h32   #5
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
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 !
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 16h59   #6
Nouveau Membre du Club
 
Femme
Inscription : mars 2011
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mars 2011
Messages : 77
Points : 28
Points : 28
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)?
ensinienne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 09h32   #7
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
Par défaut reouverture

suite à suppression des messages privés, on reprend le post..
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 10h10   #8
Nouveau Membre du Club
 
Femme
Inscription : mars 2011
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mars 2011
Messages : 77
Points : 28
Points : 28
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.
ensinienne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 11h34   #9
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
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!)
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 13h11   #10
Nouveau Membre du Club
 
Femme
Inscription : mars 2011
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mars 2011
Messages : 77
Points : 28
Points : 28
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
ensinienne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 14h12   #11
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
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
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 15h00   #12
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
voici comment proceder pour un enregistrement simple :
Code :
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é
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 15h58   #13
Nouveau Membre du Club
 
Femme
Inscription : mars 2011
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mars 2011
Messages : 77
Points : 28
Points : 28
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 :
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
ensinienne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 16h35   #14
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
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 :
1
2
 
MediaPlayerFactory enregistreurFactory = new MediaPlayerFactory();
avant
Code :
1
2
 
HeadlessMediaPlayer enregistreur = enregistreurFactory.newHeadlessMediaPlayer();
ça devrait aussi renvoyer une exception du même type.
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 16h53   #15
Nouveau Membre du Club
 
Femme
Inscription : mars 2011
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mars 2011
Messages : 77
Points : 28
Points : 28
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
ensinienne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2012, 10h13   #16
Membre du Club
 
Homme nicolas
Développeur informatique
Inscription : février 2011
Messages : 111
Détails du profil
Informations personnelles :
Nom : Homme nicolas
Localisation : France

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

Informations forums :
Inscription : février 2011
Messages : 111
Points : 52
Points : 52
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...
dumoulex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2012, 10h53   #17
Nouveau Membre du Club
 
Femme
Inscription : mars 2011
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mars 2011
Messages : 77
Points : 28
Points : 28
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).
ensinienne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2012, 11h16   #18
Nouveau Membre du Club
 
Femme
Inscription : mars 2011
Messages : 77
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mars 2011
Messages : 77
Points : 28
Points : 28
bonjour dumoulex,
j'ai ajouté mes .jar dans dans dossier libs dans mon projet de ce fait j'ai éliminé les erreurs
Code :
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 :
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
ensinienne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h24.


 
 
 
 
Partenaires

Hébergement Web