Some quick improvements for the home video conferencing experience

After a few months of full time working from home, there are a couple of things that I have done to improve the video conferencing experience. Well, for me, anyway.

Having a decent webcam will be a big improvement in the quality of your video. And it can give you some added flexibility with positioning over the webcams that are built into laptops.  Even though they are hard to get now, they are well worth the money.

For a long time, I used a Microsoft LifeCam.  It was more or less fine, but every time I sat back in my chair, it would hunt for focus.  That’s an unnecessary distraction.  I wrote some code to deal with that.  And that became a project that still lives on.  But I no longer use that webcam.

I bought a Logitech (sorry, I refuse to say “logi”) c922 webcam.  It had the resolution that I wanted and a tripod mount on the base. It tilts up and down but oddly doesn’t adjust from side to side.

I’m pretty sure it came with a tripod, but at the moment I’m not exactly sure where that went.  I have it mounted on an old JOBY Gorillapod that I had in my camera bag.  It’s an older one, without the adjustable head. 

With the c922 on the tripod, I can move the webcam around as it suits my mood.  I like having the camera at more or less eye level.  With my PC, when it was mounted on top of one of the monitors, so it was always looking down on me.  With the tripod, I can place it in between two of the monitors and at eye level.

Webcam deployed

Sometimes I want it at a slight angle from my face.  With the webcam free to move around, that makes it easy to adjust.  I’ve been in meetings where we spend most of the time going over documents, and we don’t need the “eye to eye” viewpoint.

If you are doing a family Zoom meeting, it’s handy to connect a laptop to a TV and then be able to move the webcam so that it’s in front of the TV.  And yes, sometimes I just aim the webcam at the dogs.

Every day is now take your work to dogs day

At this point, replacing the background of your webcam is getting a bit tired.  But early on in WFH mode, it was fun to change it up.  At work, we use Teams, and back in March, it didn’t support virtual backgrounds.  So I bought a license for XSplit VCam.  VCam lets you use static images, videos, and even YouTube links for the background.  And it will let blur any of that with fine control over the level of the blur.

One of my teammates had bought a house last year from another co-worker.  Thanks to that co-worker, I was able to grab pictures from the real estate listings for the house.  For our first standup meeting after WFH, it looked like we in the same house.  It’s a fun trick but grows tiresome after a few times.  Also, do not make your webcam background a live feed of puppies playing.  Unless bringing a meeting a flying stop is the desired outcome, then, by all means, go ahead.

Puppies, the meeting killer

The meeting apps that have the virtual background (and the 3rd party apps) can usually do the replacement without a green screen.  But if you have an actual green screen, you can get better results.  When I was given the WFH order, that night I bought the parts to make one.  It’s basically a 2×4, some PVC pipes, and cheap green table clothes.  I think I spent $15 at Home Depot and a dollar store.  I followed the instructions from this video:

It was cheap and easy.  And I can tear it down in seconds.  If you have kids at home that are bored out of their minds, let them use a green screen and make their own videos.

Another thing I did was play around with the lighting.  By genetics and behavior, I’m pretty pale.  If the lighting is not balanced, I look like Caspar.  And not in a good way.  For Christmas, I received a Circadian Optics Lattis Light Therapy Lamp as a gift.  It’s very bright and full spectrum.  For the longest time, I couldn’t figure out what to do with it.

Now, when I’m in a video meeting, I turn the Lattis light on, but I have it facing the wall by my desk.  By bouncing it, I’m getting a nice gentle fill, instead of the light of a thousand suns.  I have a window directly behind me and having a light source off to my side keeps me properly lit.  The Lattis has three settings, Low, Medium, and I’m Going Blind.  I find the lowest setting works the best.

At the lowest setting

Then there’s the audio.  If you are going to be in video meetings, get a decent set of headphones with a noise-canceling microphone.  If your environment has other people in it (like children, spouses, angry farm animals), the other people in the meeting will appreciate it. 

I have a Macbook and a Windows desktop and on the Mac, I use my Jabra earbuds.  They fit well and the microphone is good enough.  On the Windows box, I use a set of cheap headphones, the Microsoft Lifechat LX-3000.  They get the job done and they work with everything.

Work From Home is the new normal for me. And based on current conditions, I don’t expect that will change for a few months, probably longer. So it’s important to me to do what I can to improve the video conferencing setup.

In other news…

Next week, I’m restarting the TVUG user group after a few months of hiatus. It’s on Tuesday, the 12th. You can join in via this handy link via Teams. I’m going to be the presenter, so it’s important that the audio and the visual work well.

And don’t even get me started on chairs…

FocusUF or how to turn off the autofocus setting of the LifeCam HD-5000 webcam

Welcome to the FuzzyCam

Note from the future: I updated the code and blogged about it here.

Why am I out of focus? It’s because I have a Microsoft LifeCam HD-5000 and I’m running Windows 10. The LifeCam HD-5000 webcam is a decent webcam with an annoying feature. The autofocus keeps shifting the focus around if you move your head slightly. It goes in and out of focus and locks in after a second or two.  When you are in a video chat, this can get very annoying (very quickly) for the other viewers. Your face will shift in and out of focus and it’s just a distraction.  Microsoft used to supply drivers for the HD-5000 and it had a control app where you could adjust the focus settings. Since Windows 8, they stopped as the OS directly supported the webcam.

I’m not able to sit motionless while on a webcam. I needed a work around. There is a registry hack that lets you turn off autofocus. I prefer to avoid hacks like that when it’s something that I could code around. So after seeing some stuff on StackOverflow on how to use the IAMCameraControl interface in DirectShow, I wrote a tiny command line app called FocusUF.

FocusUF uses the DirectShowLib library library to provide nice, friendly C# access to DirectShow. The DirectShowLib library maps the DirectShow Interfaces for use from a .NET app. With that library, it was little more than a handful of lines of code to access webcam controls. The app is hard coded to connect to a LifeCam HD-5000, but it would be easy enough to change the code for other webcam.

The code was written with Visual Studio 2017, it has not been tested with any other compiler. The source code is up on GitHub via this handy little URL.

How it works

To use the DirectShowLib library, I added it via nuget.

Install-Package DirectShowLib

The next step was to get access to the webcam. Using DsDevice from DirectShowLib, I was able to get the list of devices for the category of VideoInputDevice. Then I do a LINQ query to filter that list for the first match “Microsoft® LifeCam HD-5000”. If you are having a autofocus problem with a different brand or model of webcam, just replace that name with the name of your webcam. You can dump out the list of DsDevices and peek at the name property until you see your webcam.

Now that I have a DirectShow  sDevice that represents the webcam, I create a filter to expose the control interface of the web cam. DirectShow uses a module system called filters to expose device functionality. I create a new object that implements the IFilterGraph2 interface so that we can add a new filter. After getting that filter, I cast it to an IAMCameraControl to get access to the setter and getter methods. I get the current focus level and mode from the webcam.  I then set the focus to the current level and force the focus mode to manual.

How to use

Launch the app that will be using the webcam. Wait until it is in focus and then run FocusUF. It will detect the webcam and flip the autofocus setting to manual and lock it to the current focus setting. The setting will persist until the webcam is reset or another app changes the focus setting.

I probably looked better out of focus…

The name “FocusUF” is a tip of the hat to the YouTube channel AvE, where the host uses the phrase “Focus You F@*&” whenever his video camera loses focus.