I finally set up my DSLR camera as a webcam, and it’s pretty cool. I wanted to share this post because I couldn’t find good, complete resources about it and I thought it might be useful for folks out there (and because future me will probably want it). Here’s everything I learned.
Here’s what I’m working with. Your setup may be different:
- Camera: Canon EOS 60D
- Operating System: Ubuntu 20.10
Before we get started, this may be a non-issue for a lot of folks as it’s common for camera manufacturers to create software for this. Canon, for example, make their EOS Webcam Utility that makes it easy for Windows or OSX users. But I use Linux (cue sad trombone).
If you’re like me and a handy webcam utility is not an option, let’s continue.
Firstly, make sure your camera is supported by checking this list: gphoto.org/proj/libgphoto2/support.php.
Install required software:
sudo apt install gphoto2 v4l2loopback-utils v4l2loopback-dkms ffmpeg
Next, run this random command. I’m still not 100% sure what it does, but I think it creates a “dummy” video capture device for you to use. This will make more sense later.
sudo modprobe v4l2loopback
Now, you can connect your camera and turn it on. After connecting your camera, you may see this icon:
This icon means your camera is connected as a drive. You don’t want this as it will interfere with the webcam utility.
Easiest way to deal with this is to kill all the gphoto processes by running this command:
If you just want to see the processes, you can use this command:
ps aux | grep gphoto
Now, with the camera ready, we need to see where the “dummy” video device is mounted by running this command:
You may see a number of different drives like the image below. The key thing to pay attention to is the “Dummy video device (0x0000)” drive. You’ll need to reference that in the next step.
Now we can use gphoto to control the camera with the following command. Note the reference to the dummy video. Yours may be different. It’s also possible to change on your same computer at a later point in time.
gphoto2 --stdout autofocusdrive=1 --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video4
With that command running, your camera should have started capturing video and you should see some live text processing the video in the terminal. To test it, feel free to check it on any website like webcamtests.com.
Unfortunately, the steps above are tedious, so the first thing you’re going to want to do is automate them. I prefer using Bash aliases to make it easy.
First, we’ll open our
sudo nano ~/.bashrc
I like to make one called “prepcam” to setup v4l2loopback and kill gphoto. Then I make another one called “dslrcam” to start the webcam. To do the same, add these lines to the bottom of your
alias prepcam="sudo modprobe v4l2loopback && pkill gphoto" alias dslrcam="gphoto2 --stdout autofocusdrive=1 --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video4"
With those changes in place, we can save and close the file. If you used
nano like me, use
ctrl+x, then when it prompts you to save, press
y, and finally hit
enter to keep the file with the same name.
We also need to load the changes in our Bash profile.
You’ll probably also want to pick up a dummy battery. These are things that look like camera batteries, and as far as the camera is concerned work like camera batteries, but they have a cable that plugs into the wall. These are handy to provide a consistent power source without the need to recharge.
For my camera, the model I was looking for was called “LP-E6 Style Dummy Battery”.
Picking up a USB hub was the next thing I would recommend. I like it because I use my camera in conjunction with a microphone on a boom arm and I like having a single cable to connect for my “recording mode”.
This was a fun project for me to work on, and I’m happy with the results. With that said, it was only worth it because I already had a DSLR camera I don’t use that often.
If I were to start from scratch today, I would make my life much easier by either picking up a camera that makes this all simpler.
If you want to pick up a nice camera that doubles as a webcam, the Sony ZV-E10 Mirrorless Camera seems like it should only need a USB connection and be ready to go.
If all you want is a webcam, the best reviews I’ve found are for the Lgitech C922 Pro and compared to a full on camera, it’s MUCH cheaper at around $75. It won’t serve as a camera as well, but hey, smartphones are pretty darn good these days.
Originally published on austingil.com.