Capturing a Multicast UDP Video stream using OpenC

2019-02-19 15:10发布

I have a multi-cast UDP Video stream that I need my OPenCV (Emgu ) 2.4.x app to capture and process ("client").

On the client, I can capture the stream using VLC (udp://xx.yy.zz.aaa:1234, However the my app fails to capture this udp stream. My code is quite simple (

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

p.s. I have tried with and 2/o the @ also tried rtp on that address. No luck :-/

Does OpenCV directly allow "capture" of UDP streams? or do I need to run VLC on the client to re-stream the video as rtp or http or some other....?

Thanks.

2条回答
不美不萌又怎样
2楼-- · 2019-02-19 15:19

I finally figured this out and sharing in the hope that might help others,

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

don't forget the @ symbol!

the capture is successfully created on the UDP Stream, however accessing the capture properties causes it to exception out and causes the error.

Long story short, the UDP stream does not appear to stream the device properties so you might need to obtain that elsewhere or code it in.

On other thing of note, that since the FPS (frames per sec) is unreliable, if not outright incorrect, you might need to make the FPS adjustable, especially if you are polling the stream in a loop.

HTH

查看更多
Deceive 欺骗
3楼-- · 2019-02-19 15:32
IplImage* frame;
CvCapture* pCapture;
pCapture = cvCaptureFromFile("udp://ip:port/path");
frame = cvQueryFrame(pCapture);

This will also do the job in case you don't have videoInput libraries

查看更多
登录 后发表回答