Click here to Skip to main content
12,243,729 members (56,183 online)
Click here to Skip to main content
Add your own
alternative version

Stats

456.9K views
64.3K downloads
311 bookmarked
Posted

WPF: Webcam Control

, 2 Apr 2012 CPOL
Rate this:
Please Sign up or sign in to vote.
A WPF UserControl for displaying and recording video from a webcam
This is an old version of the currently published article.

WPF_WebcamControl/Screenshot_1.png

Introduction

I have on several occasions scoured the net for a simple to use WPF webcam control and either my search queries were awful or I just wasn't comfortable with whatever I found. This webcam interest was recently increased when I read an article, here on CodeProject, that referred to an application that made use of a webcam. It was a Silverlight article and the ease with which one could utilize a webcam in Silverlight made me envious of WPF's little brother (or is it sister?). The VideoBrush in Silverlight is especially a nice touch.

It is with this pain and envy in mind that I decided to try my hand at creating a WPF control that could;

  1. Display webcam video with little coding effort,
  2. Allow saving of webcam video to harddisk, with little coding effort,
  3. Save the webcam video in a variety of video formats

Background

With the previously mentioned goals in mind, I created a WPF UserControl that has the following features:

  • Displays webcam video,
  • Enables saving of webcam videos to harddisk,
  • Enables saving of webcam videos in either .wmv, .mp4, or .flv format

The UserControl also enables you to take a snapshot of the live webcam video, and save it as a Jpeg, Png, Gif, or any other of the ImageFormat properties.

The Webcam control makes heavy use of the Expression Encoder 4 SDK. You therefore need to have the SDK installed on your machine to make use of the UserControl. You can download the SDK from here.

Requirements

To make use of the Webcam control, you require: 

  • .NET Framework 4.0
  • Expression Encoder SDK

Using the Webcam Control

To use the Webcam control in your WPF application, add a reference to WebcamControl.dll and a using/Imports statement for WebcamControl at the top of your class.

Add a reference to Microsoft.Expression.Encoder.dll. Do this by using the Add Reference dialog box, selecting the .NET tab, and selecting Microsoft.Expression.Encoder from the listbox. The Expression Encoder assemblies should be available if you have installed Expression Encoder 4.

The following example, which is the code for the downloadable sample application, shows the use of the Webcam control. The sample application contains a ContentControl that will host the Webcam control, two ComboBoxes for displaying the names of audio and video devices connected to the machine, and five buttons.

VB.NET

Imports Microsoft.Expression.Encoder.Devices
Imports WebcamControl
Imports System.IO
Imports Microsoft.Expression.Encoder.Live
Imports Microsoft.Expression.Encoder
Imports System.Drawing
Imports System.Drawing.Imaging

Class MainWindow
    Private webCamCtrl As New Webcam

    Private Sub MainWindow_Loaded(ByVal sender As Object, _
                                  ByVal e As System.Windows.RoutedEventArgs) _
                              Handles Me.Loaded
        FindDevices()

        Dim vidPath As String = "C:\VideoClips"
        Dim imgPath As String = "C:\WebcamSnapshots"

        If Directory.Exists(vidPath) = False Then
            Directory.CreateDirectory(vidPath)
        End If

        If Directory.Exists(imgPath) = False Then
            Directory.CreateDirectory(imgPath)
        End If

        ' Set some properties of the Webcam control.
        webCamCtrl.VideoDirectory = vidPath
        webCamCtrl.VidFormat = VideoFormat.wmv

        webCamCtrl.ImageDirectory = imgPath
        webCamCtrl.PictureFormat = ImageFormat.Jpeg

        ' Set the Webcam control as the ContentControl's content.
        ContentControl1.Content = webCamCtrl

        VidDvcsComboBox.SelectedIndex = 0
        AudDvcsComboBox.SelectedIndex = 0
    End Sub

    ' Find available a/v devices.
    Private Sub FindDevices()
        Dim vidDevices = EncoderDevices.FindDevices(EncoderDeviceType.Video)
        Dim audDevices = EncoderDevices.FindDevices(EncoderDeviceType.Audio)

        For Each dvc In vidDevices
            VidDvcsComboBox.Items.Add(dvc.Name)
        Next

        For Each dvc In audDevices
            AudDvcsComboBox.Items.Add(dvc.Name)
        Next
    End Sub

    Private Sub StartButton_Click(ByVal sender As System.Object, _
                        ByVal e As System.Windows.RoutedEventArgs) _
                        Handles StartButton.Click
        ' Display webcam images on control.
        Try
            webCamCtrl.StartCapture()
        Catch ex As Microsoft.Expression.Encoder.SystemErrorException
            MessageBox.Show("Device is in use by another application")
        End Try
    End Sub

    Private Sub EndButton_Click(ByVal sender As Object, _
                        ByVal e As System.Windows.RoutedEventArgs) _
                    Handles EndButton.Click
        ' Stop the display of webcam video.
        webCamCtrl.StopCapture()
    End Sub

    Private Sub RecordButton_Click(ByVal sender As System.Object, _
                        ByVal e As System.Windows.RoutedEventArgs) _
                    Handles RecordButton.Click
        ' Start recording of webcam video to harddisk.
        webCamCtrl.StartRecording()
    End Sub

    Private Sub StopRecordButton_Click(ByVal sender As Object, _
                        ByVal e As System.Windows.RoutedEventArgs) _
                    Handles StopRecordButton.Click
        ' Stop recording of webcam video to harddisk.
        webCamCtrl.StopRecording()
    End Sub

    Private Sub VidDvcsComboBox_SelectionChanged(ByVal sender As Object, _
                        ByVal e As System.Windows.Controls.SelectionChangedEventArgs) _
                    Handles VidDvcsComboBox.SelectionChanged

        ' Set which video device to use.
        webCamCtrl.VideoDevice = VidDvcsComboBox.SelectedValue
    End Sub

    Private Sub AudDvcsComboBox_SelectionChanged(ByVal sender As Object, _
                        ByVal e As System.Windows.Controls.SelectionChangedEventArgs) _
                    Handles AudDvcsComboBox.SelectionChanged

        ' Set which audio device to use.
        webCamCtrl.AudioDevice = AudDvcsComboBox.SelectedValue
    End Sub

    Private Sub SnapshotButton_Click(ByVal sender As System.Object, _
                        ByVal e As System.Windows.RoutedEventArgs) _
                    Handles SnapshotButton.Click
        webCamCtrl.TakeSnapshot()
    End Sub
End Class

The VideoDevice and AudioDevice properties of Webcam control are dependency properties and can therefore be data-bound to the SelectedValue property of the necessary ComboBox.

Private Sub MainWindow_Initialized(ByVal sender As Object, _
                                      ByVal e As System.EventArgs) Handles Me.Initialized
    Dim bndg_1 As New Binding("SelectedValue")
    bndg_1.Source = VidDvcsComboBox
    webCamCtrl.SetBinding(Webcam.VideoDeviceProperty, bndg_1)

    Dim bndg_2 As New Binding("SelectedValue")
    bndg_2.Source = AudDvcsComboBox
    webCamCtrl.SetBinding(Webcam.AudioDeviceProperty, bndg_2)
End Sub

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Expression.Encoder.Devices;
using WebcamControl;
using System.IO;
using System.Drawing.Imaging;

namespace WPF_Webcam
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private Webcam webCamCtrl;

        public MainWindow()
        {
            InitializeComponent();

            webCamCtrl = new Webcam();           

            // Bind the Video and Audio device properties of the
            // Webcam control to the SelectedValue property of 
            // the necessary ComboBox.
            Binding bndg_1 = new Binding("SelectedValue");
            bndg_1.Source = VidDvcsComboBox;
            webCamCtrl.SetBinding(Webcam.VideoDeviceProperty, bndg_1);

            Binding bndg_2 = new Binding("SelectedValue");
            bndg_2.Source = AudDvcsComboBox;
            webCamCtrl.SetBinding(Webcam.AudioDeviceProperty, bndg_2);

            // Create directory for saving video files.
            string vidPath = @"C:\VideoClips";

            if (Directory.Exists(vidPath) == false)
            {
                Directory.CreateDirectory(vidPath);
            }

            // Create directory for saving image files.
            string imgPath = @"C:\WebcamSnapshots";

            if (Directory.Exists(imgPath) == false)
            {
                Directory.CreateDirectory(imgPath);
            }

            // Set some properties of the Webcam control
            webCamCtrl.VideoDirectory = vidPath;
            webCamCtrl.VidFormat = VideoFormat.wmv;

            webCamCtrl.ImageDirectory = imgPath;
            webCamCtrl.PictureFormat = ImageFormat.Jpeg;

            // Set the Webcam control as the ContentControl's content.
            ContentControl1.Content = webCamCtrl;

            // Find a/v devices connected to the machine.
            FindDevices();

            VidDvcsComboBox.SelectedIndex = 0;
            AudDvcsComboBox.SelectedIndex = 0;
        }

        private void FindDevices()
        {
            var vidDevices = EncoderDevices.FindDevices(EncoderDeviceType.Video);
            var audDevices = EncoderDevices.FindDevices(EncoderDeviceType.Audio);

            foreach (EncoderDevice dvc in vidDevices)
            {
                VidDvcsComboBox.Items.Add(dvc.Name);
            }

            foreach (EncoderDevice dvc in audDevices)
            {
                AudDvcsComboBox.Items.Add(dvc.Name);
            }

        }

        private void StartButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // Display webcam video on control.
                webCamCtrl.StartCapture();               
            }
            catch (Microsoft.Expression.Encoder.SystemErrorException ex)
            {
                MessageBox.Show("Device is in use by another application");
            }
        }

        private void EndButton_Click(object sender, RoutedEventArgs e)
        {
            // Stop the display of webcam video.
            webCamCtrl.StopCapture();
        }

        private void RecordButton_Click(object sender, RoutedEventArgs e)
        {
            // Start recording of webcam video to harddisk.
            webCamCtrl.StartRecording();
        }

        private void StopRecordButton_Click(object sender, RoutedEventArgs e)
        {
            // Stop recording of webcam video to harddisk.
            webCamCtrl.StopRecording();
        }

        private void SnapshotButton_Click(object sender, RoutedEventArgs e)
        {
            // Take snapshot of webcam image.
            webCamCtrl.TakeSnapshot();
        }           
       
    }
}

As you can see from the sample code, using the Webcam control is not a hard affair once you have the necessary references and Imports/using statements.

Webcam

The following are the members of interest in class Webcam:

Properties

Name Description Type
WPF_WebcamControl/PropertyIcon.png VideoDirectory Gets or Sets the folder where the recorded webcam video will be saved. This is a dependency property. String
WPF_WebcamControl/PropertyIcon.png VidFormat Gets or Sets the video format in which the webcam video will be saved. This is a dependency property. (The default format is .wmv) VideoFormat
WPF_WebcamControl/PropertyIcon.png VideoDevice Gets or Sets the name of the video device to be used. This is a dependency property. String
WPF_WebcamControl/PropertyIcon.png AudioDevice Gets or Sets the name of the audio device to be used. This is a dependency property. String
WPF_WebcamControl/PropertyIcon.png IsRecording Gets a value indicating whether video recording is taking place. This is a read-only property. Boolean
WPF_WebcamControl/PropertyIcon.png ImageDirectory Gets or Sets the folder where a snapshot of the webcam video will be saved. This is a dependency property. String
WPF_WebcamControl/PropertyIcon.png PictureFormat Gets or Sets the format in which a snapshot of the webcam video will be saved. This is a dependency property. (The default format is Jpeg). ImageFormat

Methods

Name Description
WPF_WebcamControl/MethodIcon.png StartCapture Displays webcam video on control. (Throws a Microsoft.Expression.Encoder.SystemErrorException if a specified device is already in use by another application)
WPF_WebcamControl/MethodIcon.png StopCapture Stops the capturing/display of webcam video. (Stops any current recording of webcam video)
WPF_WebcamControl/MethodIcon.png StartRecording Starts the recording of webcam video to a video file. (Throws a DirectoryNotFoundException if the directory specified in the VideoDirectory property does not exist)
WPF_WebcamControl/MethodIcon.png StopRecording Stops the recording of webcam video.  
WPF_WebcamControl/MethodIcon.png TakeSnapshot Saves a snapshot of the webcam video. (Throws a DirectoryNotFoundException if the directory specified in the ImageDirectory property does not exist)

The Code

The XAML markup for the UserControl is:

<UserControl x:Class="Webcam" 
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             Height="Auto" Width="Auto" MinHeight="100" MinWidth="100" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
             mc:Ignorable="d" d:DesignWidth="320" d:DesignHeight="240" Name="Webcam">
    <Grid>
        <WindowsFormsHost Margin="0,0,0,0" Name="WinFormHost" Background="{x:Null}">
            <wf:Panel x:Name="WebcamPanel" Size="320,240" />
        </WindowsFormsHost>
    </Grid>
</UserControl>

The dimensions of the WinForm Panel are adjusted when the control is loaded so that the webcam video will occupy the entire area of the Panel's parent element.

Private Sub Webcam_Loaded(ByVal sender As Object, _
                  ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
    ' Set dimensions of WinForm Panel to current dimensions
    ' of the UserControl.
    Dim panelWidth As Integer = CInt(Me.ActualWidth)
    Dim panelHeight As Integer = CInt(Me.ActualHeight)

    WebcamPanel.Width = panelWidth
    WebcamPanel.Height = panelHeight
End Sub

As highlighted earlier, Webcam contains several properties and methods that aid in its operation. The VideoDevice dependency property is defined as follows:

''' <summary>
''' Gets or Sets the name of the video device to be used.
''' </summary>    
Public Property VideoDevice() As String
    Get
        Return CType(GetValue(VideoDeviceProperty), String)
    End Get
    Set(ByVal value As String)
        SetValue(VideoDeviceProperty, value)
    End Set
End Property

Public Shared VideoDeviceProperty As DependencyProperty = _
    DependencyProperty.Register("VideoDevice", GetType(String), GetType(Webcam), _
                          New FrameworkPropertyMetadata(New PropertyChangedCallback( _
                                                              AddressOf VidDeviceChange)))

Private Shared Sub VidDeviceChange(ByVal source As DependencyObject, _
    ByVal e As DependencyPropertyChangedEventArgs)
    Dim deviceName As String = CType(e.NewValue, String)
    Dim eDev = EncoderDevices.FindDevices(EncoderDeviceType.Video).Where _
               (Function(dv) dv.Name = deviceName)

    If (eDev.Count > 0) Then
        CType(source, Webcam).vidDevice = eDev.First

        Try
            CType(source, Webcam).Display()
        Catch ex As Microsoft.Expression.Encoder.SystemErrorException
            Exit Sub
        End Try
    End If
End Sub

The StartCapture() method displays the webcam video in the WinForm Panel, if the necessary properties are set:

''' <summary>
''' Display webcam video on control.
''' </summary>
Public Sub StartCapture()
    If (canCapture = False) Then
        canCapture = True

        Try
            Display()
        Catch ex As Microsoft.Expression.Encoder.SystemErrorException
            canCapture = False
            Throw New Microsoft.Expression.Encoder.SystemErrorException
        End Try
    Else
        Exit Sub
    End If
End Sub
    
' Display video from webcam.
Private Sub Display()
    If (canCapture = True) Then
        If (vidDevice IsNot Nothing) Then
            StopRecording()
            Dispose()

            job = New LiveJob

            deviceSource = job.AddDeviceSource(vidDevice, audDevice)

            deviceSource.PreviewWindow = _
                 New PreviewWindow(New HandleRef(WebcamPanel, WebcamPanel.Handle))

            job.ActivateSource(deviceSource)

            isCapturing = True
        End If
    End If
End Sub

The StartRecording() method records video from the webcam to the harddisk:

''' <summary>
''' Starts the recording of webcam video to a video file.
''' </summary>
Public Sub StartRecording()
    If (vidDirectory <> String.Empty AndAlso job IsNot Nothing) Then
        If (Directory.Exists(vidDirectory) = False) Then
            Throw New DirectoryNotFoundException("The specified directory does not exist")
            Exit Sub
        End If

        ' If isCapturing is true then it means the control is capturing images 
        ' from the webcam.
        If (isCapturing = True) Then
            StopRecording()
            job.PublishFormats.Clear()

            Dim timeStamp As String = DateTime.Now.ToString
            timeStamp = timeStamp.Replace("/", "-")
            timeStamp = timeStamp.Replace(":", ".")
            Dim filePath As String = vidDirectory & "\WebcamVid " & timeStamp & "." & _vidFormat.ToString

            Dim fileArchFormat As New FileArchivePublishFormat(filePath)
            job.PublishFormats.Add(fileArchFormat)
            job.StartEncoding()

            _isRecording = True
        End If
    End If
End Sub

The VideoFormat enumeration contains three members:

Public Enum VideoFormat
    wmv
    mp4
    flv
End Enum

The TakeSnapshot() method saves a snapshot of the webcam video. The image generated is actually a snapshot of the WinForms Panel, WebcamPanel. The size of the image will depend on the size of the Webcam control.

''' <summary>
''' Take snapshot of a webcam image. 
''' </summary>
Public Sub TakeSnapshot()
    If (imgDirectory <> String.Empty AndAlso job IsNot Nothing) Then
        If (Directory.Exists(imgDirectory) = False) Then
            Throw New DirectoryNotFoundException("The specified directory does not exist")
            Exit Sub
        End If

        ' If isCapturing is true then it means the control is capturing video 
        ' from the webcam.
        If (isCapturing = True) Then
            Dim panelWidth As Integer = CInt(Me.ActualWidth)
            Dim panelHeight As Integer = CInt(Me.ActualHeight)

            Dim timeStamp As String = DateTime.Now.ToString
            timeStamp = timeStamp.Replace("/", "-")
            timeStamp = timeStamp.Replace(":", ".")

            Dim filePath As String = imgDirectory & "\Snapshot " & timeStamp & "." & imgFormat.ToString

            Dim pnlPnt As Point = WebcamPanel.PointToScreen(New Point(WebcamPanel.ClientRectangle.X, _
                                                                      WebcamPanel.ClientRectangle.Y))

            Using bmp As New Bitmap(panelWidth, panelHeight)
                Using gcs As Graphics = Graphics.FromImage(bmp)
                    gcs.CopyFromScreen(pnlPnt, Point.Empty, New Size(panelWidth, panelHeight))
                End Using
                bmp.Save(filePath, imgFormat)
            End Using
        End If
    End If
End Sub

You can take a look at the other properties and methods defined in class Webcam by downloading the source files from the download link at the top of this article.

Conclusion

I hope that you picked up something useful from this article. I'm a novice in audio-video-encoding-decoding matters so if you have any questions regarding such technicalities, please try to post them in the associated forums here on CodeProject. Suggestions will be beneficial, as well as answers you receive to any technical queries that may be associated with this article's content. Thanks.

History

  • 18th Nov, 2011: Initial post
  • 19th Nov, 2011: Updated code
  • 31st Mar, 2012: Added snapshot feature.

License

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

Share

About the Author

Meshack Musundi
Software Developer
Kenya Kenya
Meshack has about 7 years of programming experience initially starting off with Java before shifting to .NET, thanks to the allure of WPF.

Awards;
  • CodeProject MVP 2013
  • CodeProject MVP 2012
  • Best VB.NET article of January 2015
  • Best VB.NET article of August 2013
  • Best VB.NET article of February 2013
  • Best VB.NET article of October 2012
  • Best VB.NET article of July 2012
  • Best VB.NET article of February 2012
  • Best VB.NET article of January 2012
  • Best VB.NET article of November 2011
  • Best VB.NET article of June 2011
  • Best VB.NET article of May 2011
  • Best VB.NET article of March 2011
  • Best VB.NET article of February 2011
  • Best VB.NET article of January 2011
  • Best VB.NET article of December 2010
  • Best VB.NET article of November 2010

You may also be interested in...

Comments and Discussions


Discussions posted for the Published version of this article. Posting a message here will take you to the publicly available article in order to continue your conversation in public.
 
QuestionWebcamControl.dll Pin
Member 1246467716-Apr-16 13:44
memberMember 1246467716-Apr-16 13:44 
GeneralRe: WebcamControl.dll Pin
Meshack Musundi17-Apr-16 23:17
professionalMeshack Musundi17-Apr-16 23:17 
GeneralRe: WebcamControl.dll Pin
Member 1246467718-Apr-16 4:27
memberMember 1246467718-Apr-16 4:27 
GeneralRe: WebcamControl.dll Pin
Meshack Musundi18-Apr-16 9:42
professionalMeshack Musundi18-Apr-16 9:42 
Questionwinforms version Pin
Jeric Canatuan18-Feb-16 5:56
memberJeric Canatuan18-Feb-16 5:56 
QuestionOrientation not changing in Surface. Pin
linto_1120-Dec-15 1:01
memberlinto_1120-Dec-15 1:01 
QuestionRe: Orientation not changing in Surface. Pin
Meshack Musundi20-Dec-15 22:00
professionalMeshack Musundi20-Dec-15 22:00 
PraiseThank's Pin
Sprenol8-Dec-15 1:00
memberSprenol8-Dec-15 1:00 
GeneralRe: Thank's Pin
Meshack Musundi8-Dec-15 7:50
professionalMeshack Musundi8-Dec-15 7:50 
QuestionWindows 8.1 Unhandled Event 0x80040217 Pin
DMoody00720-Oct-15 11:26
memberDMoody00720-Oct-15 11:26 
AnswerRe: Windows 8.1 Unhandled Event 0x80040217 Pin
Meshack Musundi21-Oct-15 7:33
professionalMeshack Musundi21-Oct-15 7:33 
GeneralRe: Windows 8.1 Unhandled Event 0x80040217 Pin
DMoody00721-Oct-15 8:05
memberDMoody00721-Oct-15 8:05 
QuestionHow to flip! Pin
Member 377712218-Sep-15 8:53
memberMember 377712218-Sep-15 8:53 
AnswerRe: How to flip! Pin
Meshack Musundi19-Sep-15 2:08
professionalMeshack Musundi19-Sep-15 2:08 
QuestionMicrosoft.Expression.Encoder Pin
Roma Priymak18-Aug-15 6:42
memberRoma Priymak18-Aug-15 6:42 
AnswerRe: Microsoft.Expression.Encoder Pin
Edex12321-Mar-16 10:08
memberEdex12321-Mar-16 10:08 
QuestionSnapshot resolution Pin
alessiom2-Jul-15 4:41
memberalessiom2-Jul-15 4:41 
AnswerRe: Snapshot resolution Pin
nitewulf5028-Jan-16 5:05
membernitewulf5028-Jan-16 5:05 
QuestionCan we add Zoom In & out functionality for the camera. Pin
bharat290522-Jun-15 22:33
memberbharat290522-Jun-15 22:33 
QuestionWhy Windows Forms Panel Pin
Joel Palmer16-Apr-15 20:44
memberJoel Palmer16-Apr-15 20:44 
AnswerRe: Why Windows Forms Panel Pin
Meshack Musundi17-Apr-15 0:24
professionalMeshack Musundi17-Apr-15 0:24 
Questionhow to have a XAP from this project ? Pin
amr ismail30-Mar-15 5:23
memberamr ismail30-Mar-15 5:23 
QuestionVideo Director Pin
bruno.picardi27-Mar-15 22:35
memberbruno.picardi27-Mar-15 22:35 
GeneralRe: Video Director Pin
Meshack Musundi28-Mar-15 2:16
professionalMeshack Musundi28-Mar-15 2:16 
GeneralRe: Video Director Pin
bruno.picardi28-Mar-15 2:37
memberbruno.picardi28-Mar-15 2:37 
QuestionSave the Video Pin
Member 879873427-Mar-15 20:05
memberMember 879873427-Mar-15 20:05 
AnswerRe: Save the Video Pin
Meshack Musundi28-Mar-15 2:20
professionalMeshack Musundi28-Mar-15 2:20 
Questionvideo recording using WPF in C# Pin
Bushra Sadia16-Mar-15 1:05
memberBushra Sadia16-Mar-15 1:05 
GeneralRe: video recording using WPF in C# Pin
Meshack Musundi20-Mar-15 1:07
professionalMeshack Musundi20-Mar-15 1:07 
QuestionHow to video processing and manipulate in real-time? Pin
hzawary30-Jan-15 5:15
memberhzawary30-Jan-15 5:15 
QuestionHow I can Seek Video File ? Pin
Bình Toác28-Jan-15 21:47
memberBình Toác28-Jan-15 21:47 
QuestionProblem porting to x86 tablet Pin
Jon 12326-Jan-15 6:14
memberJon 12326-Jan-15 6:14 
AnswerRe: Problem porting to x86 tablet Pin
Meshack Musundi26-Jan-15 9:14
professionalMeshack Musundi26-Jan-15 9:14 
GeneralRe: Problem porting to x86 tablet Pin
Jon 12326-Jan-15 23:21
memberJon 12326-Jan-15 23:21 
GeneralRe: Problem porting to x86 tablet Pin
Jon 12327-Jan-15 0:03
memberJon 12327-Jan-15 0:03 
Questionhow to add VB code in wpf Pin
deepika wani18-Jan-15 23:55
memberdeepika wani18-Jan-15 23:55 
AnswerRe: how to add VB code in wpf Pin
Meshack Musundi19-Jan-15 4:35
professionalMeshack Musundi19-Jan-15 4:35 
QuestionRe: how to add VB code in wpf Pin
deepika wani19-Jan-15 19:29
memberdeepika wani19-Jan-15 19:29 
AnswerRe: how to add VB code in wpf Pin
Meshack Musundi20-Jan-15 3:17
professionalMeshack Musundi20-Jan-15 3:17 
GeneralRe: how to add VB code in wpf Pin
deepika wani20-Jan-15 20:28
memberdeepika wani20-Jan-15 20:28 
GeneralRe: how to add VB code in wpf Pin
amr ismail30-Mar-15 5:38
memberamr ismail30-Mar-15 5:38 
AnswerRe: how to add VB code in wpf Pin
amr ismail30-Mar-15 5:57
memberamr ismail30-Mar-15 5:57 
Bug32bit only DLL ? Pin
tlhintoq16-Jan-15 6:33
membertlhintoq16-Jan-15 6:33 
GeneralRe: 32bit only DLL ? Pin
Meshack Musundi16-Jan-15 9:58
professionalMeshack Musundi16-Jan-15 9:58 
GeneralRe: 32bit only DLL ? Pin
tlhintoq16-Jan-15 10:06
membertlhintoq16-Jan-15 10:06 
GeneralRe: 32bit only DLL ? Pin
Meshack Musundi17-Jan-15 2:50
professionalMeshack Musundi17-Jan-15 2:50 
QuestionThrow exception when I click Start_Capture Pin
Bình Toác11-Jan-15 23:42
memberBình Toác11-Jan-15 23:42 
QuestionIn Surface Pro 3,The VideoDevicesComboBox can list three selections,if VideoDevicesComboBox change to select "Microsoft LifeCam Rear",The WebcamCtrl do not display and Interface become black.why ? Pin
Member 1130451614-Dec-14 20:24
memberMember 1130451614-Dec-14 20:24 
QuestionRequest Pin
Suresh Cires27-Nov-14 1:20
professionalSuresh Cires27-Nov-14 1:20 
AnswerRe: Request Pin
Member 1140649715-Feb-15 6:56
memberMember 1140649715-Feb-15 6:56 

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.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.160426.1 | Last Updated 2 Apr 2012
Article Copyright 2011 by Meshack Musundi
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid