Click here to Skip to main content
12,815,057 members (41,062 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


3 bookmarked
Posted 25 Nov 2010

Silverlight 4 – Webcam Support

, 25 Nov 2010 CPOL
Rate this:
Please Sign up or sign in to vote.
Author: Sumon Barua.   Silverlight 4 is now not only more mature but also came with rich features. Most of these features were recommendations from Silverlight community. Webcam support is one of them. This was a very highly requested feature … Continue reading →

Silverlight 4 is now not only more mature but also came with rich features. Most of these features were recommendations from Silverlight community.

Webcam support is one of them. This was a very highly requested feature and has now been included in this version.

The following steps will get you up and running for the initial adventure:


Step 1: First step is to get all the available capture devices(webcams, microphones etc) or default capture device on the system. So CaptureDeviceConfiguration class help us to obtain information about all available devices. This helper class exposes a number of static members for this purpose.

  • CaptureDeviceConfiguration.GetAvailableVideoCaptureDevices()
    • It returns a collection of video devices on the system.
    </li />
  • CaptureDeviceConfiguration.GetAvailableAudioCaptureDevices()
    • All the audio devices.
  • CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice()
    • Default audio device.
  • CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice()
    • Default video device.

So after the first step we got the device

Step 2: Before any interaction with the device, Silverlight application needs permission from the user(The user must grant permission in the security prompt and that way it ensures the call is safe).

  • CaptureDeviceConfiguration.RequestDeviceAccess() :

    To request access, call this static method in response to user initiated event like listbox item selection, button click etc. If your application automate this call without user interaction (i.e. Load event)  the method will return false and further action by application will throw an InvalidOperationException.

Okay application got the permission. Lets proceed for the next step

Step 3: Now we have permission and device handy. It’s time for the application to interact with the device using CaptureSource class. This class allows you to collect the video feed from the camera. To make this happen  create a CaptureSource object and set the VideoCaptureDevice to the selected device. With the help of CaptureSource the application is now capable of performing the following task on the devices

  • Start
  • Stop
  • State of the device.
  • Capturing single video frame

Step 4: Now create a video brush. A VideoBrush gives us the ability to paint any area or controls with video content. At this stage we use CaptureSource as a  source of our brush

Step 5: The next thing we need to do is to call CaptureSource.Start() method to begin capturing our live video.

Step 6: Finally we’ll set the Fill property of a Rectangle object to this brush.

Simple application:

Now we will code a very simple application

  1. Create a Silverlight application and open the MainPage.xaml
  2. Add one rectangle(for display purpose) and two buttons(start and stop).
  3. <Grid x:Name="LayoutRoot" Background="White">
        <StackPanel Name="mainStackpanel">
            <Rectangle Height="256" Name="myDisplay" Stroke="Black"
                StrokeThickness="1" Width="584" />
            <StackPanel Name="subStackpanel" Orientation="Horizontal"
                <Button x:Name="butStart" Content="Start" Click="butStart_Click"/>
                <Button x:Name="butStop" Content="Stop" Click="butStop_Click" />
  4. Code behind as follows
  5. public partial class MainPage : UserControl
           CaptureSource captureSourec;
           public MainPage()
           private void butStart_Click(object sender, RoutedEventArgs e)
               //Get the default video device
               VideoCaptureDevice myWebcam =
               //Grant permission
               if (CaptureDeviceConfiguration.AllowedDeviceAccess ||
                   captureSourec = new CaptureSource();
                   captureSourec.VideoCaptureDevice  = myWebcam;
                   //Create video brush that will get feed from captureSourec
                   VideoBrush myBrush = new VideoBrush();
                   myBrush.Stretch = Stretch.UniformToFill;
                   //Stat the web cam
                   //Now display through the Rectangle
                   myDisplay.Fill = myBrush;
           private void butStop_Click(object sender, RoutedEventArgs e)
               if (captureSourec != null)


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Sumon Barua
Software Developer (Senior) Lavender
Australia Australia
No Biography provided

You may also be interested in...


Comments and Discussions

GeneralVideo chat Pin
selim al hasan1-Jan-11 21:56
memberselim al hasan1-Jan-11 21:56 
GeneralI think Pin
thatraja27-Nov-10 22:44
memberthatraja27-Nov-10 22:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170308.1 | Last Updated 25 Nov 2010
Article Copyright 2010 by Sumon Barua
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid