我正在尝试从鹦鹉Bebop 2无人机接收一些视频。 我正在使用Parrot提供的Bebop.sdp文件。
我以前曾在Python中尝试过,它通过将环境变量sinon
设置为send
来工作。
这在Python中有效。
从那以后,我们已经将该项目主要移植到了C#中。但是,当尝试连接到流时,会出现此错误OPENCV_FFMPEG_CAPTURE_OPTIONS
。
我看过其他示例,这些protocol_whitelist;file,rtp,udp
通过ffmpeg参数传递,但是在这种情况下,由于我无法传递它,因此它似乎不是解决方案。
首先,我从一个简单的测试开始:
Protocol 'rtp' not on whitelist 'file,crypto'!
此代码是网络摄像头的流,并且可以正常工作。
当我使用SDP文件运行它时,我得到了错误:
-protocol_whitelist "file,rtp,udp"
我尝试将两者都添加:
VideoCapture videoCapture = new VideoCapture(0);
var frame = videoCapture.QueryFrame();
while (frame != null)
{
using (frame)
{
CvInvoke.Imshow("frame", frame);
CvInvoke.WaitKey(1);
}
frame = videoCapture.QueryFrame();
}
采用一种更具侵略性的方法:
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();
}
由于我遇到相同的错误,它们似乎都没有影响。
我希望在设置环境变量时,OpenCV会将所需的协议列入白名单,以便流可以通过并显示在框架中。
答案 0 :(得分:0)
环境变量正在工作,但是由于需要先重新启动Visual Studio才能更新环境变量,所以今天之前还没有发现。