Невозможно захватить 2 записанных видео потока одновременно - PullRequest
0 голосов
/ 25 февраля 2020

Я могу захватить (используя 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...