Я пытаюсь получить видео с дрона Parrot Bebop 2.Я использую этот Bebop.sdp файл, предоставленный Parrot.
Я ранее пробовал в Python, который работал, устанавливая переменную окружения OPENCV_FFMPEG_CAPTURE_OPTIONS
в protocol_whitelist;file,rtp,udp
.Это работало в Python.С тех пор мы перенесли этот проект в основном на C #.Но при попытке подключения к потоку мы получаем эту ошибку Protocol 'rtp' not on whitelist 'file,crypto'!
.Я видел другие примеры, где это -protocol_whitelist "file,rtp,udp"
передается через аргументы ffmpeg, но в этом случае это не кажется решением, так как я не могу передать его.
Сначала я начал с простого теста:
VideoCapture videoCapture = new VideoCapture(0);
var frame = videoCapture.QueryFrame();
while (frame != null)
{
using (frame)
{
CvInvoke.Imshow("frame", frame);
CvInvoke.WaitKey(1);
}
frame = videoCapture.QueryFrame();
}
Этот код получает поток с веб-камеры и работает.
Я получаю сообщение об ошибке при запуске с файлом SDP:
VideoCapture videoCapture = new VideoCapture(@"./bebop.sdp");
var frame = videoCapture.QueryFrame();
while (frame != null)
{
using (frame)
{
CvInvoke.Imshow("frame", frame);
CvInvoke.WaitKey(1);
}
frame = videoCapture.QueryFrame();
}
Я пыталсядобавить оба:
Environment.SetEnvironmentVariable("OPENCV_FFMPEG_CAPTURE_OPTIONS", "protocol_whitelist;file,rtp,udp");
И для более агрессивного подхода:
Environment.SetEnvironmentVariable("OPENCV_FFMPEG_CAPTURE_OPTIONS", "protocol_whitelist;file,rtp,udp", EnvironmentVariableTarget.User);
Ни один из них, кажется, не оказывает влияния, так как я получаю ту же ошибку.
Iпри настройке переменных среды ожидается, что OpenCV внесет в белый список необходимые протоколы, чтобы поток проходил через него и отображался в кадре.