Changing the default placeholder image for Canon EOS Webcam Utility

As COVID-19 continues to make remote work a semi-permanent reality, and somewhat inspired by Matt’s setup, I decided to step up my Zoom meeting game by hooking up an old DSLR (my trusty Canon EOS Rebel T3i) as my webcam.

Rather than go for an HDMI capture system, I decided to use Canon’s free EOS Webcam Utility for capture over USB. It doesn’t capture at full HD resolution, but for Zoom calls it’s more than sufficient. However, EOS Webcam Utility has one notable downside: if you forget to turn on your camera, or have a USB connection issue, it broadcasts your failure to the world with this placeholder image that replaces your video:

You forgot to plug your camera in, ya fool.

After one too many instances of forgetting the camera was off, I decided to figure out a way to change the default image. Fortunately it only took a few minutes of spelunking around the macOS filesystem to figure it out.

The EOS Webcam Utility is a standard CoreMediaIO “device abstraction layer” plugin. You can read more about this framework and code at this great GitHub repo, but for our purposes you just need to know that these plugins ultimately are packaged similarly to normal macOS applications, which means that you can poke around their contents. After hunting down the plugin and checking out its innards, I found the jackpot:

The main error image (the one I showed above) is errorNoDevice.jpg. To edit it, I just created a copy of the image, made my changes, and replaced the file.

The full path to the images is:

/Library/CoreMediaIO/Plug-Ins/DAL/EOSWebcamUtility.plugin/Contents/Resources/

OBS too

I also use OBS in conjunction with EOS Webcam Utility. OBS is a powerful app that’s mostly used by streamers and other live video producers; it lets you apply overlays, effect filters, and transition between scenes and input sources with ease. I just use it to crop my video and apply some brightness/contrast filters.

OBS also uses a CoreMediaIO DAL plugin, and also has a placeholder image that betrays your incompetence if you forget to activate OBS’ virtual camera. If you use OBS and want to replace the virtual image, follow the same process as above, and you can find the image at this location:

/Library/CoreMediaIO/Plug-Ins/DAL/obs-mac-virtualcam.plugin/Contents/Resources/

Better than nothing

In an ideal world these applications would provide a way to change these images via a preferences or settings screen (or I would be better at double checking that my camera is working before the meeting starts). But since they don’t, we’re lucky that the macOS plugin bundles are easy to poke around.

Happy Zooming!