2013-02-22 177 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庫