EmguCV和OpenCV:将RTP协议列入白名单

时间:2019-04-01 13:55:28

标签: c# emgucv rtp sdp

我正在尝试从鹦鹉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会将所需的协议列入白名单,以便流可以通过并显示在框架中。

1 个答案:

答案 0 :(得分:0)

环境变量正在工作,但是由于需要先重新启动Visual Studio才能更新环境变量,所以今天之前还没有发现。