1
« en: Viernes 1 de Junio de 2007, 13:33 »
Buenas a todos.
Estoy trabajando con una webcam en visual basic .net. Mi idea es tomar una secuencia de imágenes de la cámara y enviarla a través de internet a otra aplicación que la muestre, en ambos sentidos (vamos una videoconferencia).
Para trabajar con la cámara uso avicap32. Ya he conseguido tomar las imágenes de la cámara y guardarlas en un archivo (enviarlas a la otra aplicación mediante una conexión con sockets ahora no me preocupa...). Mis problemas son los siguientes:
- Independientemente del framerate que establezca, tan sólo consigo que me capture / guarde en disco unas 8 imágenes por segundo. He probado sin guardar las imágenes (vamos, ver cuantas veces se llama a la función callback al capturar una nuev imagen) y el resultado es similar. ¿Puede deberse a limitaciones de la webcam? ¿de vb.net? ¿de windows?
- Me preocupa el tamaño de las imágenes. Actualmente, la cámara me devuelve un DIB en una estructura VIDEOHDR en memoria. Lo guardo como un BitMap comprimido en JPEG. Capturando a un tamaño de 176x144 cada imagen ocupa aproximadamente 2.5 Kbytes. Con un framerate de 8 fps, necesito un ancho de banda sólo para el vídeo de aprox. 20KB/s. Casi todo el mundo tiene una conexión a internet con una velocidad de subida de como mucho 320 Kbps (lo que vienen a ser unos 40KBytes/seg), en condiciones óptimas. ¿Hay alguna manera de preveer esto? ¿Puedo conseguir imágenes menos pesadas sin sacrificar calidad (la verdad es que ese tamaño ya me parece muy pequeño...). Cuando envíe también el audio con una calidad decente, mi aplicación va a "devorar" mucho ancho de banda de subida, y esto me preocupa....
Gracias por vuestra ayuda.
Saludos