A virtual camera is a software webcam your operating system lists alongside physical cameras. Zoom, Google Meet, Microsoft Teams, Discord, and OBS all let you pick a camera device, when you select a virtual one, they receive whatever video that driver publishes. For live face swap, that video is your LiveSwap persona output, routed from the browser through OBS.
This guide explains the concept, walks through setup step by step, compares Mac and Windows behavior, and troubleshoots the most common detection failures. Part of our setup guide hub. For app-specific policy and quality notes, see the virtual camera platform hub.
What is a virtual camera?
Your laptop's built-in camera is a hardware device. A virtual camera is software that registers a similar device name, "OBS Virtual Camera," "ManyCam Virtual Webcam," etc., so applications treat processed video as if it came from a lens pointed at you.
Live face swap adds a processing step:
- Physical webcam captures your real face
- LiveSwap browser tab sends frames to cloud inference
- AI swap replaces your face with a locked persona
- OBS browser source displays the swapped output inside OBS
- OBS Virtual Camera publishes that scene as a webcam device
- Zoom / Meet / Teams selects OBS Virtual Camera and shows your persona
Without step 5, meeting apps never see the swap, they only access your hardware webcam directly. That is the single most common setup mistake.
LiveSwap targets sub-500ms end-to-end latency through this chain. Virtual camera overhead is minimal compared to network round-trip time.
Step-by-step virtual camera setup
Start LiveSwap in your browser
- Sign in and open
/app/streaming. - Select a persona from the avatar sidebar.
- Click Go live and grant webcam permission.
- Wait for ON AIR, the swapped face fills the main stage.
- Keep this tab open and visible; OBS will capture it.
Upload and prep are free. Credits meter only after swap output is live.
Enable virtual camera output (OBS method)
LiveSwap's in-app Connect to OBS button (visible when streaming) opens a four-step guide. Here is the expanded version:
Install OBS Studio from obsproject.com if needed. Version 26.0 or newer includes virtual camera support without third-party plugins.
Add a Browser source:
- Open OBS Studio
- In the Sources panel, click +
- Choose Browser
- Name it "LiveSwap" → OK
- Paste your LiveSwap streaming page URL (the
/app/streamingaddress while logged in) - Set Width and Height:
- Basic plan: 854 × 480
- Creator: 1280 × 720
- Pro/Studio: 1920 × 1080
- Check Refresh browser when scene becomes active
- Click OK
Crop to the swapped output:
The streaming page shows UI chrome around the video. Crop to just the swap:
- Select the Browser source in OBS
- Hold Alt on Windows or Option on Mac
- Drag the red crop handles inward until only the swapped face fills the source box
Start Virtual Camera:
- In the Controls dock (bottom-right), click Start Virtual Camera
- The button changes to Stop Virtual Camera when active
- Optional: click the gear icon next to it to choose output mode (Program is default, shows your current scene)
OBS now publishes the cropped LiveSwap feed as OBS Virtual Camera.
Select it in your target app
| Application | Camera setting path |
|---|---|
| Zoom | Settings → Video → Camera → OBS Virtual Camera |
| Google Meet | Meeting → Settings (gear) → Video → Camera → OBS Virtual Camera |
| Microsoft Teams | Settings → Devices → Camera → OBS Virtual Camera |
| Discord | User Settings → Voice & Video → Camera → OBS Virtual Camera |
| Slack | Preferences → Audio & Video → Camera → OBS Virtual Camera |
| Skype | Settings → Audio & Video → Camera → OBS Virtual Camera |
| Webex | Settings → Video → Camera → OBS Virtual Camera |
Test before joining: every app above includes a preview pane. Confirm your persona appears before entering a live meeting.
For OBS-as-encoder streaming to Twitch or YouTube, the Browser source lives in your scene directly, virtual camera is optional unless another app needs the feed. See face swap in OBS.
Virtual camera on Mac vs Windows
Windows
OBS Virtual Camera uses a DirectShow filter installed with OBS. Supported on Windows 10 and 11 with OBS 26.0+.
Permissions:
- Settings → Privacy & security → Camera
- Enable Camera access and Let desktop apps access your camera
- Ensure Zoom, Teams, and OBS are allowed
Tips:
- If OBS Virtual Camera disappears after an OBS update, reinstall OBS to re-register the DirectShow filter
- Multiple apps can often bind the same virtual camera simultaneously on Windows
- Windows Camera app can verify OBS Virtual Camera independently of Zoom
Performance: close Xbox Game Bar background capture if you see frame drops. Wired Ethernet beats Wi-Fi for upload stability.
macOS
OBS Virtual Camera requires OBS 26.1.1 or newer on macOS 10.13+.
Permissions (critical):
- System Settings → Privacy & Security → Camera → enable OBS and your browser
- System Settings → Privacy & Security → Camera → enable Zoom, Teams, etc.
- After OBS updates, macOS may prompt again, re-grant access
Tips:
- Some apps only enumerate cameras at launch. Quit Zoom completely (Cmd+Q), start OBS Virtual Camera, then reopen Zoom
- macOS sometimes allows only one app to consume a virtual camera at a time, close other apps using the camera
- If Start Virtual Camera is missing, update OBS via Help → Check for Updates
Apple Silicon vs Intel: both work. Chrome and OBS are native on Apple Silicon; no Rosetta requirement for this workflow.
Linux
OBS Virtual Camera on Linux requires the v4l2loopback kernel module, a one-time setup. Consult the OBS Virtual Camera Guide for distribution-specific instructions. Browser support for LiveSwap is the same; virtual camera plumbing is the variable.
Troubleshooting virtual camera detection
Use this prose decision tree:
Is OBS Virtual Camera running? If not, click Start Virtual Camera. The button must show "Stop Virtual Camera."
Did you open the target app before starting virtual camera? Restart the app. Zoom, Meet, and Teams often cache the camera list at launch.
Does OBS Virtual Camera appear in OBS's own log? Help → Log Files → View Current Log, search for virtual camera errors.
macOS permissions? System Settings → Privacy & Security → Camera, confirm OBS and the meeting app are toggled on. Toggle off and on if stuck.
Windows privacy? Settings → Privacy → Camera, desktop app access must be enabled.
Is the Browser source showing a black rectangle? LiveSwap session may not be ON AIR. Confirm swap renders in the browser tab, then right-click the Browser source → Interact to verify, or Refresh.
Wrong URL in Browser source? Use the authenticated streaming page URL. Logging out breaks the feed.
Still missing? Reinstall OBS. On Windows, the DirectShow filter occasionally corrupts; on Mac, the virtual camera plugin re-registers on reinstall.
Swap visible in OBS preview but not in Zoom? Zoom may still point at your hardware webcam. Re-select OBS Virtual Camera in Settings → Video.
For black screens and face detection issues beyond virtual camera scope, see troubleshooting guide.
Virtual camera vs OBS browser source (direct)
Two valid OBS integration paths exist:
Browser source in scene (streaming): LiveSwap renders inside an OBS scene. You stream the composed scene to Twitch/YouTube. No virtual camera needed unless a second app also wants the feed.
Virtual camera passthrough (calls): OBS publishes the scene as a webcam. Zoom/Meet select OBS Virtual Camera. Required when the target app is not OBS itself.
You can combine both: stream on Twitch through OBS while simultaneously running Virtual Camera for a Discord call, test macOS single-consumer limits first.
Alternative virtual camera tools
OBS is free and integrated into LiveSwap's UI. Alternatives if OBS conflicts with your workflow:
ManyCam / XSplit VCam: commercial virtual webcams with window-capture modes. Point at the LiveSwap browser window.
NDI: advanced users can send OBS output via NDI to other machines or apps. Higher complexity, lower latency variance on LAN.
EpocCam / Camo: phone-as-webcam tools, opposite direction from what you need unless using phone for the source capture side.
LiveSwap does not endorse a specific paid tool; OBS Virtual Camera remains the documented default.
Audio note
OBS Virtual Camera transmits video only. In Zoom:
- Video: OBS Virtual Camera
- Microphone: your physical mic (AirPods, USB mic, etc.)
For streaming, add audio sources in OBS separately (mic, desktop audio, alerts). Enable Control audio via OBS on the Browser source only if LiveSwap publishes audio through the session, most call workflows keep audio on the meeting app's mic path.
Worked scenario: Meet on a work MacBook
You install OBS 30 on macOS Sonoma. System Settings grants Camera access to Chrome and OBS. You start LiveSwap, go ON AIR, add Browser source, crop, Start Virtual Camera. Google Meet in Chrome still shows your built-in FaceTime camera, you quit Chrome entirely, confirm OBS Virtual Camera in the macOS Camera menu (optional), relaunch Chrome, open Meet pre-call settings, select OBS Virtual Camera, preview shows persona. Join call. Total debug time: one app restart.
Quality alignment
Match virtual camera output resolution to your LiveSwap plan tier in the Browser source dimensions and in Settings → Stream quality inside LiveSwap. Upscaling a 480p swap to 1080p virtual camera output does not add detail, it softens the face.
| Plan | Resolution | Browser source size |
|---|---|---|
| Basic | 480p | 854 × 480 |
| Creator | 720p | 1280 × 720 |
| Pro / Studio | 1080p | 1920 × 1080 |
Frame rate options in LiveSwap settings depend on plan rank similarly.
Related guides
- swap beginner guide, full beginner pipeline
- Face swap in OBS, scene layout and streaming
- Face swap on Zoom, call-specific settings
- Face swap virtual camera hub, platform overview
- bandwidth and specs, bandwidth and hardware
new user setup and enable your virtual camera in one session.
Enterprise and firewall considerations
Corporate networks sometimes block WebRTC UDP or throttle non-standard ports. Symptoms: LiveSwap stuck on Warming up, swap never reaches ON AIR despite good home tests. Diagnostics:
- Test LiveSwap on phone hotspot bypassing corporate LAN
- If hotspot works, request IT allowlist for liveswap.io WebRTC or use personal network for live sessions
- VPN split-tunnel, route browser outside VPN while keeping other traffic inside
Virtual camera path is unaffected by corporate policy once LiveSwap ON AIR works, OBS and Zoom are local apps. The bottleneck is browser-to-cloud inference, not Zoom-to-Zoom traffic.
Multi-scene OBS workflows
Advanced OBS users run Studio Mode with Preview and Program scenes. Virtual Camera outputs Program by default (gear icon → Program). If viewers see you editing scenes live, switch output to Program explicitly or disable Studio Mode during calls where scene changes should be invisible.
Scene collections per use case:
- ZoomCalls, single Browser source, cropped, Virtual Camera on
- TwitchLive, Browser source overlay + Game Capture, stream output without Virtual Camera unless Discord parallel call
Duplicate Browser source URLs across scenes, each source instance loads LiveSwap independently (higher CPU). Prefer one scene referenced as nested source if OBS version supports efficient nesting.
Security and session URL hygiene
The Browser source URL authenticates via your logged-in session. Treat it like a password:
- Do not share OBS scene collections containing your streaming URL publicly
- Log out of LiveSwap on shared machines after sessions
- If URL leaks, logout invalidates session; refresh Browser source after re-login
Virtual camera output is local to your machine, remote meeting participants never receive your LiveSwap URL, only encoded video frames.
Comparison with third-party virtual webcams
| Tool | Cost | LiveSwap integration |
|---|---|---|
| OBS Virtual Camera | Free | Browser source → Start Virtual Camera (recommended) |
| ManyCam | Paid tiers | Window capture of LiveSwap tab |
| XSplit VCam | Paid | Similar window or NDI capture |
| Snap Camera | Discontinued | Not recommended |
OBS remains the documented path in LiveSwap's Connect to OBS dialog because it is free, cross-platform, and encodes no watermark on virtual camera output.
Verification routine (five minutes)
Run before every important live stream or call:
- LiveSwap ON AIR, swapped face visible in browser
- OBS preview, cropped Browser source correct
- Start Virtual Camera, button state confirmed
- Target app preview, OBS Virtual Camera selected, persona visible
- Clap once, audio and video sync acceptable
If step 5 fails, fix lag before step 4 retry. If step 4 fails, restart target app. If step 2 fails, Refresh browser source. Save this checklist in your streaming notes for repeatability.