OpenCV et stream (RTSP - RTMP)

Messages postés
1
Date d'inscription
lundi 13 juin 2011
Dernière intervention
13 juin 2011
- - Dernière réponse : saoutal
Messages postés
1
Date d'inscription
dimanche 29 juillet 2007
Dernière intervention
28 mars 2012
- 28 mars 2012 à 09:42
Hello,

je suis en train de développer un programme de détection (de choses et d'autres ) et je dois travailler sur des flux vidéos provenant d'un serveur média.
J'utilise la librairie OpenCV 2.2.

J'ai déjà pu tester l'accès via RTSP, de cette manière :

CvCapture *camera=cvCaptureFromFile("rtsp://IP:Port/streamXY");
cvNamedWindow("img");
    while (cvWaitKey(10)!=atoi("q")){
        double t1=(double)cvGetTickCount();
        IplImage *img=cvQueryFrame(camera);
        double t2=(double)cvGetTickCount();
        printf("time: %gms  fps: %.2g\n",(t2-t1)/(cvGetTickFrequency()*1000.), 1000./((t2-t1)/(cvGetTickFrequency()*1000.)));
        cvShowImage("img",img);
    }
    cvReleaseCapture(&camera);


Et ça fonctionne.

Ce que je recherche à présent est l'accès à ces flux vidéo en utilisant le protocole RTMP, par exemple :

CvCapture *camera=cvCaptureFromFile("rtmp://IP:Port/streamXY");


1. Est-ce possible, en utilisant OpenCV ?
2. Si oui, quelle est la syntaxe et comment passer les paramètres ?
3. Si non, existe-il un autre moyen de récupérer les flux RTMP, et de les transformer en type IplImage d'OpenCV ?

Merci d'avance.
Afficher la suite 

Votre réponse

1 réponse

Messages postés
1
Date d'inscription
dimanche 29 juillet 2007
Dernière intervention
28 mars 2012
0
Merci
Bonjour;

Au fait, je travaille sur le même projet que le vôtre, et j'ai un problème de récupération de flux video, je uis sous windows7, 64bits et j'utilise opencv 2.3.1, j'ai testé ce code avec une caméra IP distante mais ça marche pas.

int main(){

    CvCapture *camera=cvCaptureFromFile("http://demo1.stardotcams.com/nph-mjpeg.cgi?.mjpg"); // vous pouvez tester aussi avec "http://195.5.21.185/axis-cgi/mjpg/video.cgi?.mjpg" (adresses publiques)
   
if (camera==NULL)
        printf("camera is null\n");
    else
        printf("camera is not null");

    // Create a window in which the captured images will be presented
cvNamedWindow("img", CV_WINDOW_AUTOSIZE);
    while (cvWaitKey(10)!=atoi("q")){
        double t1=(double)cvGetTickCount();
        IplImage *img=cvQueryFrame(camera);
        double t2=(double)cvGetTickCount();
        printf("time: %gms  fps: %.2g\n",(t2-t1)/(cvGetTickFrequency()*1000.), 1000./((t2-t1)/(cvGetTickFrequency()*1000.)));
        cvShowImage("img",img);
    }
    cvReleaseCapture(&camera);
cvDestroyWindow( "img" );
   return 0;
}


Est ce que vous avez récupéré un flux d'une caméra distante ou locale?
Commenter la réponse de saoutal

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.