webcamize: turning a DSLR into a Linux webcam with v4l2loopback
Use (almost) any camera as a webcam
At a glance
- What is it?
- webcamize is a small C program that drives a camera through libgphoto2, converts the frames with ffmpeg and feeds them into a v4l2loopback device so Linux applications treat a DSLR or camcorder as a webcam. It suits a Linux user with a spare camera, and it is the wrong tool for a macOS or Windows user, where support is still a work in progress.
- Who is it for?
- webcamize is a good fit for a Linux machine with a camera already on libgphoto2 and a need to feed a conference call or a recording tool from a proper camera, because the ffmpeg and libgphoto2 chain is well understood and the CLI surface is small. It is not a fit if your camera is only reachable over PTP or if you need macOS or Windows, since the README states that support for those platforms is still in progress and needs testers.
- Can I use it commercially?
- Yes. BSD-2-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 151 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One command, but the camera has to be reachable over gphoto2
webcamize exists to make a real camera look like a webcam to software on Linux. The README is careful about the scope: basically any modern camera, meaning a DSLR, a mirrorless body, a camcorder, a point-and-shoot, some smartphones and tablets, and it also gets many webcams that do not work out of the box on Linux running. The claim is not that every camera works, since a linked document, doc/supported.md, holds the list of supported cameras and devices, and that list is the first thing to check before you buy into the project. The usage itself is deliberately minimal: plug in the camera, turn it on, run the webcamize command, and in the vast majority of cases that is all you need. You may be asked for your password, because the program has to enable and configure the video device.
The pipeline is gphoto2 to ffmpeg to a loopback video device
The mechanism is a chain of three well-known pieces, and the author says so directly, crediting ffmpeg and libgphoto2 and noting that webcamize itself does little more than orchestrate other open source software. libgphoto2 talks to the camera over the protocols cameras speak, ffmpeg decodes the resulting stream and converts it into whatever format the output device expects, and the frames are written into a v4l2loopback device, which is a kernel module that presents a virtual video device that ordinary applications can open as if it were a webcam. The dependency list in the README names libgphoto2, ffmpeg with libavutil, libavcodec, libavformat and libswscale, v4l2loopback DKMS, libkmod and Linux headers. The Makefile confirms the shape, using pkg-config to pull in the gphoto2 and ffmpeg flags and adding libkmod only on Linux with a USE_LIBKMOD define.
The command surface is small, and one flag changes the conversion
The help output is compact enough to read at a glance, and it shows that most of the flags exist for scripting rather than for interactive use. A camera can be selected by name with --camera, otherwise it is autodetected. --file writes the output to a file or to stdout, which is the flag that makes the tool usable as a component in a pipeline. --wait daemonizes the process so it does not exit. --no-convert disables the format conversion step, and --fps caps the maximum frame rate at 60 by default. There is also --status for a status report, --log-level with DEBUG, INFO, WARN and FATAL, --no-color, and --version.
Building is a make with no configuration, but the dependencies are the hard part
The build is deliberately configuration-free, and the README says so. The source lives in a single file, webcamize.c, at the repository root alongside the Makefile, and the whole program compiles with one command.
$ git clone https://github.com/cowtoolz/webcamize && cd webcamize
$ makeInstallation is one line that picks the target based on whether your local bin directory is on PATH.
$ echo $PATH | grep -q ~/.local/bin && make install-local || sudo make installThe interesting part is what has to exist before that. The build flags in the Makefile include -march=native and -mtune=native alongside -O3, -ffast-math and -funroll-loops, which means the resulting binary is tuned to the machine it was compiled on and is not portable to a different CPU. The source tree also contains a .clang-format file, so the project follows a defined C style.
Packaging is thin, and the author says so
The README states plainly that webcamize is a small hobby project and is probably not available through your distribution's package manager yet, and the author asks for someone to maintain a package. The one concrete route given is the Arch User Repository, where the package is named webcamize and installs with yay -S webcamize. A Nix and NixOS section exists in the readme but is commented out, so it is not an active path. The repository also carries a repology badge, which tracks how many distributions package a project, and a link to a stargazers chart. The BSD-2-Clause licence is permissive, and the license file sits in the repository root.
macOS and Windows are promises, not features
The most important line for anyone not on Linux is the important callout at the very top of the README: progress is underway towards full support for both macOS and Windows, and significant help is needed in testing on those platforms. The rest of the documentation is Linux specific, from the v4l2loopback dependency to the Linux headers and the libkmod conditional in the Makefile. The project is written in C, and the GitHub language badge in the README shows C at 100 percent, so there is no cross-platform toolkit hiding underneath. Treat macOS and Windows as an invitation to help rather than a supported configuration.
The project asks for testers more than features
The contributing section states a simple philosophy: if the project is not helping you then there is a bug, if you are having a bad time using it then there is a bug, and if the documentation is confusing then the documentation is buggy. Issues are welcomed with the phrase noobs welcome, which tells you something about the intended audience. The maintenance picture is mixed. The last push to the repository was on 2026-05-25, and the tagged releases are v2.0.1 from 2025-06-10, v2.0.0 from 2025-05-29 and v1.2.0 from 2023-08-10. The two 2.0 tags are close together and are marked with release emojis suggesting a rewrite and a fix, while the gap back to 1.2.0 spans close to two years. The 2.0 releases from 2025 are far newer than the 1.2.0 tag from 2023.
Editorial conclusion
webcamize is a good fit for a Linux machine with a camera already on libgphoto2 and a need to feed a conference call or a recording tool from a proper camera, because the ffmpeg and libgphoto2 chain is well understood and the CLI surface is small. It is not a fit if your camera is only reachable over PTP or if you need macOS or Windows, since the README states that support for those platforms is still in progress and needs testers. Verify first that your exact camera appears in doc/supported.md and that v4l2loopback is installed, because without that kernel module the program has nowhere to write the frames.
Frequently asked questions
What does webcamize need to work on Linux?
libgphoto2, ffmpeg with the libavutil, libavcodec, libavformat and libswscale libraries, the v4l2loopback DKMS module, libkmod and Linux headers, all available from your package manager. The v4l2loopback module is what provides the virtual webcam device.
How do I install webcamize?
From the Arch User Repository with yay -S webcamize, or build it from source with make followed by make install or make install-local depending on whether ~/.local/bin is on your PATH. The README notes it is a hobby project and may not be packaged by your distribution yet.
Can webcamize record to a file instead of a webcam device?
Yes. The --file option takes a path, and if no argument is passed the output goes to stdout, which lets you pipe the converted stream into another program. The --no-convert option skips format conversion entirely.
Does webcamize work on macOS or Windows?
Not fully yet. The README states that progress is underway towards full support for both macOS and Windows and that significant help is needed in testing on those platforms.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/cowtoolz-webcamize)Was this useful?