/// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="waitTime">Time to wait in milliseconds for a frame to be available.</param> /// <returns></returns> public byte[] GetLatestImage(string id, int waitTime = 5000) { if (waitTime < 0) { waitTime = 0; } if (waitTime > 60000) { waitTime = 60000; } waitTime = waitTime / 20; IPCameraBase cam = GetCameraById(id); if (cam == null || cam.cameraSpec.type == CameraType.h264_rtsp_proxy) { return(new byte[0]); } lock (this) { if (!cam.isRunning) { cam.Start(); } } int timesWaited = 0; byte[] frame = cam.LastFrame; while (frame.Length == 0 && timesWaited++ < waitTime) { Thread.Sleep(20); frame = cam.LastFrame; } return(frame); }
public string GetRTSPUrl(string id, SimpleHttp.HttpProcessor p) { IPCameraBase cam = GetCameraById(id); if (cam == null || cam.cameraSpec.type != CameraType.h264_rtsp_proxy) { return(""); } cam.ImageLastViewed = DateTime.Now; if (!cam.isRunning) { cam.Start(); int timesWaited = 0; Thread.Sleep(50); while (timesWaited++ < 50) { Thread.Sleep(20); } cam.ImageLastViewed = DateTime.Now; } H264Camera h264cam = (H264Camera)cam; return("rtsp://" + h264cam.access_username + ":" + h264cam.access_password + "@$$$HOST$$$:" + cam.cameraSpec.h264_port + "/proxyStream"); }