Я могу захватить (используя cv :: VideoCapture) 2 потоковых видео в реальном времени (или 1 прямой эфир и 1 записанный поток) одновременно, используя OpenCV C ++ в Visual Studio.
Но я не могу захватить более 1 записанных потоков одновременно.
Мой код:
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/videoio.hpp"
using namespace std;
using namespace cv;
const string camera1_main_streamURL = "rtsp://(..........SOME URL............)";
const string camera2_main_streamURL = "rtsp://(..........SOME URL............)";
const string windowName1 = "Output Image";
const string windowName = "camera1 main streaming";
const string windowName2 = "camera2 main streaming";
int main(int argc, const char * argv[])
{
//create video capture object for camera1 and camera2
cv::VideoCapture cam1_capture(camera1_main_streamURL, cv::CAP_FFMPEG);
cv::VideoCapture cam2_capture(camera2_main_streamURL, cv::CAP_FFMPEG);
if (!cam1_capture.isOpened())
{
//Error
std::cout << "Input error 1\n";
return -2;
}
if (!cam2_capture.isOpened())
{
//Error
std::cout << "Input error 1\n";
return -3;
}
while (true)
{
// initialise the window for camera1 and camera2 streaming
cv::namedWindow("camera1 main streaming", WINDOW_AUTOSIZE);
cv::namedWindow("camera2 main stream", WINDOW_AUTOSIZE);
//grab and retrieve each frames of the camera1 and camera2 sequentially
cv::Mat3b frame1;
cam1_capture >> frame1;
cv::Mat3b frame2;
cam2_capture >> frame2;
if (!cam1_capture.read(frame1))
{
//Error
std::cout << "Input error 2\n";
return -1;
}
if (!cam2_capture.read(frame2))
{
//Error
std::cout << "Input error 2\n";
return -1;
}
//display both the frame
cv::imshow("camera1 main streaming", frame1);
cv::imshow("camera2 main stream", frame2);
if (cv::waitKey(1) >= 0) break;
cv::waitKey(30);
//press any key from keyboard to stop and save the video
}
cam1_capture.release();
cam2_capture.release();
return 0;
}
Выход:
[rtsp @ 000000ea2bf8fc40] Метод DESCRIBE завершился ошибкой: 453 Недостаточно пропускной способности Ошибка ввода 1