使用OpenCV捕获多播UDP视频流

时间:2013-02-22 01:50:05

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

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

在客户端上,我可以使用VLC捕获流(udp://xx.yy.zz.aaa:1234,但是我的应用程序无法捕获此udp流。我的代码非常简单(

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

P.S。我已经尝试过和@ / o在该地址上尝试了rtp。没有运气: - /

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

感谢。

2 个答案:

答案 0 :(得分:2)

我终于想出来并希望可以帮助别人,

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

不要忘记@符号!

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

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

另外值得注意的是,由于FPS(每秒帧数)不可靠,如果不是完全不正确,您可能需要使FPS可调,特别是如果您在循环中轮询流。

HTH

答案 1 :(得分:0)

IplImage* frame;
CvCapture* pCapture;
pCapture = cvCaptureFromFile("udp://ip:port/path");
frame = cvQueryFrame(pCapture);

如果您没有videoInput库

,这也可以完成这项工作