我有一个多播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或其他......?
感谢。
答案 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库
,这也可以完成这项工作