Entradas con tag ‘video’

Acceder a webcam y micrófono con HTML5

Publicado el: 6 comentarios

En este artículo te expondré una de las características de HTML5 más potentes: la capacidad de acceder a dispositivos como webcam y micrófono. El ejemplo que usaré es uno de los que expuse en uno de mis seminarios y que forma parte de los ejemplos de HTML5 y CSS3 para descargar aunque explicado en detalle.

Ver ejemplo completo

Funciona 100% en Chrome

El ejemplo pretende que recojamos el audio y vídeo de nuestro dispositivo y los mostremos en un elemento video de HTML5. No es demasiado práctico pero servirá para comprender el funcionamiento. La única estructura necesaria en HTML es la siguiente:


<!DOCTYPE html>
<html>
 <head>
 <title>getUserMedia</title>
 <meta charset="utf8">
 </head>
 <body>
 <!-- En este objeto vídeo reproduciremos lo que vayamos grabando -->
 <video autoplay></video>

</body>

</html>

Acceso a dispositivos con HTML5

HTML5 nos permite acceder, siempre que el navegador lo permita, a dispositivos como webcam y micrófono a través del método getUserMedia. Antes de nada tendremos que comprobar la compatibilidad del navegador:


//Comprobamos la compatibilidad de nuestro navegador con User Media
 if (tieneUserMedia()) {
 console.log("Ok, el navegador soporta UserMedia");
 } else {
 throw new Error('Mala suerte: getUserMedia() no está soportado en tu navegador. ¿Conoces Chrome?');
 }

//Comprueba los diferentes motores que dan soporte
 function tieneUserMedia() {
 return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);
 }

Como ves comprobamos que cada motor (webkit, microsoft, gecko) puede tener su propio método getUserMedia. Para evitarnos duplicar código definimos que navigator.getUserMedia sea igual al getUserMedia que exista en este navegador:

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
 navigator.mozGetUserMedia || navigator.msGetUserMedia;

Perfecto, ahora pedimos acceso al dispositivo:

</pre>
if (navigator.getUserMedia) {
 //Le pasamos un array con video y/o audio para acceder a webcam y micro respectivamente. Después una
 //función que se ejecutará a modo de callback y otra a modo de fallback.
 navigator.getUserMedia({video: true, audio: true}, exito, error);
 //Llámamos getUserMedia, pedimos acceso a vídeo. Si tenemos éxito llamamos una función y si no lanzamos un error.
 } else {
 error();
 }

Veamos en detalle la estructura de getUserMedia: “navigator.getUserMedia({dispositivo: verdadero o falso}, función en caso de éxito, función en caso de error)”

En caso de éxito la función recibe un parámetro correspondiente al stream de video/audio recibido a través de nuestros dispositivos. Nosotros lo convertiremos en un objeto URL y lo aplicaremos al atributo src de nuestro vídeo para que reproduzca:

window.URL = window.URL || window.webkitURL;

//Si soportamos getUserMedia y damos permiso, nuestro tag de video mostrará el stream que recogemos.
 //esta función recibe un parámetro que es el stream de video y/o audio recogido por los dispositivos.
 function exito(stream) {
 video.src = window.URL.createObjectURL(stream);
 }

//Nuestro error lanza un simple mensaje alert.
 function error(e) {
 throw new Error("No me dejaste mostrarte las maravillas de getUserMedia");
 }

Finalizamos creando la función para el error, ya sea porque algo salga mal o bien el usuario no de permiso a compartir el dispositivo.

Ver ejemplo completo

Funciona 100% en Chrome
VN:F [1.9.22_1171]
Valora esta entrada
Rating: 7.7/10 (6 votes cast)

Cortometraje de animación 3D: Hambuster

Navegando por The Awesomer me he encontrado con Hambuster un fabuloso corto de animación 3D. Aunque es una típica historia sobre hamburguesas antropófagas, tiene increíbles efectos y un excelente desarrollo por lo que ha sido galardonado con el Best Student Project Imagina 2011.

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 9.0/10 (3 votes cast)

Un corto de animación espectacular: Salesman Pete

Publicado el: 2 comentarios

Este corto combina tecnología 3D y 2D en su animación. Tiene un ritmo muy rápido y unos efectos impactantes, además de un tema totalmente surrealista.

Muy recomendable.

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 9.0/10 (1 vote cast)