나는 모니터링 시스템을 가지고 있으며 알람 트리거가 발생하면 카메라에서 스냅 샷을 저장하려고합니다. 나는 그것을하기 위해 많은 방법을 시도했다 ... 그리고 그것은 카메라에서 스트림 스냅 샷을 누른 다음 PC에서 jpg로 저장하고있다. 괜찮아요. 하지만 문제는 애플리케이션 성능에 있습니다 ... 스팀을 읽는 데 약 20 ~ 30 초가 걸리므로 그 방법은 불립니다. 2 초마다. 그 코드가 무엇이 잘못되었는지, 어떻게 그 코드를 빨리 얻을 수 있는지 알아야합니다. ? 사전 코드에 많은 감사 :스트림에서 읽는 속도가 느림.
string sourceURL = "http://192.168.0.211/cgi-bin/cmd/encoder?SNAPSHOT";
byte[] buffer = new byte[200000];
int read, total = 0;
WebRequest req = (WebRequest)WebRequest.Create(sourceURL);
req.Credentials = new NetworkCredential("admin", "123456");
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
while ((read = stream.Read(buffer, total, 1000)) != 0)
{
total += read;
}
Bitmap bmp = (Bitmap)Bitmap.FromStream(new MemoryStream(buffer, 0,total));
string path = JPGName.Text+".jpg";
bmp.Save(path);
은 데이터가 스트림에 쓰여지는 것보다 빨리 읽을 수 있다는 점을 제외하면 데이터가 손실 될 수 있습니다. 그러나 주요 아이디어는, 어쨌든, 한 번에 더 큰 바이트의 덩어리를 읽는 것입니다. –