Я пишу сервер, который принимает потоковое видео в режиме реального времени по 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
является правильным, он будет принимать поток независимо от того, идет он от operation1
или operation2
.
В целях тестирования я использую эту команду в качестве генератора потока
ffmpeg -i sample.mp4 -listen 1 -f matroska -c:v libx264 -preset fast -tune zerolatency http://localhost:8080/operation1
Как я могу настроить OpenCV
, чтобы различать конечные точки HTTP? Что мне не хватает? У меня нет опыта работы с OpenCV
и фото / видео.