Example #1
0
        /// <summary>
        /// 检查是否有视频设备
        /// </summary>
        /// <returns></returns>
        public bool CheckWebcamExist()
        {
            byte[] lpszName = new byte[100];
            byte[] lpszVer  = new byte[100];
            VideoAPI.capGetDriverDescription(0, lpszName, 100, lpszVer, 100);

            caphwnd = VideoAPI.capCreateCaptureWindow(lpszName, VideoAPI.WS_CHILD | VideoAPI.WS_VISIBLE, 0, 0, this.width, this.height, this.controlhwnd, 1);

            if (caphwnd == null)
            {
                return(false);
            }

            int  index     = 0;
            bool isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0);

            while (!isconnect)
            {
                isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0);
                if (++index <= 10)
                {
                    continue;
                }
            }
            if (isconnect == false)
            {
                VideoAPI.CloseHandle(caphwnd);
                return(false);
            }
            else
            {
                VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_DISCONNECT, 0, 0);
                return(true);
            }
        }
Example #2
0
        /// <summary>
        /// 启动视频设备
        /// </summary>
        /// <returns></returns>
        public bool StartWebcam()
        {
            byte[] lpszName = new byte[100];
            byte[] lpszVer  = new byte[100];
            VideoAPI.capGetDriverDescription(0, lpszName, 100, lpszVer, 100);

            caphwnd = VideoAPI.capCreateCaptureWindow(lpszName, VideoAPI.WS_CHILD | VideoAPI.WS_VISIBLE, 0, 0, this.width, this.height, this.controlhwnd, 1);

            if (caphwnd == null)
            {
                return(false);
            }

            //解决在Win7系统下摄像头获取不到问题
            int  index     = 0;
            bool isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0);

            while (!isconnect)
            {
                isconnect = VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0);
                if (++index <= 10)
                {
                    continue;
                }
            }
            if (isconnect == false)
            {
                VideoAPI.CloseHandle(caphwnd);
                return(false);
            }

            if (VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_SET_PREVIEWRATE, 66, 0) == false)
            {
                return(false);
            }

            if (VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_SET_PREVIEW, true, 0) == false)
            {
                return(false);
            }

            if (VideoAPI.SendMessage(caphwnd, VideoAPI.WM_CAP_SET_SCALE, 1, 0) == false)
            {
                return(false);
            }

            isstart = true;
            return(true);
        }