Silverlight 里获取摄像头视频

Silverlight 里获取摄像头视频很简单

 

private CaptureSource cs = new CaptureSource();  //提供用来处理来自关联捕获设备的特定音频或视频捕获的方法

  public MainPage()
  {
   // 为初始化变量所必需
   InitializeComponent();
            Loaded += new RoutedEventHandler(MainPage_Loaded);  //xaml 页面加载事件

           //CaptureImageCompleted  事件提供用来处理来自关联捕获设备的特定音频或视频捕获的方法 , 也就是视频抓图时触发的时间
            cs.CaptureImageCompleted += new EventHandler<CaptureImageCompletedEventArgs>(cs_CaptureImageCompleted);
  }

        void cs_CaptureImageCompleted(object sender, CaptureImageCompletedEventArgs e)
        {
             imgCapture.Source = e.Result;  // imgCapture 是指一个图片类 ,  e.Result 是指当触发抓屏事件时捕获的摄像头的那帧图片
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {

            VideoCaptureDevice vcDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice(); //返回表示客户端系统上的默认视频捕获设备的 VideoCaptureDevice 对象
            cs.VideoCaptureDevice = vcDevice;  //VideoCaptureDevice 描述视频捕获设备(如网络摄相机)需要的和支持的视频格式信息
            VideoBrush vb = new VideoBrush();  //使用视频内容绘制一个区域
            vb.SetSource(cs);  //使用媒体文件或视频捕获设置 VideoBrush 的源
            rc1.Fill = vb; //rc1 是一个矩形 , 这句是指用矩形来显示视频
        }

        private void btnStart_Click(object sender, System.Windows.RoutedEventArgs e)
        {

           //弹出对话框询问用户是否允许开启视频 , 也就是让用户授权视频启动
            if (CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess())
            {
                cs.Start();//开始视频
            }
        }

        private void btnStop_Click(object sender, System.Windows.RoutedEventArgs e)
        {
         //暂停视频
          cs.Stop();
  }

        private void btnCapture_Click(object sender, System.Windows.RoutedEventArgs e)
        {
         //抓屏
            if (cs.State == CaptureState.Started)
            {
                cs.CaptureImageAsync();
            }
        }

posted on 2012-02-20 11:37  多个马甲  阅读(339)  评论(0编辑  收藏  举报