domingo, 29 de noviembre de 2009

Cómo emitir imágenes con la webcam en tu página web con PHP

El procedimiento que voy a explicar va a consistir en la captura de imágenes de la webcam cada X segundos y la posterior subida de la imagen a un servidor mediante FTP.

La receta:
  • Yawcam (software para captura imágenes de la web cam)
  • Máquina virtual de java (para Yawcam, ya que está desarrollado en Java)
  • Servidor FTP.
  • Y por supuesto, PHP ;)

Una vez te hayas hecho con todo, hay que configurar en Yawcam el intervalo de las capturas cada 5 segundos (a tu gusto) y el acceso al FTP.

Si ha detectado correctamente tu webcam, accede a Configuración->Editar configuración->Salida->FTP

  • Tipo de archivo: JPG
  • Calidad: 30% (no pongas un valor muy alto para que el tamaño de la imagen no sea excesivo
  • Servidor FTP: mihosting.com
  • Puerto: normalmente 21
  • Usuario: miusuario
  • Contraseña: micontraseña
  • Directorio: /www/webcam (directorio absoluto)
  • Nombre de archivo: webcam.jpg (el archivo se sube cada 5 segundos y sobreescribe el actual, si actualizamos la página que muestra el archivo de captura cada 5 segundos, obtenemos una secuencia casi real por streaming)
  • Intervalo: 5 segundos (a tu gusto)

Bien, ya tenemos configurado el programa. Para activarlo, en el panel de control, FTP->Activar
Haz la prueba para ver si sube el archivo al servidor y se actualiza cada 5 segundos debidamente.

Ahora procederemos a crear el script PHP que se encargará de leer el archivo webcam.jpg y mostrarlo.

Aconsejo crear un archivo .htaccess en el directorio de las imagenes tomadas de la webcam sin permisos de lectura desde los clientes que intentan acceder al recurso donde se aloja el archivo webcam.jpg:

.htaccess

Order Deny,Allow
Deny from all
Options None
AllowOverride None

El siguiente script PHP va a leer el archivo webcam.jpg y lo va a devolver para insertarlo en una etiqueta img de html.

webcam.php

/**
* Aquí puedes incluir código para verificar si el cliente que está accediendo
* al recurso puede leer el archivo webcam.jpg o no
*/
$webcam = "webcam/webcam.jpg";
header("Content-Type: image/jpeg");
header("Content-Length: ".filesize($webcam));
readfile($webcam);

Ahora necesitamos el código html necesario para mostrar la imagen y que se actualice cada 5 segundos

webcam.html

<html>
<head>
<title>Probando webcam</title>
<!-- Le decimos al navegador que no almacene esta página en la caché -->
<meta http-equiv="Pragma" content="no-cache" />
<!-- No tiene fecha de expiración -->
<meta http-equiv="expires" content="-1" />
<!-- El navegador se refresca cada 5 segundos realizando peticiones una y otra vez a esta misma página para mostrar la imagen actualizada -->
<meta http-equiv="refresh" content="5" />
</head>
<body>
<img src="webcam.php" title="Sesión WebCam en directo" alt="Sesión WebCam en directo"/>
</body>
</html>

Y ya esta, es en esencia lo que necesitamos para poder emitir imágenes en semi-directo con nuestra webcam y verlas a través de nuestra página web.
Se puede elaborar de mejor forma dando acceso a usuarios registrados por ejemplo, para ello recurririamos a las variables de sesión para identificar si el usuario que solicita ver la webcam está logueado o no, pero bueno, eso os lo dejo a vosotros.

Espero os sea de utilidad.

2 comentarios:

  1. Gracias por la información..very good :-)

    ResponderEliminar
  2. hola que tal?
    yo recientemente instale yawcam y tengo una web recien en mi webs.com.
    La pregunta es como puedo ver desde otra pc, por ej en mi trabajo, lo que sucede en mi casa.
    Por favor si me lo explicas y sin tanto tecnisismo mejor je.
    Saludos atte.

    ResponderEliminar