我有一个多播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.我试过了,2/o@也在那个地址上试过rtp。运气不佳:-/
OpenCV是否直接允许"捕获"UDP流?或者我需要在客户端上运行VLC以将视频重新流式传输为rtp或http或其他。。。。?
谢谢。
我终于明白了这一点,并与大家分享,希望能帮助其他人,
Capture cap = new Capture ("udp://@212.1.1.1:1234");
别忘了@符号
在UDP流上成功创建捕获,但是访问捕获属性会导致它异常并导致错误。
长话短说,UDP流似乎不会流式传输设备属性,因此您可能需要在其他地方获取或在中进行编码
另一点需要注意的是,由于FPS(每秒帧数)是不可靠的,如果不是完全错误的话,您可能需要调整FPS,尤其是当您在循环中轮询流时。
HTH
IplImage* frame;
CvCapture* pCapture;
pCapture = cvCaptureFromFile("udp://ip:port/path");
frame = cvQueryFrame(pCapture);
如果您没有videoInput库