【问题标题】:Capturing a Multicast UDP Video stream using OpenCV使用 OpenCV 捕获多播 UDP 视频流
【发布时间】:2013-02-07 13:27:42
【问题描述】:

我有一个多播 UDP 视频流,我需要我的 OPenCV (Emgu) 2.4.x 应用程序来捕获和处理(“客户端”)。

在客户端,我可以使用 VLC 捕获流(udp://xx.yy.zz.aaa:1234,但是我的应用无法捕获这个 udp 流。我的代码很简单(

Capture cap = new Capture ("udp://@212.1.1.1:1234");

附言我已经尝试过使用 2/o @ 也尝试过在该地址上使用 rtp。没有运气:-/

OpenCV 是否直接允许“捕获”UDP 流?还是我需要在客户端上运行 VLC 以将视频重新流式传输为 rtp 或 http 或其他......?

谢谢。

【问题讨论】:

    标签: opencv udp video-streaming video-capture emgucv


    【解决方案1】:

    我终于想通了并分享,希望可以帮助其他人,

    Capture cap = new Capture ("udp://@212.1.1.1:1234");
    

    别忘了@符号!

    在 UDP 流上成功创建了捕获,但是访问捕获属性会导致它出现异常并导致错误。

    长话短说,UDP 流似乎不会流式传输设备属性,因此您可能需要在其他地方获取它或对其进行编码。

    另外需要注意的是,由于 FPS(每秒帧数)不可靠,如果不是完全不正确,您可能需要调整 FPS,尤其是在循环轮询流时。

    HTH

    【讨论】:

    • 只是好奇,因为我对emgu一无所知,这是在win还是linux上?
    • Emgu 是 OpenCV 的 .net 包装器(我在 Windows 上运行它。但是我听说 Emgu 在带有 Mono 的 Linux 上运行良好。
    • 您的问题不起作用与您的回答起作用的地方有什么不同?相同的代码行没有?
    【解决方案2】:
    IplImage* frame;
    CvCapture* pCapture;
    pCapture = cvCaptureFromFile("udp://ip:port/path");
    frame = cvQueryFrame(pCapture);
    

    如果您没有 videoInput 库,这也可以解决问题

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 2021-04-18
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2014-11-27
      • 2011-11-26
      • 1970-01-01
      相关资源
      最近更新 更多