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();
}
}