A Better Webcam

For the past few months I’ve been wishing that I had a better camera for video calls at work. This came before our recent isolation for the novel coronavirus, as a lot of the work I do is with remote clients, but now even conversations with coworkers I used to sit beside are happening online. The cameras in laptops are built-in and convenient but not that good (Nilay Patel calls the one in the latest MacBook Air “aggressively fine”), and I prefer to use a single, large monitor if I’m at a desk so the laptop is in clamshell mode. Webcams don’t seem to output video that’s much better than a FaceTime camera, and the premium ones like Logitech’s Brio still can’t match the picture from a decent smartphone camera. I’m not streaming to make money, but it seems like it should be possible to get high-quality video, and so I fiddled with a few options and eventually arrived at a very specific solution that worked for me. I’m now using a Canon 5d Mark II DSLR as my webcam, which is absolutely overkill for videoconferencing, but it looks great. I wanted to document how you could do this sort of thing yourself with another camera you might already own, and with the 5d Mark II specifically.

One consideration in choosing a camera was that if I could use something I already owned, like an old iPhone or camera, then I’d be able to give something new life instead of buying new. Older cameras are more than good enough for this use, and a common option you’ll see being used for streaming is a Sony A6X00-series mirrorless camera. I’ll briefly describe my attempts at using an iPhone for the sake of documentation, and then I’ll return to using a real camera.

I had an iPhone 6 sitting in a drawer unused, and its camera is good-but-not-great. I figured it was worth a shot to see if it could be repurposed as a webcam. Unsurprisingly, there are a bunch of options on the App Store just for this use case. The one I tried was EpocCam by Kinoni. One thing that all of these kinds of apps will require is software on your Mac that turns the video stream into a virtual camera, so that it behaves as if it were a real webcam plugged into a USB port. This is something that Apple provides API for (see this up-to-date example), but I wouldn’t call it supported. You’ll even see in EpocCam’s FAQ that Apple’s apps you probably want to use your new “webcam” with, like Safari, FaceTime, or Photo Booth, won’t actually support it because they’re now built with the Hardened Runtime enabled and won’t load the EpocCam plugin. It will work with other apps like Chrome or Zoom, though, so this might be a good option for you. I had some issues with the iPhone not being detected as a webcam sometimes, though, and Safari is my preferred browser, so in the end I kept looking for a better solution.

Like I mentioned before, a lot of streamers will use a real camera in order to get better image quality. There are lots of options for getting that video into a computer, but importantly it needs to be streamed live (as opposed to recorded to a memory card that’s then transferred) and ideally it would appear as a normal webcam so that it works with any app just like a built-in FaceTime camera does. The latter requirement is easily met if the device supports USB Video Class.

There is a software solution that works a lot like EpocCam does, but it has the same drawbacks. For Canon cameras there’s the v002-Camera-Live project that turns a USB-connected camera into a Syphon video feed. This can then be used as an input to CamTwist which turns it into a virtual webcam, and also lets you apply effects to the video feed if you want. I wanted to mention this option here in case it works for you, but ultimately I needed to look at hardware in order to support all videoconferencing apps.

The Elgato Cam Link 4K is a well-known name-brand device that is built exactly for this. On one side is an HDMI input port and on the other side is a USB port that you plug into your computer where it’ll work just like a webcam without any other software required. This means that any camera that can stream video over HDMI can give you great quality video for conference calls, whether that’s a Sony A6X00, GoPro Hero or my 5d Mark II.

Another aside: GoPros seem appealing for this use case since they’re so compact and easy to mount to things. Note that small cube-shaped Session models don’t have an HDMI output, and the latest Hero 8 requires an add-on for it. This would be a good opportunity to buy an older, used model in order to save some money and give it a new life.

I finally had a path forward for using the 5d sitting in my closet, but there were some last details to iron out. First, it’s not practical to have an old DSLR streaming HD video while running on batteries because you’ll be recharging and swapping them pretty often. You’ll need an AC “dummy” battery, and I got this one, for example. Second, you want the video stream from the camera to be “clean”. In other words, you don’t want any of the information overlays from the camera like settings, focus indicators, or masks to show up while you’re on a video call. Some cameras make this really easy, but some, like my 5d, don’t. While you can get rid of almost all of the overlays in the 5d Mark II settings, you can’t get rid of the translucent letterboxes or the focus box. My camera was sitting at this point in the process for a few days and I had to explain why I had a weird white box on my face to a handful of coworkers.

The 5D Mark II was especially popular when it first came out because of its video recording features. Of course, people wanted to push the limits of what it could do, leading to the Magic Lantern firmware that added higher quality video formats and products like the Atomos Ninja that let you record to external media. And people that want to record video out of live view don’t want overlays either, so I figured this would be a good path to explore. I got lucky. This video explains how to set up a 5d Mark II to use with a Ninja recorder, and by the end you’ll have a camera that can output a clean live view signal over HDMI. Perfect for input to the Cam Link 4K.

The 5D Mark II isn’t a perfect solution, though. I like the shorter depth of field that this camera gives compared to a webcam, but it needs to be large enough that I can move around a bit at my desk and stay in focus. I’m using the cheap 50mm f/1.8 lens, which is just wide enough to get a shoulders-up shot from where it’s mounted. f/1.8 is way too shallow for this purpose, though. The camera can’t do hands-free continuous autofocus in live view, and I can’t reach the button while seated, so I’ve got it set to f/8 and the right fixed focus distance for now. This aperture limits the amount of light it gets, so the automatic ISO shoots up to its noisy maximum at night when there’s less natural light. It’s also not possible to control the camera over USB with live view outputting over HDMI. This means no adjusting camera settings with Canon’s EOS Utility or gphoto2 while seated, which would have been a nice workaround. Too bad.

All in all, though, I was able to put an older DSLR to use, giving me great videoconferencing quality for the price of a few extra parts. If you don’t already have a camera like this sitting around then I wouldn’t seek out a 5d Mark II, but there are plenty of other good, used still and video cameras available that will work similarly. With the prevalence of videoconferencing, and its rapid rise lately, hopefully traditionally webcams and laptop cameras will improve their quality in order to make the communication experience more real. And if not, there’s always overkill.