Video Capture

Essential Update:

Read below for background...this is information for users to get started in the code right away

We have two projects being taken right now. They can both be downloaded and viewed here: The first is virtualdub-lds which as indicated uses VirtualDub source code modified for our needs. It has a /out folder in it that has the current application result as an exe.

The second option is WebCamCapture which was a full product, but used ExpressionEncoder which requires a separate install/download. So it was almost complete, but we need to rip expression encoder out of it and use Direct Show or other already installed on a windows option.

Please download and dig in. Forward me any questions ( or challenges, and I'll be happy to get the right people together to answer.


BYU-Hawaii online learning is engaged in cutting-edge online courses that have a need to enhance their asynchronous video-conferencing tools. For a review of what BYU-H is currently doing, view this video:

The Challenge:

The online application can hang, or suspend during recording causing the students to lose their recordings. We train students to use personal computer options, but we run into technology challenges, and unusable compression rates.


Simple platform-independent video capture client (would be happy with windows version to start)

   Solution has to:
     Verify sound levels (many students don’t realize that the mic is not recording and thus the resulting video has no sound)
     Playback to verify
     Compress video to a specific rate (or record at that rate)
     Save to client computer for later upload
     Be a simple install/exe that can run/install from a USB without additional install requirements (such as a JRE).

Additional Information

During the LDSTech conference we will both investigate solution options, and begin development (prototypes) to one or more of the possible solutions. (See Updates and Research sections)

Some Options

I'd like to list here some potential solutions the any reader of this wiki is familiar with. Please feel free to add your thoughts, and I'll create additional wiki pages for any that look promising to explore further.

1. ffmpeg [1] (will not record audio on windows to date...may change in the future)

2. List of open source projects that may help: ([2])

3. VLC Player - may need some modifications, but you can record and view on any platform. [3]...or blog entry about recording from [4] - VLC is free and should accomplish this task I use it all the time renders and records with mostly no problem Someone at the recording sites would need to test it to see if it meets needs. (would need to make a simpler UI with this.)

4. See Updates section for more links and alternatives to explore

5. The direction this has gone right now is to update to use DirectShot.Net. DirectShow.Net requires knowledge of Win32 C++ and C#.Net. - this does not mean that someone can't explore one of the other options...or propose another. This is just the furthest working model to date.


Please list updates with the most recent at the top.

4/2/2012 - Results of LDSTech conference: We are pushing forward trying to find the right solution for the job. There are three things being worked on...I invite all to take a look at any of the 3 options and see if you have any experience, or would like to learn.

   1. WebCamCapture - this was the original project written in c++ and .NET, it has a great front end UI (User interface), but has a backend that we could not support for the project.  It is in need of a different capture and compression back end.
   2. VirtualDubLDS - this took the open source virtualDub project, and branded it as an LDS application. Simple front end, but the drawback to VirtualDub is that it only records as AVI (which is a large file format), so we need some type of compression added to the saving of the file after recording for this one to work.
   3. VLC Player library integration.  We learned in this conference that VLC has some .dll libraries that we can use in our project to record and compress!  We have a couple individuals looking into tying VLC's dshow functionality into our project.

Please contact me if questions arise, and you need clarification on whether a possible solution will work. We have very specific requirements for this project.

3/23/2012 - Reactivating this project!!! Received direction that BYU-H is still interested in a solution. We have two branches going in the source code. I invite you to jump in on either one to see where we go from here. (See information on project options above)

11/04/2011 - Service Day work included more research, and an abstraction update of the working code prior to plugging in Silverlight. Please see comments below in "Research" about the Mitov plugin for visual studio as a fairly low-cost alternative to Silverlight as well.

11/03/2011 - Status is about the same as below. We have had a lot of people join recently however, so we are looking forward to some updates. I just ran across this library that may be helpful as it looks like it does video capture and audio...Open Frameworks[5] - take a look!

This was also a fun tutorial that could prove useful: Using VLC Dshow Library[6]

And one more using C#-.Net and COM: [7]

  • Update - to show that it is possible to tie VLC library with ffmpeg: ISpy (open source surveillance tool) [8] - source code is available for ISpy...

Just thinking outside the box of trying to write all this ourselves!

09/26/2011 - This was the latest feedback from Justin who has done much of this work, but has been unable to finish. We need someone to pick up where he left off, and take these following thoughts into implementation. Please contact me (Tyler Dalton) with any questions:

"The project is fully functioning and works the way BYU Hawaii desires except the encoding library, Microsoft Expression Encoder 4, requires a separate installer. BYUH feels that this installer is too much for the users and would like to change the encoding library to something that doesn't require an installer. I've looked at a few and would recommend either DirectShow.Net or EMGU CV. Here are links to both of those:

In either case, the encoding library needs to record video and audio at a rate of ~500KB/minute...

Once the encoding library is replaced, there are a few little odds and ends that need to be taken care of but nothing major. I left comments in the code of what needs to be completed. After that, some QA work would be great."

There you have it...a couple more things to work out and a need for some QA. Please jump in!


07/11/2011 - A .Net Framework 4 solution has been developed and is ready for review. The solution uses WPF, C#, and the Expression Encoder 4 SDK. The solution meets all requirements, but still has a few "housekeeping" items to be completed at which point it will need QA testing. In addition to this stie, the solution also contains a list of TODO tags for remaining items.

   Items need to be completed:
     Delete thumbnail files on closing
     Enable context menu for playback and delete
     Verify xcopy deployment


This section will discuss the various alternatives (to our current .net/silverlight approach that we have investigated.

-Mitov .Net studio plugin

  I just downloaded[9] and installed Mitov's .Net plugin for visual studio, and went through this tutorial:  I have to admit that they have wrapped DirectShow quite well, and added compression utilities as well.  This is free to work with, but if we decide to use, it may cost a little (the purchase of their plugin for visual studio). 
I would like someone more versed in .Net to try this out as well and see what you think. I've committed 2 sample applications for webcam capturing that came with the download, as well as one about compression in the "demos" folder, to show what it can do. Take a look! can either install the plugin, or just reference the wiki[10] if you prefer working directly with the code.

-VLC Player
  The above link walks through recording a video from default webcam at a specific rate (fps)
  This could be very powerful, especially if we can extract just the parts of VLC that we want...I know there are some libraries that come from VLC that may do this.
***Anyone know if we can include a VLC library in existing code, and call a similar command as seen in the blog link above?
Is this a potential answer?: is another alternative, and according to stack overflow is more updated and maintained.

In the documentation notice the videoGrabber and videoPlayer classes that look like they can list devices as well as grab and play video. There is also a section on Audio/sound that could probably be tied in. I'm not sure about compression however. It does however look promising on the surface.

-Debut Software

  Debut is a fairly simple webcam recording application that meets almost all of our requirements.  We want it a little simpler, so I contacted their technical support, and they are willing to create a modified version of their debut software to meet our needs...depending on how many licenses we can purchase.  I've not heard back from BYU-H on this alternative yet.  Debut however is a standalone exe that does not require any additional downloads (although they do download additional functionality if it is requested - advanced features). 

-ISPY Open source video surveillance
Source code available...I include this one because although it is video surveillance, it is using a lot of the open source projects we've looked into, and we may be able to learn something from it.
This page was last modified on 2 April 2012, at 08:09.

Note: Content found in this wiki may not always reflect official Church information.