为了账号安全,请及时绑定邮箱和手机立即绑定

EmguCV 和 OpenCV:白名单 RTP 协议

EmguCV 和 OpenCV:白名单 RTP 协议

C#
largeQ 2022-11-21 21:34:37

我正在尝试从 Parrot Bebop 2 无人机接收一些视频。我正在使用由 Parrot 提供的Bebop.sdp文件。


我之前在 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);

它们似乎都没有影响,因为我遇到了同样的错误。


我希望在设置环境变量时,OpenCV 会将所需的协议列入白名单,以便流通过并显示在框架中。


查看完整描述

1 回答

?
慕田峪9158850

TA贡献1513条经验 获得超7个赞

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



查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 6 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信