2013-08-16 5 views
5

Ich habe eine HD-Netzwerk-Kamera, die ich versuche, Frames über RTSP zu packen und mit dem folgenden Code:EMGU QueryFrame gibt "streifig" Bild über RTSP

//in Form_Load 
Application.Idle += getNextFrame; 

und die Event-Handler:

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); 
} 

Wenn ich das Programm starte, wird es 20-40 Frames aufnehmen, bevor die "Streifigkeit" am unteren Rand des Bildschirms erscheint. Es ist immer auf der Unterseite des Bildes, aber manchmal nimmt es die Hälfte des Bildschirms.

enter image description here

Der Strom Auflösung von 1920x1080 und es ist mit MJPEG. Ich habe versucht, zu h.264 zu wechseln, hatte aber die gleichen Ergebnisse.

Ich verwende Emgu Version x86-2.4.0.1717

Irgendwelche Ideen? Danke.

Antwort

2

Ich weiß, das ist eine alte Frage, aber ich stieß in letzter Zeit auf das gleiche Problem. Ich würde empfehlen, eine andere Streaming-Bibliothek zu verwenden. Z.B.

Wenn Sie wirklich mit einer niedrigeren Auflösung oder höherer Kompression EMGU dann erstellen Sie ein Stream Profil verwenden müssen streamen. Ich habe die Komprimierung auf 30 gesetzt und die gleiche Auflösung verwendet, dann den Namen des Stream-Profils in der rtsp URL angegeben. (Angenommen, Sie sind mit einer Achse Kamera wie ich capAxis)

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

Ich habe das gleiche Problem wie das, und ich habe es selbst gelöst. Ich habe iSpy benutzt, um die URL meiner ONVIF Ip Kamera zu kennen. Die URL meiner IP-Kamera lautet rtsp: //192.168.1.xxx: 554 // user = admin_password = tlJwpbo6_channel = 1_stream = 0.sdp? Real_stream Für stream = 0 läuft meine IP Cam in HD-Auflösung (1280 x 720) und diese Auflösung macht ein streifiges Ergebnis meines Bildes. Also gab es zwei Optionen von URL, die iSpy gab, und der andere ist nur anders im Stream. Ich habe Stream = 1 für niedrige Auflösung (352 x 288) geändert und das Image ist gut! Es gibt keine Striche in meinem Bild. Etwas, das ich von diesem Problem gelernt habe, war die Verwendung von RTSP, die Sie in niedriger Auflösung verwenden müssen. Hohe Auflösung wird das Bild nicht gut machen. Ich hoffe, es kann Ihrem Problem helfen.

Grüße, Alfonsus Dhani

1

Am Ende der Capture-String hinzufügen, um dieses "? Tcp"

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

EDIT

Dies ist mein Code, und ja, es funktioniert, ich verwende eine IP-Kamera DAHUA.

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