ScreenCoder 2.0

By Jacob Klint (jklint@juno.com)

Created for the

UC Irvine Paul Merage School of Business

7/2005 - 5/2006



Introduction

Usage



Introduction (back to top)

ScreenCoder is a tool for streaming and archiving video screen captures. However, it is robust and flexible enough to suit a broad variety of needs. For instance, its first use was to stream live video from university TA sessions and maintain archives of these videos. Since then, it has grown to include several output methods (record to file, push and archive to a Windows Media streaming server, stream directly from the encoding machine) and myriad niceties for managing screen captures. While you could achieve identical results using the vanilla Windows Media Encoder, it would require far more work, to the point of being impractical. We know this from experience.

In fact, based on our research, the best software for comparison is Camtasia, a high-quality (and high-price) screen capture suite. ScreenCoder provides much of the functionality of Camtasia, and it's completely free. Moreover, it provides archive management and other Windows Media-specific technologies that Camtasia does not implement.

So try it out before paying money for other software that may not fit your needs. You have nothing to lose because ScreenCoder is completely free!

Download the latest version here: http://webfiles.uci.edu/jklint/work/screencoder20.zip

Credits (back to top)

This program was designed and implemented entirely by Jacob Klint (me) for the UC Irvine Paul Merage School of Business. I am currently (as of 5/2006) an undergraduate majoring in Information and Computer Science at UC Irvine and will graduate in August 2006. I plan to work in the Southern California area beginning this summer and am actively pursuing job opportunities.

History (back to top)

For several years, the Paul Merage School of Business has provided high-quality video streams of several of its TA sessions through the Windows Media platform, a free product from Microsoft. However, the software from Microsoft is geared towards one-off recording sessions and lacks several important features for automatically managing video archives. Furthermore, we were frustrated trying to mix several video sources (live video cameras, document projectors, and remote computer screens) while maintaining quality and legibility.

I began experiments to develop a new capture process in July of 2005. After several failed attempts, I hit upon the idea of using a pure screen-capture solution rather than trying to switch between different hardware devices. With that in place, I came up with methods for placing all our video sources on-screen: a VNC window (with high-quality scaling) provided access to remote computer screens and a Directshow-based video window provided live video. Moreover, this approach opens the doors to any number of different sources. Basically, anything that we can see on a computer screen we can incorporate into a broadcast. We've used this for mixing old video archives with live broadcasts and for including text and images.

With our capture method secure, I next tackled the issue of usability. While all this could be done manually, I wanted a solution that would provide easy point-and-click functionality and take away the complexity of creating and maintaining the folder structures we had been using for archiving videos on the server. Using Visual Studio 2003 (C#) and the Microsoft Windows Media SDK, I created a GUI that integrated three main functions:

  1. A window manager for arranging and changing between source windows (ie, other windows from other programs that we wanted to broadcast)

  2. A record manager for maintaining recording and archiving settings for all our different classes (each record I called a “session”)

  3. An encoder that could handle a recording session from start to finish.

I was pleasantly surprised to find that the Windows Media SDK is a very complete and open product that readily facilitates custom encoding applications such as this. The first version went live in September 2005. We have used it for several hours of recording per day since then without major incident.

Since launch, I have worked on the program off and on as school and other work permitted, implementing various features and improvements that I had left out or that arose during operation. With version 2.0, I feel ready to release this program for public consumption. I hope others will benefit from this program and find novel uses for it, so please shoot me an email and let me know what you think!

Requirements (back to top)

ScreenCoder is designed for PC's running Microsoft Windows XP . It is dependent on several other software packages:

As for hardware, I recommend at least a 2 GHz machine with 512 MB RAM or more. Honestly, you need a terribly powerful machine, especially if you plan to run multiple streams simultaneously (which ScreenCoder can do!). For some perspective, we run this program on a dual Xeon 3.4 GHz with 1 GB RAM with two simultaneous screen caps at 640x480, 30 FPS and we see about a 30 – 40% CPU usage per stream.

License (back to top)

XMLerator Copyright (C) 2006 Jacob Klint

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  exluding commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

  If you have any commercial interest in this product, please contact the author:

  Jacob Klint jklint@juno.com

Usage (back to top)

[Note – this section is highly incomplete! I have not had time to document every feature, so experiment and who knows what you may find :) ]



Basic usage is as follows:

  1. Create a recording session and choose an encoding profile and output method.

  2. Set capture devices in the Options (Tools -> Options) dialog.

  3. Open the windows you want to capture, hit “Choose windows” on the main screen, and check off the programs in the list. You will then see a tile for each window in the list on the right-hand side of the main window. Clicking on a tile brings that window forward above all others. Click “Position windows” to have ScreenCoder intelligently arrange all selected windows inside the capture frame.

  4. Highlight a recording session (or multiple ones!) in the main window and click “Start Encoding”. Click stop encoding when finished.



A couple tips for improving capture performance – lower or disable video hardware acceleration (in Windows, go to “Display Properties”->Advanced->Troubleshooting and move the slider there). If you try to capture from a video window but instead just see a black screen, this will solve the problem. It usually also improves the frame-rate and CPU usage. Finally, only use Windows Media profiles based on the Windows Media Video 9 codecs as earlier versions will fail.



last updated: 4/27/2006