Example #1
0
        /// <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);
        }
Example #2
0
        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");
        }