问题描述
我正在使用Aforge Video访问我的计算机的相机。可以正常工作的东西现在是我的问题,是另一个应用程序首先使用相机时。即使摄像机被其他应用程序使用,Aforge Video的Start()方法也不会失败。有没有办法检查AForge Video中是否已经使用了相机?
解决方法
这是我为解决此问题而实施的解决方法:
private async void StartCameraAsync()
{
if (SFilterInfo != null)
{
VideoCaptureDevice = new VideoCaptureDevice(SFilterInfo.MonikerString);
VideoCaptureDevice.NewFrame += new NewFrameEventHandler(VideoCaptureDevice_NewFrame);
VideoCaptureDevice.Start();
await Task.Delay(1000);
//Set false when video started
IsImageGrab =false;
}
}
private void VideoCaptureDevice_NewFrame(object sender,NewFrameEventArgs eventArgs)
{
try
{
//Set true so that you will know that images in the camera is received
IsImageGrab = true;
System.Drawing.Image img = (Bitmap)eventArgs.Frame.Clone();
MemoryStream ms = new MemoryStream();
img.Save(ms,ImageFormat.Bmp);
ms.Seek(0,SeekOrigin.Begin);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
bi.Freeze();
}
catch (Exception ex)
{
}
}