2013-02-22 178 views
2

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

在客户端,我可以使用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或其他一些....?

谢谢。

回答

2

我终于想通了这一点,并希望可以帮助其他人共享,

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

别忘了@符号!

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

长话短说,在UDP流不出现流设备属性,所以你可能需要获取其他地方或代码进去。

在音符的另一件事,是因为FPS(帧每秒)是不可靠的,如果不是完全错误的话,你可能需要调整FPS,尤其是如果你正在循环查询流。

HTH

+0

只是好奇,因为我得到了emgu没有真正的想法,这是对胜利还是linux? – berak 2013-02-22 21:44:00

+0

Emgu是OpenCV的一个.net包装(我在windows上运行它,但是我听说Emgu在Mono上运行得很好) – Mikos 2013-02-24 05:45:51

+0

与你的问题有什么不同?的代码没有? – Gulzar 2016-05-29 12:20:02

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

这也将做的情况下工作,你不必videoInput库