Example #1
0
        /// <summary>
        /// 初始化视频捕捉器
        /// </summary>
        private void iniVideoCapturer()
        {
            canvasBitmap = new Bitmap(VideoSize.Width, VideoSize.Height);
            using (Graphics g = Graphics.FromImage(canvasBitmap))
                g.FillRectangle(Brushes.Bisque, 0, 0, canvasBitmap.Width, canvasBitmap.Height);

            gfx = cLocal.CreateGraphics();
            gfx.DrawImage(canvasBitmap, 0, 0, canvasBitmap.Width, canvasBitmap.Height);

            cam = new CamCapture();

            var deviceList = cam.GetDeviceList();                    //获得驱动列表

            selectedDeviceMetrics = cam.SelectDevice(deviceList[0]); //获得尺寸大小
            cam.SelectMetrics(selectedDeviceMetrics[0]);
            bool res = cam.Start();                                  //开始捕捉视频

            if (res == false)
            {
                //IMLibrary3.Global.MsgShow("没有可用的摄像头。");
            }
            metrics = cam.Metrics;//获得尺寸

            encoder           = new StreamCoders.Encoder.H264Encoder();
            encoder.Framerate = 11;
            encoder.SetInputResolution((uint)VideoSize.Width, (uint)VideoSize.Height);
            encoder.IFrameFrequency = 40;
            encoder.Bitrate         = 128000;
            encoder.PayloadType     = 103;
            res = encoder.Init();
            if (res == false)
            {
                //IMLibrary3.Global.MsgShow("无法初始化视频编码器。");
                return;
            }
            byte[] zeroBuffer = new byte[VideoSize.Width * VideoSize.Height * 3];
            byte[] initData   = encoder.EncodeToArray(zeroBuffer);

            decoder = new StreamCoders.Decoder.H264Decoder();
            decoder.SetInputResolution((uint)VideoSize.Width, (uint)VideoSize.Height);
            decoder.SetInputFrameRate(11);
            res = ((StreamCoders.Decoder.H264Decoder)decoder).Init(initData);
            if (res == false)
            {
                //IMLibrary3.Global.MsgShow("无法初始化视频解码器。");
                return;
            }

            timer1.Interval = (int)(1000.0 / 25);
            timer1.Start();
        }
Example #2
0
        /// <summary>
        /// 初始化视频捕捉器
        /// </summary>
        private void iniVideoCapturer()
        {
            canvasBitmap = new Bitmap(VideoSize.Width, VideoSize.Height);
            using (Graphics g = Graphics.FromImage(canvasBitmap))
                g.FillRectangle(Brushes.Bisque, 0, 0, canvasBitmap.Width, canvasBitmap.Height);

            gfx = cLocal.CreateGraphics();
            gfx.DrawImage(canvasBitmap, 0, 0, canvasBitmap.Width, canvasBitmap.Height);

            cam = new CamCapture();

            var deviceList = cam.GetDeviceList();//获得驱动列表
            selectedDeviceMetrics = cam.SelectDevice(deviceList[0]);//获得尺寸大小
            cam.SelectMetrics(selectedDeviceMetrics[0]);
            bool res = cam.Start();//开始捕捉视频
            if (res == false)
            {
                //IMLibrary3.Global.MsgShow("没有可用的摄像头。");
            }
            metrics = cam.Metrics;//获得尺寸

            encoder = new StreamCoders.Encoder.H264Encoder();
            encoder.Framerate = 11;
            encoder.SetInputResolution((uint)VideoSize.Width, (uint)VideoSize.Height);
            encoder.IFrameFrequency = 40;
            encoder.Bitrate = 128000;
            encoder.PayloadType = 103;
            res = encoder.Init();
            if (res == false)
            {
                //IMLibrary3.Global.MsgShow("无法初始化视频编码器。");
                return;
            } 
            byte[] zeroBuffer = new byte[VideoSize.Width * VideoSize.Height * 3];
            byte[] initData = encoder.EncodeToArray(zeroBuffer);

            decoder = new StreamCoders.Decoder.H264Decoder();
            decoder.SetInputResolution((uint)VideoSize.Width, (uint)VideoSize.Height);
            decoder.SetInputFrameRate(11);
            res = ((StreamCoders.Decoder.H264Decoder)decoder).Init(initData);
            if (res == false)
            {
                //IMLibrary3.Global.MsgShow("无法初始化视频解码器。");
                return;
            }

            timer1.Interval = (int)(1000.0 / 25);
            timer1.Start();
        }