Uso de dispositivos, accediendo a nuestra cámara webEn Silverlight, es posible capturar y mostrar contenido de audio y de vídeo de dispositivos multimedia, como cámaras web, sintonizadores de TV y micrófonos. Esto da lugar a diversos escenarios que pueden mejorar la experiencia del usuario con las aplicaciones de Silverlight. Algunos de estos escenarios son la captura y la presentación de imágenes, la carga de imágenes de perfil en aplicaciones de redes sociales, el correo y las agendas de vídeo y de audio, la toma de notas de audio, las cámaras de seguridad, la realidad aumentada y los movimientos corporales. Clases para trabajo con DispositivosA continuación se muestran algunas de las clases más relevantes para el uso de dispositivos de audio y video en Silverlight. Aquí podemos encontrar modos de enumerar los dispositivos disponibles en nuestro sistema para poder hacer uso de ellos, al igual de encontrar modos de acceso a los dispositivos por defecto en el sistema. Deberemos tener en cuenta a la hora de trabajar con ellos que si intentamos acceder a algún dispositivo que no ha sido marcado por defecto, al inicializarlo podemos obtener una excepción que deberemos controlar.
Listado de clases de trabajo con dispositivos de audio y video Ejemplo de usoVeamos de un modo práctico cómo hacer uso de estas clases en una aplicación que enumere los dispositivos de video instalados en el sistema y que nos permita iniciarlos de modo que podamos hacer uso de la cámara web de nuestro sistema. Para ello comenzaremos diseñando una interfaz sencilla que contenga un ComboBox donde enumeraremos los dispositivos de video instalados, dos botones que nos permitan iniciar y detener los dispositivos y un rectángulo en el que dibujaremos la salida de video de la cámara web. Diseñaremos una interfaz como lo que se muestra a continuación.
Para llevar a cabo esto haremos uso del código XAML que mostramos a continuación:
Una vez realizado esto pasaremos a introducir el código necesario para que nuestra aplicación pueda hacer uso de los dispositivos del sistema. Comenzaremos declarando un campo privado del tipo CaptureSource.
A continuación introduciremos el código necesario para rellenar el ComboBox con los dispositivos de Video del sistema haciendo uso de la clase CaptureDeviceConfiguration. A continuación inicializaremos nuestra fuente de captura que habíamos declarado antes. Recuperamos el dispositivo de captura de audio y video por defecto del sistema y lo asignamos a nuestra fuente de captura. Por último creamos una brocha de video que se encargará de dibujar en nuestro rectángulo la fuente de video que nos muestre nuestro dispositivo de video por defecto. Asignamos esa nueva brocha a nuestro rectángulo.
Por último solo nos queda la lógica necesaria para iniciar y detener los dispositivos de audio y video.
Para poder acceder correctamente a fuentes de video y audio es necesario que el usuario permita dicho acceso de forma explícita mediante una acción. Para poder solicitar dicho acceso deberemos hacer uso del método CaptureDeviceConfiguration.RequestDeviceAccess(). A continuación se muestra el cuadro de diálogo que se mostrará al usuario para que permita el acceso a los dispositivos. Esta funcionalidad de seguridad impide a código malicioso que una aplicación pueda acceder a dichos dispositivos sin el consentimiento del usuario de modo silencioso y así proteger la privacidad de dichos usuarios.
Caso de usoUn posible caso de uso podría ser la publicación de imágenes de perfil en redes sociales. Para ello Silverlight nos dota de la capacidad de captura de imágenes desde nuestras fuentes de captura de video. Mostremos un ejemplo de cómo extender la aplicación anterior con lo necesario para poder capturar imágenes desde nuestra WebCam.
A continuación añadamos los objetos necesarios para mostrar la imagen capturada en nuestro rectángulo.
Añadamos también a la interfaz un nuevo botón como hemos hecho anteriormente y a su evento clic le daremos la lógica mostrada a continuación.
Nos suscribimos en el evento de carga completa de la página a los eventos asíncronos que nos notifican de los posibles errores o de que la tarea se ha completado correctamente.
Y les damos la lógica necesaria para mostrar la imagen en nuestro nuevo rectángulo.
ConclusiónSilverlight está preparado para escenarios complejos de uso de fuentes de vídeo y audio permitiéndonos crear aplicaciones con funcionalidades cada vez más ricas y de un modo muy sencillo como hemos podido ver, además de los escenarios planteados existen multitud de ellos que pueden surgir de la combinación de distintas funcionalidades como puede ser la de impresión. Puedes descargarte este ejemplo en: SLWebcam.zip |