/// <summary>
/// 获取视频采集设备列表
/// </summary>
private void GetCameraList()
{
try
{
videoDeviceCoolection = new FilterInfoCollection(FilterCategory.VideoInputDevice);
if (videoDeviceCoolection.Count == 0)
{
throw new ApplicationException();
}
DeviceExits = true;
foreach (FilterInfo item in videoDeviceCoolection)
{
comboBoxDevices.Items.Add(item.Name);
}
comboBoxDevices.SelectedIndex = 0;
}
catch (ApplicationException)
{
DeviceExits = false;
MessageBox.Show("Not Find VedioDevice!");
}
}
/// <summary>
/// 播放视频帧
/// </summary>
/// <param name="sender"></param>
/// <param name="eventArgs"></param>
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bit = (Bitmap)eventArgs.Frame.Clone();
pictureBox1.Image = bit;
pictureBox1.Refresh();
}
/// <summary>
/// 播放采集的视频
/// </summary>
private void PlayVideo()
{
videoDevice = new VideoCaptureDevice(videoDeviceCoolection[comboBoxDevices.SelectedIndex].MonikerString);
videoDevice.NewFrame += new NewFrameEventHandler(video_NewFrame);
videoDevice.DesiredFrameSize = new Size(pictureBox1.Width,pictureBox1.Height);
videoDevice.Start();
}
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bit = (Bitmap)eventArgs.Frame.Clone();
Bitmap cloned = (Bitmap)(bit.Clone());
GC.Collect();
pictureBox1.Image = bit;
// Thread resultThread = new Thread(new ThreadStart(GetResult));
Thread resultThread = new Thread(new ThreadStart(delegate { GetResult(cloned); }));
resultThread.Start();
//resultThread.Start((Bitmap)bit.Clone());
//GetResult(cloned);
//GetResultDelegate re = GetResult;
//IAsyncResult result = re.BeginInvoke(cloned, null, null);
//Thread th = new Thread(new ParameterizedThreadStart(GetResult));
//th.Start(bit);
}