Hello everyone, how can I detect when my web camera goes from connected to disconnected and vice versa, I am using C #, with the Aforge driver and the following source code:
using System.IO;
using System.Drawing.Imaging;
using AForge.Video;
using AForge.Video.DirectShow;
public Form1()
{
InitializeComponent();
BuscarDispositivos();
}
private bool ExistenDispositivos = false;
private FilterInfoCollection DispositivosDeVideo;
private VideoCaptureDevice FuenteDeVideo = null;
private void btnIniciar_Click(object sender, EventArgs e)
{
if (btnIniciar.Text == "Iniciar")
{
if (ExistenDispositivos)
{
FuenteDeVideo = new VideoCaptureDevice(DispositivosDeVideo[cboDispositivos.SelectedIndex].MonikerString);
FuenteDeVideo.NewFrame += new NewFrameEventHandler(video_NuevoFrame);
FuenteDeVideo.Start();
btnIniciar.Text = "Detener";
cboDispositivos.Enabled = false;
}
else
MessageBox.Show("Error: No se encuentra dispositivo.");
}
else
{
if (FuenteDeVideo.IsRunning)
{
TerminarFuenteDeVideo();
btnIniciar.Text = "Iniciar";
cboDispositivos.Enabled = true;
}
}
}
public void CargarDispositivos(FilterInfoCollection Dispositivos)
{
for (int i = 0; i < Dispositivos.Count; i++)
cboDispositivos.Items.Add(Dispositivos[i].Name.ToString()); //cboDispositivos es nuestro combobox
cboDispositivos.Text = cboDispositivos.Items[0].ToString();
}
public void BuscarDispositivos()
{
DispositivosDeVideo = new FilterInfoCollection(FilterCategory.VideoInputDevice);
if (DispositivosDeVideo.Count == 0)
ExistenDispositivos = false;
else
{
ExistenDispositivos = true;
CargarDispositivos(DispositivosDeVideo);
}
}
public void TerminarFuenteDeVideo()
{
if (!(FuenteDeVideo == null))
if (FuenteDeVideo.IsRunning)
{
FuenteDeVideo.SignalToStop();
FuenteDeVideo = null;
}
}
private void video_NuevoFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap Imagen = (Bitmap)eventArgs.Frame.Clone();
pbFotoUser.Image = Imagen;
}
Note: It should not necessarily be Aforge, it can be any other SDK