2013-12-17 89 views
0

我有一個應用程序顯示來自IP攝像機的實時視頻源。我目前擁有兩臺攝像機CP-Plus網絡攝像機和D-Link DCS-932l 我使用的代碼如下。使用openCv創建通用URL來顯示IP攝像機

#include <stdio.h> 
#include <opencv2/opencv.hpp> 


int main(){ 

CvCapture *camera=cvCaptureFromFile("http://admin:[email protected]/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg"); 
if (camera==NULL) 
    printf("camera is null\n"); 
else 
    printf("camera is not null"); 

cvNamedWindow("img"); 
while (cvWaitKey(10)!=atoi("q")){ 
    double t1=(double)cvGetTickCount(); 
    IplImage *img=cvQueryFrame(camera); 
    /*if(img){ 
     cvSaveImage("C:/opencv.jpg",img); 
    }*/ 
    double t2=(double)cvGetTickCount(); 
    printf("time: %gms fps: %.2g\n",(t2-t1)/(cvGetTickFrequency()*1000.), 1000./((t2-t1)/(cvGetTickFrequency()*1000.))); 
    cvShowImage("img",img); 
} 
cvReleaseCapture(&camera); 
} 

該URL適用於CP-Plus IP攝像機。但是,當我在URL中更改d-link相機的用戶名,密碼和IP地址時,獲取CvCapture相機的NULL;如何製作通用網址?需要所有專家的幫助。 我正在使用VS2010和C++,OpenCv。 在此先感謝。

回答

0

RTSP攝像機沒有通用的SDP路徑/ URL。每個特定的模型都會響應其特定的位置,包括解碼器的速率等。有些攝像機支持多個數據流,沒有音頻,有或沒有元數據等等。對於D-Link DCS-932l,您需要參考其RTSP參考或其他文檔,或者使用網絡嗅探器檢測其Web客戶端是否使用RTSP進行傳輸的詳細信息。

參見:

+0

R:取出時間,回答我的問題謝謝。我想問問你,如果你對iSpy應用有任何想法,那麼你能告訴我它使用什麼技術,他們根據攝像機給出不同類型的URL。 – Mayur

+0

不確定關於iSpy,但這裏的方法非常簡單'1'您嘗試盲目地根SDP路徑。即「rtsp:/ host:port /」和「2」,您維護攝像機型號的內部數據庫,然後查找特定型號(每個配置)的位置並將其應用於構建有效的RTSP URL。 –

+0

R:我如何獲得不同相機型號的所有可能的RTSP URL。 – Mayur