Detect camera connected / disconnected C #

0

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

    
asked by Rastalovely 27.02.2017 в 17:45
source

0 answers