2013-08-16 41 views
5

我有我試圖搶在RTSP幀,使用下面的代碼高清網絡攝像機「五花」圖片:EMGU QueryFrame返回了RTSP

//in Form_Load 
Application.Idle += getNextFrame; 

和事件處理程序:

private void getNextFrame(object sender, EventArgs ags) 
{ 
     //where _imgCount is the total image Grabs 
     lbl_Count.Text = _imgCount++.ToString(); 
     // and ibLive is a Emgu ImageBox 
     ibLive.Image = capAxis.QueryFrame().Resize(640, 480, INTER.CV_INTER_AREA); 
} 

當我開始程序時,它會抓住20-40幀,然後在屏幕底部出現「條紋」。它總是在圖像的底部,但有時它佔用了一半的屏幕。

enter image description here

流的分辨率是1920×1080,它的採用MJPEG。我試過切換到h.264,但有相同的結果。

我正在使用Emgu版本x86-2.4.0.1717

任何想法? 謝謝。

回答

2

我知道這是一個老問題,但最近我遇到了同樣的問題。 我會推薦使用另一個流媒體庫。例如。

如果你真的需要使用EMGU然後創建一個較低的分辨率或更高的壓縮流輪廓流。我將壓縮設置爲30,並使用相同的分辨率,然後在rtsp url中提供流配置文件名稱。 (假設你正在使用移軸鏡頭像我capAxis

Capture cap = new Capture(@"rtsp://10.0.0.1/axis-media/media.amp?videocodec=h264&streamprofile=rtspstream"); 
1

我有這樣的同樣的問題,我已經自己解決了它。我用iSpy知道我的ONVIF Ip Camera的網址。我的IP攝像機的網址是rtsp://192.168.1.xxx:554 // user = admin_password = tlJwpbo6_channel = 1_stream = 0.sdp?real_stream 對於stream = 0,我的IP攝像頭正在運行高清分辨率(1280 x 720)而這個決議讓我的形象產生了一個糟糕的結果。因此,iSpy提供了兩種URL選項,另一種僅在流中有所不同。我爲低分辨率(352 x 288)更改了stream = 1,圖像效果很好!我的形象沒有斑點。我從這個問題中學到的東西是使用RTSP,你必須以低分辨率使用它。高分辨率會使圖像效果不佳。希望它能幫助你解決問題。

問候, Alfonsus Dhani

1

在捕獲字符串的結尾添加此? 「TCP」

Capture cap = new Capture(@"rtsp://10.0.0.1/axis-media/media.amp?videocodec=h264&streamprofile=rtspstream?tcp"); 

編輯

這是我的代碼,是的,它的作品,我我正在使用IP CAM DAHUA。

Capture cap = Capture(@"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=01?tcp");