none
web cam video RRS feed

  • Pregunta

  • Hola amigo necesito mostrar un video de  la misma web cam en dos componentes en el mismo form como puedo hacerlo puede ser en un videosourceplayer utilizando Aforge o en un picturebox me da igual
    jueves, 7 de junio de 2018 20:20

Respuestas

  • Buenas,

    Con esta linea

    FuenteDeVideo.NewFrame += new NewFrameEventHandler(VideoSource_NewFrame1);

    Es con la que estas asociando que pasa al recibir una nueva imagen, podrias poner el codigo del metodo "VideoSource_NewFrame1",seguramente en el, asignes la imagen a un picturebox, se trata de asignarlo a dos en vez de a 1

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta jlpavon1987 jueves, 7 de junio de 2018 21:06
    jueves, 7 de junio de 2018 20:54
  • Que control estas usando? picturebox o alguno de Aforge?

    En cualquier caso, creo que estas haciendo un llamada no segura, ya que el evento lo dispara un thread diferente al que creo los controles, prueba asi:

    try
    {
        Bitmap Imagen = (Bitmap)eventArgs.Frame.Clone();
        this.Invoke(new MethodInvoker(()=>
        {
            vcplayer.BackgroundImage = Imagen;
            vsource_Zoom1.BackgroundImage = CropImage(Imagen, section);
        }));
    }
    catch (Exception ex)
    {
        throw ex;
    }

    Si no me he equivocado en el codigo, si cambias tu codigo por ese, no deberia pasar el problema que tienes. El codigo que te he puesto lo que hace es invocar la asignacion de manera segura, haciendo que sea threadSafe. Por como trabaja el servidor de ventanas de windows, solo se puede acceder a un control desde el hilo que lo crea, el hilo que crea ese visualizador es el main (o eso supongo), y el hilo que lo modifica es uno interno de el control de cam.

    Prueba el cambio que te he puesto y nos comentas como te va

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta jlpavon1987 viernes, 8 de junio de 2018 12:01
    jueves, 7 de junio de 2018 22:29

Todas las respuestas

  • Buenas,

    Como obtienes las imagenes de la cam? como video o como imagenes? Si lo haces por imagenes (que supongo como es), simplemente cuando te llegue una nueva, la pones en los 2 controles.

    Pon el tramo de codigo donde controlas lo de la web cam y lo miramos mas en profundidad

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    jueves, 7 de junio de 2018 20:35
  • Cargo las web cam k tenga conectadas en un comobox y en un boton las conecto o deconecto asi

     private void btn_vc1_Click(object sender, EventArgs e)
            {
                try
                {
                    string monike = DispositivosDeVideo[cmb_Video1.SelectedIndex].MonikerString;
                    monike1 = monike;
                    VideoCaptureDevice FuenteDeVideo = null;
                    for (int i = 0; i < DispositivosDeVideo.Count; i++)
                    {
                        if (DispositivosDeVideo[i].MonikerString == monike)
                        {
                            FuenteDeVideo = new VideoCaptureDevice(DispositivosDeVideo[i].MonikerString);
                        }
                    }
                    FuenteDeVideo.NewFrame += new NewFrameEventHandler(VideoSource_NewFrame1);
                    videoSourcePlayer1.VideoSource = FuenteDeVideo;
                    //Inicializar el control
                    videoSourcePlayer1.Start();                
                    led1.Value = true;
                    btn_vc1.Enabled = false;
                    btn_vd1.Enabled = true;
                }
                catch (Exception ex)
                {

                    throw ex;
                }
            }      

    jueves, 7 de junio de 2018 20:46
  • Buenas,

    Con esta linea

    FuenteDeVideo.NewFrame += new NewFrameEventHandler(VideoSource_NewFrame1);

    Es con la que estas asociando que pasa al recibir una nueva imagen, podrias poner el codigo del metodo "VideoSource_NewFrame1",seguramente en el, asignes la imagen a un picturebox, se trata de asignarlo a dos en vez de a 1

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta jlpavon1987 jueves, 7 de junio de 2018 21:06
    jueves, 7 de junio de 2018 20:54
  • Ya me salio pero ahora lo k me pasa es que el segundo componente donde duplico la imagen es mucho mas grande k el primero por cuestiones de diseño y no hace como de cargar la imagen y no sale me salen 2 rayas cruzadas rojas como si fuera un x . hay alguna manera de decirle k se ajuste al nuevo tamaño del componente es k creo k es eso lo k sucede. Este es el evento de NewFrame1 k te puse arriba. vcplayer es el 2 componente que te digo que es muy grande y vsource_Zoom1 es un recorte de la imagen del componente original por asi decirlo de video es decir k tengo el video original, el ampliado(vcplayer), y el recortado(vsource_Zoom1).. Espero k me entiendas

    private void VideoSource_NewFrame1(object sender, NewFrameEventArgs eventArgs)
            {
                try
                {
                    Bitmap Imagen = (Bitmap)eventArgs.Frame.Clone();
                    vcplayer.BackgroundImage = Imagen;
                    vsource_Zoom1.BackgroundImage = CropImage(Imagen, section);
                }
                catch (Exception ex)
                {

                    throw ex;
                }

            }

    jueves, 7 de junio de 2018 21:12
  • Que control estas usando? picturebox o alguno de Aforge?

    En cualquier caso, creo que estas haciendo un llamada no segura, ya que el evento lo dispara un thread diferente al que creo los controles, prueba asi:

    try
    {
        Bitmap Imagen = (Bitmap)eventArgs.Frame.Clone();
        this.Invoke(new MethodInvoker(()=>
        {
            vcplayer.BackgroundImage = Imagen;
            vsource_Zoom1.BackgroundImage = CropImage(Imagen, section);
        }));
    }
    catch (Exception ex)
    {
        throw ex;
    }

    Si no me he equivocado en el codigo, si cambias tu codigo por ese, no deberia pasar el problema que tienes. El codigo que te he puesto lo que hace es invocar la asignacion de manera segura, haciendo que sea threadSafe. Por como trabaja el servidor de ventanas de windows, solo se puede acceder a un control desde el hilo que lo crea, el hilo que crea ese visualizador es el main (o eso supongo), y el hilo que lo modifica es uno interno de el control de cam.

    Prueba el cambio que te he puesto y nos comentas como te va

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta jlpavon1987 viernes, 8 de junio de 2018 12:01
    jueves, 7 de junio de 2018 22:29
  • Deleted
    jueves, 7 de junio de 2018 22:52
  • Me funciono como dijistes ahora lo k pasa es que me rellena el componente de aforge que utilizo para mostrar el video con muchos cuadros del video es como k le keda muy grande el componente y lo que hace es rellenarlo hay alguna propiedad para eso ??
    viernes, 8 de junio de 2018 12:01
  • Me funciono como dijistes ahora lo k pasa es que me rellena el componente de aforge que utilizo para mostrar el video con muchos cuadros del video es como k le keda muy grande el componente y lo que hace es rellenarlo hay alguna propiedad para eso ??

    yaya ya resolvi muchas gracias por tu ayuda ya me has sacado del apuro en otra ocasion es bueno que este forum cuente con persona como tu muchas gracias
    viernes, 8 de junio de 2018 12:16
  • Me funciono como dijistes ahora lo k pasa es que me rellena el componente de aforge que utilizo para mostrar el video con muchos cuadros del video es como k le keda muy grande el componente y lo que hace es rellenarlo hay alguna propiedad para eso ??

    yaya ya resolvi muchas gracias por tu ayuda ya me has sacado del apuro en otra ocasion es bueno que este forum cuente con persona como tu concisas y claras muchas gracias
    viernes, 8 de junio de 2018 12:18