SilverLight 4 ha ido tomando mucho revuelo en los últimos días y no es para menos con la inclusión de muchas funcionalidades excelentes que harán de SilverLight un punto de entrada al desarrollo de aplicaciones potentes y lo interesante de todo es que en muchas empresas sin la necesidad de tener una infraestructura fuerte puedes montar estas aplicaciones.
Sin mas rodeo en esta oportunidad les comentare como crear un proyecto sencillo que acepte las características de captura de video y de audio.
1. Crearemos un Nuevo Proyecto en Visual Studio 2010 de tipo “SilverLight Application”

2.Visual Studio 2010 nos indicara si deseamos crear un Proyecto Web para testear nuestra aplicación SilverLight le daremos OK.
3. Agregaremos 3 Controles el cual seran Dos Botones y Grid:
<Button Content="Iniciar Captura" Height="26" HorizontalAlignment="Left" Margin="64,47,0,0" Name="btnCapturar" VerticalAlignment="Top" Width="120" />
<Button Content="Paralizar Captura" Height="26" HorizontalAlignment="Left" Margin="209,47,0,0" Name="btnStop" VerticalAlignment="Top" Width="122" />
<Grid Height="166" HorizontalAlignment="Left" Margin="12,122,0,0" Name="grid1" VerticalAlignment="Top" Width="376" />
4. Declararemos una variable privada del tipo CaptureSource quien almacenara las entrada de audio y video:
private CaptureSource _cs = new CaptureSource();
5. Nos ubicaremos en el constructor del formulario (UserControl) y escribiremos los siguientes eventos:
public MainPage()
{
InitializeComponent();
btnCapturar.Click += new RoutedEventHandler(btnCapturar_Click);
btnStop.Click+=new RoutedEventHandler(btnStop_Click);
}
6. Escribiremos en los eventos del Boton Capturar y el Stop las siguientes lineas:
void btnCapturar_Click(object sender, RoutedEventArgs e)
{
//Validamos si permite captura de video y audio
if (!CaptureDeviceConfiguration.AllowedDeviceAccess )
{
CaptureDeviceConfiguration.RequestDeviceAccess();
}
//Si la validacion fue efectiva podemos asignarle a la variable
//antes declara (_cs) el video y el audio
if (CaptureDeviceConfiguration.RequestDeviceAccess())
{
System.Windows.Media.VideoCaptureDevice videodev;
System.Windows.Media.AudioCaptureDevice audiodev;
videodev = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
audiodev = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
if (videodev != null && audiodev!=null)
{
_cs.AudioCaptureDevice = audiodev;
_cs.VideoCaptureDevice = videodev;
VideoBrush vb = new VideoBrush();
vb.SetSource(_cs);
_cs.Start();
grid1.Background = vb;
}
}
}
private void btnStop_Click(object sender, RoutedEventArgs e)
{
//se paraliza la visualizacion del video y el audio
_cs.Stop();
}
Con esto podemos porbar nuestra aplicacion… espero que le sea de ayuda… aqui les dejo el codigo XAML completo y el Codigo en C# del ejemplo mostrado:
XAML:
<UserControl x:Class="DemoWebCam.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<Button Content="Iniciar Captura" Height="26" HorizontalAlignment="Left" Margin="64,47,0,0" Name="btnCapturar" VerticalAlignment="Top" Width="120" />
<Button Content="Paralizar Captura" Height="26" HorizontalAlignment="Left" Margin="209,47,0,0" Name="btnStop" VerticalAlignment="Top" Width="122" Click="btnStop_Click" />
<Grid Height="166" HorizontalAlignment="Left" Margin="12,122,0,0" Name="grid1" VerticalAlignment="Top" Width="376" />
</Grid>
</UserControl>
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using System.Windows.Media.Imaging;
namespace DemoWebCam
{
public partial class MainPage : UserControl
{
ObservableCollection<WriteableBitmap> _images = new ObservableCollection<WriteableBitmap>();
private CaptureSource _cs = new CaptureSource();
public MainPage()
{
InitializeComponent();
btnCapturar.Click += new RoutedEventHandler(btnCapturar_Click);
btnStop.Click+=new RoutedEventHandler(btnStop_Click);
}
void btnCapturar_Click(object sender, RoutedEventArgs e)
{
//Validamos si permite captura de video y audio
if (!CaptureDeviceConfiguration.AllowedDeviceAccess )
{
CaptureDeviceConfiguration.RequestDeviceAccess();
}
//Si la validacion fue efectiva podemos asignarle a la variable
//antes declara (_cs) el video y el audio
if (CaptureDeviceConfiguration.RequestDeviceAccess())
{
System.Windows.Media.VideoCaptureDevice videodev;
System.Windows.Media.AudioCaptureDevice audiodev;
videodev = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
audiodev = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
if (videodev != null && audiodev!=null)
{
_cs.AudioCaptureDevice = audiodev;
_cs.VideoCaptureDevice = videodev;
VideoBrush vb = new VideoBrush();
vb.SetSource(_cs);
_cs.Start();
grid1.Background = vb;
}
}
}
private void btnStop_Click(object sender, RoutedEventArgs e)
{
//se paraliza la visualizacion del video y el audio
_cs.Stop();
}
}
}
Tags: ASP.net -
C# -
Csharp -
Desarrollo -
SilverLight -
RIA -
Tips -
Trucos -
Tutoriales -
Visual Studio
Te ha gustado este Post?
Pues seria genial si pudieras compartirlo con otras personas y asi llegarle a mas personas que pudiera ser util esta publicación. Animate a compartir