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.
