2

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

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

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

ps 我已经尝试过 2/o @ 也在那个地址上尝试了 rtp。没运气 :-/

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

谢谢。

4

2 回答 2

5

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

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

不要忘记@符号!

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

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

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

高温高压

于 2013-02-22T21:06:01.167 回答
0
IplImage* frame;
CvCapture* pCapture;
pCapture = cvCaptureFromFile("udp://ip:port/path");
frame = cvQueryFrame(pCapture);

如果您没有 videoInput 库,这也可以完成工作

于 2013-03-01T16:56:17.123 回答