首页 > 解决方案 > OpenCV 接受不同端点的 HTTP 视频流

问题描述

我正在编写一个服务器,它通过 HTTP 接收实时视频流并为不同的端点执行一些操作。

我正在使用OpenCV它,我的基本代码看起来像这样

void f1()
{
    cv::VideoCapture cap("http://localhost:8080/operation1");
    if (!cap.isOpened())
        return;

    for (;;)
    {
        cv::Mat frame;
        cap >> frame;

        // do something
    }
}

void f2()
{
    cv::VideoCapture cap("http://localhost:8080/operation2");
    if (!cap.isOpened())
        return;

    for (;;)
    {
        cv::Mat frame;
        cap >> frame;

        // do something else
    }
}

void f3() {...}

如您所见,每个函数都侦听不同的 HTTP 端点并执行不同的操作。每个函数在单独的线程中运行。

问题是由于某种原因OpenCV忽略了端点中的资源部分,即如果ip:port正确,它将接受流,无论它来自operation1operation2

出于测试目的,我将此命令用作流生成器 ffmpeg -i sample.mp4 -listen 1 -f matroska -c:v libx264 -preset fast -tune zerolatency http://localhost:8080/operation1

如何OpenCV区分 HTTP 端点?我错过了什么?我以前没有任何关于OpenCV照片/视频的经验。

标签: c++opencvffmpegvideo-streaminghttp-live-streaming

解决方案


推荐阅读