Hola gente bueno les comento cual es mi idea.
Tengo el siguiente programa en VB con el cual ago la caputra de mi web cam en tiempo real.
FROM
Option Explicit
Dim temp As Long
' botón que inicia la captura
'''''''''''''''''''''''''''''''''''''''
Private Sub Command1_Click()
Dim temp As Long
hwdc = capCreateCaptureWindow("CapWindow", ws_child Or ws_visible, _
0, 0, 320, 240, Picture1.hwnd, 0)
If (hwdc <> 0) Then
temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
temp = SendMessage(hwdc, WM_CAP_SET_SCALE, True, 0)
'esto hace que la imagen recibida por el dispositivo se ajuste
'al tamaño de la ventana de captura (justo lo que yo buscaba)
DoEvents
startcap = True
Else
MsgBox "No hay Camara Web", 48, "Error"
End If
End Sub
' botón para detener la captura
'''''''''''''''''''''''''''''''''''''''
Private Sub Command2_Click()
temp = DestroyWindow(hwdc)
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
DoEvents
startcap = False
End If
End Sub
' Botón que abre el dialogo de formato
''''''''''''''''''''''''''''''''''''''''''''
Private Sub Command3_Click()
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&)
DoEvents
End If
End Sub
' Mostrar dialogo de Configuracion de la WebCam
''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Command4_Click()
Dim temp As Long
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DLG_VIDEOCONFIG, 0&, 0&)
DoEvents
End If
End Sub
Private Sub Form_Load()
Command1.Caption = "Iniciar"
Command2.Caption = "Detener"
Command3.Caption = "Formato"
Command4.Caption = "Configurar"
Me.Caption = "Capturador de Web Cam"
End Sub
Private Sub Form_Resize()
On Error Resume Next
Move (Screen.Width - Width) \ 29, (Screen.Height - Height) \ 29
End Sub
Private Sub Form_Unload(Cancel As Integer)
temp = DestroyWindow(hwdc)
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
DoEvents
startcap = False
End If
End Sub
MODULE
Option Explicit
' declaraciones Api, constantes, variables
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Const ws_child = &H40000000
Public Const ws_visible = &H10000000
Public Const WM_USER = 1024
Public Const wm_cap_driver_connect = WM_USER + 10
Public Const wm_cap_set_preview = WM_USER + 50
Public Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Public Const WM_CAP_DRIVER_DISCONNECT = WM_USER + 11
Public Const WM_CAP_DLG_VIDEOFORMAT = WM_USER + 41
Public Const WM_CAP_DLG_VIDEOCONFIG = WM_USER + 42
Public Const WM_CAP_SET_SCALE = WM_USER + 53
'Api para crear la ventana de captura
Public 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
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
'Solo 16 Bits (vb2, vb3 y vb4 de 16)
'Declare Function SendMessage Lib "User" ( _
ByVal hWnd As Integer, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
lParam As Any) As Long
'Api para crear la ventana de captura
'Declare Function capCreateCaptureWindow Lib "avicap.dll" ( _
ByVal lpszWindowName As String, _
ByVal dwStyle As Long, _
ByVal x As Integer, _
ByVal y As Integer, _
ByVal nWidth As Integer, _
ByVal nHeight As Integer, _
ByVal hwndParent As Integer, _
ByVal nID As Integer) As Long
'Declare Function DestroyWindow Lib "User" (ByVal hndw As Integer) As Integer
Public hwdc As Long
Public startcap As Integer
Bueno con esto tengo algo o una idea, pero lo que quiero hacer es poner esto en mi web, osea poder entrar en cualquier maquina y ver que sucede en mi casa o donde apunte mi webcam. Similar a un sistema de vigilancia.
Ahora bueno como ago para mandar esto a un servidor? debere usar socket?
No se si me explico bien, puede ser tambien q este codigo no me sirva, ya que enrealidad lo de tiempo real no sirve, tendria que ser como fotos o capturas de imagenes guardarlas y enviarlas, y hacer un refresh en la web y que vaya actualizadon, creo que es lo mas correcto. pero no se estoy medio en las nueves son nuevo en la prog.
Mas que nada este post esta destinado a que me den sugerencias, e ideas, de por donde encarar el problema.
Desde ya gracias.
Aca dejo lo q seria el codigo en html para la visualizacion de la cam.
<HTML>
<HEAD>
<TITLE>Webcam</TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="30">
</HEAD>
<BODY>
<IMG SRC="ImagesWebCam.gif">
<FONT FACE=Verdana SIZE=6 COLOR=#0011AA><B>Actualizacion cada minuto</B></FONT><BR><BR>
<FONT FACE=Verdana SIZE=2 COLOR=#9911AA><B>viendo nuestra vida en directo.</B></FONT><BR><BR>
<CENTER><IMG SRC="(aqui ira la ruta de la imagen la cual se refrescara cada minuto)">&" BORDER=1></CENTER><BR>
<CENTER><HR WIDTH=75% HEIGHT=2px COLOR=#0011AA></CENTER><BR>
</BODY>
</HTML>
Saludos
.
Debes usar Sockets en un puerto X
Saber manejar los Header del protocolo HTTP
Saber como convertir Onthe Fly (preferiblemente) el hDC a JPG o BMP segun desees y mandar la captura (por hay en mi disco duro tenia un codigo alrato lo busco y te lo pongo es de hDC a BMP, ya despues toca a usar algunas cosillas como GDI++ para convertirla a otro formato, me aprece que LeandroA hizo algo asi!¡.)
En codigo del HTML ponerle un Refresh X Tiempo [ <meta http-equiv="refresh" content="5; url=http://infrangelux.sytes.net/"> ]
Para haci realizar la nueva peticion de la captura X y mandarla por el protocolo HTTP:
y esto seria "On The Fly" es decir sin Tocar el HD.
Esto que te digo es par ano instalar el APACHE o algun Soft para uns ervidor Web, aun que tambien podrias usar algun servidor web y solo guardar la imagen en alguna carpeta X... pero es mejor el metodo que te menciono arriba (en lo personal).
Dulces Lunas!¡.
Gracias BZX por tu respuesta, osea haber si me a quedado claro el metod, lo q decis es q tendria que hacer capturas com mi cam de determidados tiempos ejemplo cada 30 seg y comvertir esta en un archivo JPG, la comvercion a JPG tengo un codigo ya por ahi en algun lugar de mi maquina jeje, tendria q usar sockets? para mandar esto a un servidor, tengo un host creado supongo q puede servir? o no? corregime si me equivoco. pero la la idea esta, es tener algun servicio donde pueda guardar estas capturas, otra cosa tmb seria guardar la nueva captura en la anterior (ir sobreescribiendola). y realizar el refresh correspondiente para ir actualizando.
PD: lo del host no estoy totalmente seguro, y creo estar mandando cualquier verdura. o por ahi no
El tema es q ahora q lo pienso un poco mejor tengo varios datos q poner como mi user y pass. y esas cosas. y esto no va con lo que seria sockets. Puede ser?
Saludos
.
Mi idea es solo Tomar una captura cada vez que se visite la pagina, y el programa SOLO y UNICAMENTE va a Tomar capturas en cada peticion y te las mandara por Socket con el Protocolo HTTP.
Por otro lo que dices de que tome cada X tiempo y los ponga en una carpeta pues es otra alternativa no te la recomiendo ya que no le veo caso el que trabaje la WebCam cuando no se nesesita, por ello el metodo independiente TODO EN EL EXE sin depender de uns ervidor Web u otros Soft es mejor!¡.
Por dejarlo mas claro:
Tu haces el programa con Sockets y el protocolo HTTP
El ejecutable final SIMPLE no te pesara mas de 200 kb's seguro es mas no creo que ni llegue a 100kb's y ademas el rendimiento y Optimizacion serian muchisimo mejor
Por otro lado si tomas Cada X tiempo y guardas la Imagen en el HD, instalas un servidor Web, lo configuras, etc... el rendimiento y su optimización es de lo peor ya que Tu WebCam trabajaria en momentos que nadie utilizaria es decir se puede quedar tomando 24/7 en todo el año una captura y en esas miles de capturas solo viste digamos 42... no es apropiado no crees xP
El metodo que te doy es que solo en cada visita tomara una captura y te la enviaria y sin tocar el HD bueno eso si lo haces asi!¡.
Dulces Lunas!¡.
Bueno amigo aca te dejo un ejemplo que me descargue hace mucho y lo tengo en li libreria espero que te sirva porque es exactamente lo que intentas de hacer sin servidor ni menos.
http://www.filefront.com/17296676/WebCam Online en Web.zip (http://www.filefront.com/17296676/WebCam%20Online%20en%20Web.zip)
El programa posee un webserver propio en la misma aplicacion con lo cual con ese programa simplemente lo abres ingresas la url en tu buscar y wala...
Espero que te sirva de ejemplo ya que es una idea de 10...
Salu2
Ranslsad!
Cita de: ranslsad en 17 Septiembre 2010, 14:30 PM
Espero que te sirva de ejemplo ya que es una idea de 10...
Yo creo que en si es totalmente todo lo que el requiere...! No necesita mas...! Acabo de testearlo y funciona perfectamente bien...!
.
si eso fue todo...
Dulces Lunas!¡.