elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Como transmitir webcam desde un server a su cliente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Como transmitir webcam desde un server a su cliente  (Leído 38,101 veces)
goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Como transmitir webcam desde un server a su cliente
« en: 18 Junio 2005, 10:52 am »

Ya saben a que me refiero.. una aplicacion cliente-servidor.
Pero en particular me gustaria que postearan algunas teorias sobre como transmitir especificamente video de la webcam al cliente remoto, digamos que en tiempo real.


« Última modificación: 18 Junio 2005, 10:57 am por CrackelDestripador » En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #1 en: 18 Junio 2005, 12:09 pm »

Existe una librería que se llama AVICAP32.DLL que contiene las funciones de multimedia del sistema y que, entre otras cosas, te permite controlar la webcam.

Esta librería tiene la función capCreateCaptureWindow que crea una ventana dentro de otra (ventana padre) para enviar las imágenes tomadas por la webcam y devuelve el controlador de ventana (hWnd).

Para implementarla es muy sencillo, se crea un PictureBox y luego se llama a esta función pasandole como argumento hWndParent (ventana padre) en controlador de ventana del PictureBox. Por ej:


Código:

Const RES_X = 680  'Resolución horizontal
Const RES_Y = 480  'Resolución vertical

Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long

Private hWndCap As Long

Private Sub Form_Load()
  'NOTA: picCapFrame es el nombre de un control PictureBox.
  '


  'Crea la ventana a la que se enviarán las imágenes de la cam.
  '
  hWndCap = capCreateCaptureWindow(vbNullString,0,0,0, RES_X, RES_Y, picCapFrame.hWnd, 0)
End Sub

Luego queda utilizar la función SendMessage para enviarle los mensajes a la ventana que creamos (hWndCap ). Hay varios mensajes predefinidos que controlan las acciones de la webcam:

Código:
Const WM_CAP_CONNECT = 1034     'Conecta el dispositivo de captura.
Const WM_CAP_DISCONNECT = 1035  'Desconecta el dispositivo de captura.
Const WM_CAP_GET_FRAME = 1084   'Obtiene un frame desde el dispositivo.
Const WM_CAP_COPY = 1054        'Copia el frame capturado con WM_CAP_GET_FRAME al portapapeles.

Sabiendo esto se puede ir obteniendo frame por frame y enviando los datos en tiempo real con el control WinSock o usando la API de winsock, pero claro esto conlleva un consumo muy grande de ancho de banda y si el programa se ejecuta en una pc con conexión de 56k va a ser muy alevoso :P.

Por último, antes de descargar el programa debe llamarse a DestroyWindow para liberar el controlador de ventana.

Con esos datos creo que ya se puede empezar a probar, de lo contrario remitirse a google ;D. Igualmente dejo el link de MSDN que es de donde saqué toda la referencia de las funciones.

Windows Multimedia

Saludos.


En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #2 en: 19 Junio 2005, 09:24 am »

He usando un Timer, un Picture y dos Button para este ejemplo.
Nota: No lo documento suficientemente porque no se podría redundar en una exposición tan magistral como la anterior.
Cualquier sugerencia que optimize este code es bienvenida.

Código:
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean

Private Const CONNECT As Long = 1034
Private Const DISCONNECT As Long = 1035
Private Const GET_FRAME As Long = 1084
Private Const COPY As Long = 1054

Private hWndCap As Long

Private Sub START_WEBCAM_Button1_Click()
    hWndCap = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 160, 120, Me.hwnd, 0)
    DoEvents
    SendMessage hWndCap, CONNECT, 0, 0
    Timer1.Enabled = True
End Sub

Private Sub STOP_WEBCAM_Button2_Click()
    DoEvents: SendMessage hWndCap, DISCONNECT, 0, 0
    Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    'Obtiene frames para Picture1
    SendMessage hWndCap, GET_FRAME, 0, 0
    SendMessage hWndCap, COPY, 0, 0
    Picture1.Picture = Clipboard.GetData
    Clipboard.Clear
End Sub

Private Sub Form_Load()
    Timer1.Enabled = False
    Timer1.Interval = 1
End Sub

Private Sub Form_Unload(Cancel As Integer)
    DestroyWindow hWndCap
End Sub

A los interesandos en este hilo:
Publiquen code para transmitir los frames capturados de una forma óptima aunque se tratase de conexiones de 56Kb  ;)
« Última modificación: 18 Julio 2005, 09:31 am por CrackelDestripador » En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
p0w3r f1y

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #3 en: 19 Junio 2005, 20:45 pm »

Genial, esto me interesa bastante pero nunca me había puesto ha buscarlo... jeje, ya lo probaré y os cuento... Gracias.
Salu2.
En línea

p0w3r f1y

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #4 en: 19 Junio 2005, 20:50 pm »

ah, se me olvidaba, yo para transmitir imágenes utilizo un módulo que comprime en jpg, es lo que utilizaba para hacer un escritorio remoto y bueno, si le bajas la calidad a la imágen... puedes conseguir archivos de entre 10 y 20 kb con una calidad...... en fín... algo pobre, pero aceptable... pero al ser para una webcam el tamaño es mucho más pequeño (más pequeño que la resolución de la pantalla, que era lo que capturaba yo...) y podrías darle más calidad y conservarías el tamaño, eso intentaré hacer yo, ahora mismo no se de donde saqué el código pero si buscas por google Module JPEG Compressor visual basic, o algo así, seguro que lo encuentras (así lo encontré yo...)
Salu2
En línea

xadap
Visitante


Email
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #5 en: 28 Agosto 2005, 18:43 pm »

yo lo que ando buscando es meter la webcam en el usb y ver lo que la camara ve desde un programa en VB. sirve?

yo no consigo que me funcione ni un código ni otro. hay que hacer algo más? yo tengo una cam "easy point & click" de "best buy". tmb sirve como cámara digital, es de esas baratas de hace 3 años, pero no veo xk no va.
la libreria que tengo en c: \windows es de mayor tamaño que la de dll-files.com

En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #6 en: 29 Agosto 2005, 04:42 am »

Esos códigos trabajan a nivel de aplicación, es decir que lo que el sistema operativo haga internamente es ajeno a estas funciones. Por lo tanto si no funcionan es problema no del programa sino de la configuración del SO, quizá los drivers de la cam no están instalados correctamente o el sistema tiene algún conflicto con dicho hardware-

En cuanto a tu pregunta de si el código sirve o no, sí sirve.

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
xadap
Visitante


Email
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #7 en: 29 Agosto 2005, 19:14 pm »

oks gracias :)
al final he conseguido que la webcam funcionase jejej  han sido unos dias probando códigos de google y ha habido suerte. ya lo he adaptado a mi programa :D
En línea

Kizar


Desconectado Desconectado

Mensajes: 1.325


kizar_net


Ver Perfil
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #8 en: 14 Septiembre 2005, 15:08 pm »

Mientras se esta haciendo la captura de la imagen de la cam los demas programas no pueden aceder a la cam, por ejemplo el msn si k te permite verla con otros programas al mismo tempo, se os ocurre alguna solucion?
En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Como transmitir webcam desde un server a su cliente
« Respuesta #9 en: 15 Septiembre 2005, 01:47 am »

No se puede, el dispositivo de captura sólo puede ser abierto por una aplicación a la vez.

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Proyecto Transmitir Imagen a las TVs desde PC
Redes
CATBro 0 4,131 Último mensaje 12 Marzo 2011, 04:27 am
por CATBro
transmitir señal de tv abierta desde mi pc?
Dudas Generales
flacc 6 20,311 Último mensaje 28 Julio 2011, 18:51 pm
por Luna71c0
Tutorial Como Transmitir tus peliculas en HD justin-tv 2012! jholger482
Foro Libre
Weeken 0 5,287 Último mensaje 29 Junio 2012, 06:34 am
por Weeken
Transmitir una señal de TV en una red LAN ¿cómo? ME URGE
Redes
Platanito Mx 5 11,370 Último mensaje 7 Julio 2014, 18:17 pm
por Platanito Mx
C++ Winsockets como reconectar un cliente al server
Análisis y Diseño de Malware
Grado 33 8 5,644 Último mensaje 28 Agosto 2017, 16:33 pm
por dapz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines