У меня есть приложение, которое отображает видео в реальном времени с IP-камеры. В настоящее время у меня есть две камеры CP-Plus с камерой и D-Link DCS-932l. Код, который я использовал, выглядит следующим образом.
#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-адрес отлично подходит для IP-камеры CP-Plus. Но когда я изменяю имя пользователя, пароль и IP-адрес для камеры d-link в URL-адресе, я получаю NULL
для камеры CvCapture; как можно создать общий URL-адрес. Нужна помощь всем экспертам. Я использую VS2010 и c++, OpenCv. Заранее спасибо.
Для RTSP-камер отсутствует общий путь /URL SDP. Каждая конкретная модель реагирует на ее конкретные местоположения с или без спецификаций для разрешения, скорости и т.д. Некоторые камеры поддерживают несколько потоков, без нашего звука, с метаданными или без них и так далее.
Для D-Link DCS-932l вам нужно либо ссылаться на его ссылку RTSP, либо на другую документацию, или использовать сетевой сниффер для обнаружения деталей, если его веб-клиент использует RTSP для передачи.
Смотрите также:
1
вы пытаетесь слепо укоренить путь SDP. то есть «rtsp: / host: port /» и2
вы поддерживаете внутреннюю базу данных моделей камер, а затем вы ищете местоположение для конкретной модели (для каждой конфигурации) и применяете его для создания действительного URL-адреса RTSP.