Usando webcam e microfone

Usando webcam e microfone

Como usar!

Introdução

Desde a primeira versão do Silverlight, a comunidade tem sido pacientemente à espera de uma versão do Silverlight que permitem capturar vídeo de webcam de um usuário, bem como de áudio de seu microfone.  No PDC 09, a nossa espera acabou com o lançamento do Silverlight 4 Beta 1
 
Neste artigo vamos explorar as maneiras em que o Silverlight pode interagir com uma webcam.


Aplicação - Faça o Teste





Source Code

Projeto 

Para começar, vamos criar um novo projeto em Silverlight 4 Visual Studio 2010 e desenhe um retângulo 320x240 pixel preto chamado " recVideo", dois botões, e dois ListBox dentro do LayoutRoot do nosso MainPage.xaml, como mostra a Figura 1.0.


Figura 1.0 - Projeto WebCam



VideoBrush

Uma das melhores características incluídas no Silverlight, é o VideoBrush.  O VideoBrush nos dá a habilidade para “pintar” toda a área do nosso Stage com conteúdo de vídeo. Nas versões anteriores do Silverlight estávamos limitados ao Source do MediaElement.


Webcam 

 A fim de ter algum vídeo ao vivo para mostrar no nosso retângulo preto, é preciso anexar a nossa câmera VideoCaptureDevice e capturar a sua fonte.  O primeiro passo para fazer isso é criar uma instância do objeto System.Windows.Media.CaptureSource.  Esta classe é projetada para fornecer métodos e propriedades usadas para trabalhar com dispositivos de captura de áudio e vídeo. Os métodos "Start ()" ou "Stop ()" possibilita começar ou parar a captação de conteúdo através do dispositivo.

A classe CaptureSource não nos dá acesso direto à áudio ou vídeo, mas pode ser usado como fonte de um VideoBrush ou VideoSink personalizado.

 O primeiro passo na criação de nossos CaptureSource, é definir suas propriedades VideoCaptureDevice e AudioCaptureDevice. O Silverlight possui uma classe auxiliar chamada "CaptureDeviceConfiguration" que nos dá duas opções em como podemos ter acesso a uma câmera ou um microfone.

  A  CaptureDeviceConfiguration.GetAvailableVideoCaptureDevices ou CaptureDeviceConfiguration.GetAvailableAudioCaptureDevices().Estes métodos nos fornecem uma coleção genérica contendo cada VideoCaptureDevice ou AudioCaptureDevice disponíveis.  A partir desta coleção podemos permitir que nossos usuários selecione manualmente o dispositivo que eles escolhem para capturar.

•  A CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice ou CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice  nos permite usar o dispositivo padrão.


Autorização
 

Agora que temos nossa webcam ligada, e nossa retângulo sendo pintado pelos nosso VideoBrush, é hora de pedir autorização para usar a câmera.  Por motivos de privacidade de cada vez que o Silverlight quer acessar os câmera ou um microfone, o usuário precisa explicitamente dar permissão Silverlight. A Figura 2.0 mostra a tela de autorização.


Figura 2.0 - Pedido de autorização


EXEMPLO

  C#

namespace AppCamera

{

    public partial class MainPage : UserControl {

 

        CaptureSource _device = null;

 

        public MainPage()

        {

            InitializeComponent();

 

            this.Loaded += new RoutedEventHandler(UCCamera_Loaded);

 

            btnStart.Click += new RoutedEventHandler(btnStart_Click);

            btnStop.Click += new RoutedEventHandler(btnStop_Click);

        }

         void UCCamera_Loaded(object sender, RoutedEventArgs e)

        {

            //Pega os dispositivos de audio

            Audio.ItemsSource = CaptureDeviceConfiguration.GetAvailableAudioCaptureDevices();

             //Pega os dipositivos de vídeo

            Video.ItemsSource = CaptureDeviceConfiguration.GetAvailableVideoCaptureDevices();

 

            _device = new CaptureSource();

        }

         void btnStop_Click(object sender, RoutedEventArgs e)   {

            if (_device != null)         {

                _device.Stop();

            }

        }

 

        void btnStart_Click(object sender, RoutedEventArgs e)

        {

            if (_device != null)

            {

                _device.Stop();

 

                _device.AudioCaptureDevice = (AudioCaptureDevice)Audio.SelectedItem;

                _device.VideoCaptureDevice = (VideoCaptureDevice)Video.SelectedItem; 

                VideoBrush _brush = new VideoBrush();

                _brush.SetSource(_device);

                recVideo.Fill = _brush;

                if (CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess())

                {

                    _device.Start();

                }

            }

        }

    }

}

Conclusão

Você aprendeu neste artigo como funciona capturar Imagem de uma WebCam e Microfone, em futuros artigos que podemos continuar a adicionar recursos para melhorar a sua usabilidade. 



blog comments powered by Disqus

NewsLetter

Por favor preencher os campos.
Quer receber artigos?


Receber em HTML?