OpenCV et stream (RTSP - RTMP)

Goretg Messages postés 1 Date d'inscription lundi 13 juin 2011 Statut Membre Dernière intervention 13 juin 2011 - 13 juin 2011 à 13:02
saoutal Messages postés 1 Date d'inscription dimanche 29 juillet 2007 Statut Membre 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.

1 réponse

saoutal Messages postés 1 Date d'inscription dimanche 29 juillet 2007 Statut Membre Dernière intervention 28 mars 2012
28 mars 2012 à 09:42
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?
0
Rejoignez-nous