Articles · · updated
How to Use a Virtual Camera on Windows 10 and 11
Why a virtual camera shows in Zoom but not the Windows Camera app, what DirectShow registration involves, and the elevation and 32-bit traps.
We make CamLooper, one of the tools this article recommends. Why we write these guides.
Windows is the easiest platform to get a virtual camera running on and the most confusing one to debug, because Windows has two different camera systems and an app can use either. A device that is perfectly healthy in Zoom can be genuinely absent from the Windows Camera app, and neither is broken.
Why does my virtual camera not appear in some Windows apps?
DirectShow is the older API. A virtual camera is a COM object — a filter registered in the registry under a CLSID and listed in the video input device category. Anything enumerating DirectShow capture devices finds it alongside your real webcam. Zoom, Teams, Discord, OBS, Chrome, Firefox and Electron apps all do this, which is why DirectShow is what virtual cameras target.
Media Foundation is the modern API, and until recently it had no supported way for software to register a virtual camera at all. Windows 11 added a frame-server API for this, but it requires a signed driver package and a different install path, and uptake is limited. UWP and Store apps — including the built-in Camera app — go through Media Foundation.
The practical consequence is worth stating plainly, because it sends people down long troubleshooting paths for no reason: your virtual camera not appearing in the Windows Camera app does not mean anything is wrong. Test with a browser-based webcam test page or your conferencing app's preview instead.
Setting one up
Installation is where the registration happens, so the install matters more than the app.
- Accept the UAC prompt. Writing to
HKLM\SOFTWARE\Classes\CLSIDrequires administrator rights. An install that was declined elevation, or run from a restricted account, leaves you with an app that runs and a camera that never appears. - Watch for antivirus interference. Registering a capture filter is exactly the shape of behaviour heuristic scanners flag. Some silently block the registry write while letting the install report success.
- Load your video and start the camera. With CamLooper that is picking the file and pressing start; the device is live while the app is open.
- Then open your conferencing app. Not before — see below.
Why is my virtual camera missing from Zoom's camera list?
Zoom, Teams and Discord enumerate cameras at launch and then stop looking. A virtual camera that registers afterwards will not appear, however many times you reopen the settings panel. This is the most common cause of a fake cam that seems not to work on Windows.
Closing the window is not enough, either. All three keep running in the system tray. Right-click the tray icon and quit properly, start the virtual camera, then start the conferencing app.
Check the registration yourself
In PowerShell:
Get-ChildItem 'HKLM:\SOFTWARE\Classes\CLSID' | Where-Object { $_.GetValue('') -like '*CamLooper*' }
Nothing returned means the filter is not registered, and every app is right not to list it. Reinstall and accept elevation. CamLooper also re-registers its driver on first camera use when it finds the entry missing — that is the one UAC prompt you may see when starting the camera rather than during install.
Why does the camera work in Chrome but not an older app?
A 64-bit process can only load a 64-bit filter, and a 32-bit process only a 32-bit one. They live in
different parts of the registry: 32-bit registrations are redirected to
HKLM\SOFTWARE\WOW6432Node\Classes\CLSID.
So if the camera shows up in Chrome and Zoom but not in some older application, the app is probably 32-bit and only the 64-bit filter is registered. Installers that ship both cover this; if yours does not, there is no configuration that fixes it from outside.
Which Windows privacy settings block a virtual camera?
Windows has a system-wide camera switch that applies to apps regardless of which API they use. Under Settings → Privacy & security → Camera, check:
- Camera access is on for the device.
- Let apps access your camera is on.
- Let desktop apps access your camera — a separate toggle further down, and the one that governs Zoom, Chrome and your virtual camera app. It gets missed because it sits below a long list of Store apps.
A blocked app here usually shows a black frame rather than an error, which looks like a broken camera.
One consumer at a time
Windows capture devices are usually exclusive. If a browser tab from an earlier test still holds the camera, or Zoom is minimised with video on, the next app gets a black frame or nothing. Close everything that touches a camera before retrying — including tabs, which keep a device open until the page is closed or reloaded.
Windows Studio Effects and vendor software
Machines with an NPU offer Windows Studio Effects — background blur, auto-framing, eye contact — and laptop vendors ship similar utilities of their own. These apply to physical cameras, not to a virtual device, so if you were expecting your looped video to be auto-framed it will not be. More usefully: if your real camera is being held by one of these utilities, that is another consumer competing for the device.
A quick checklist when it will not work
- Is the virtual camera app running, with the camera started, not just the file loaded?
- Did you fully quit the conferencing app — including the tray icon — before starting it again?
- Does the device appear on a browser webcam test page? If yes, the camera is fine and the problem is the app's device list.
- Is the CLSID registered (PowerShell check above)?
- Is Let desktop apps access your camera on?
- Is another app holding the device?
The cross-platform troubleshooting guide covers the same ground for macOS and Linux. Work down that list and there is very little left that can be wrong. If the device is listed and selected but the picture is black, that is a separate problem — most often a resolution the app will not accept. Encode at 1280×720, which every app supports — see the settings guide.