Turn your Android phone into a high-performance Windows webcam.
- Description
- Key Features
- Installation Guide
- Usage Instructions
- Troubleshooting
- Reporting Issues
- Technical Architecture
- Contributing
VCamdroid allows you to seamlessly use your mobile deviceβs camera as a virtual webcam on your PC. Built using a custom DirectShow filter provided by Softcam library, it ensures compatibility with popular applications like Zoom, OBS, Discord, and Teams. Whether wired (via ADB) or wireless (via Wi-Fi), VCamdroid delivers a low-latency, hardware-accelerated video feed directly to your desktop.
- Universal Compatibility: Works with any Windows application that supports standard webcams.
- Flexible Connectivity: Supports high-speed wired connections (via ADB) and convenient wireless connections (via Wi-Fi).
- Multi-Device Support: Connect multiple Android devices simultaneously and switch between them instantly.
- Full Camera Control: Remotely toggle between front and back cameras, adjust resolutions, and enable flash.
- Image Adjustments: Real-time controls for rotation, mirroring (flip), brightness, contrast, and saturation.
- Zero-Config Pairing: Automatically connects over USB via ADB; straightforward QR code pairing for Wi-Fi.
- PC: Windows 10 or 11.
- Phone: Android 7.0 (Nougat) or higher.
- Download the latest binaries from the Releases Page.
- Extract the ZIP archive.
- Right-click
install.batand select Run as Administrator.- Note: This script registers
softcam.dllwith the system, making the virtual webcam device visible to other applications.
- Note: This script registers
- Check both Private and Public profiles in the Windows Firewall popup and allow the app
You can transfer the APK file to your phone and install it manually, or follow the steps below for an automatic install:
- Connect your phone to your PC via USB.
- Ensure USB Debugging is enabled (see instructions below).
- Run
install_apk.baton your PC to automatically install the app on your phone.
- Go to Settings > About Phone.
- Find Build Number and tap it 7 times until you see "You are now a developer!"
- Go back to Settings > System > Developer Options.
- Toggle USB Debugging to ON.
- For device-specific steps, refer to the official Android documentation.
Recommended for lowest latency and highest stability.
- Connect your phone to the PC via USB.
- Launch the VCamdroid Desktop Client.
- Launch the VCamdroid App on your phone.
- The connection is automatic. App should change to streaming mode.
- Ensure both your PC and phone are on the same Wi-Fi network.
- Launch the VCamdroid Desktop Client and select the Connect tab to reveal a QR Code.
- Launch the VCamdroid App on your phone.
- Point your camera at the PC screen to scan the QR code. Clicl 'connect' in the popup dialog.
If you encounter any problems check the Troubleshooting section. If the issue still persist, please report the issue.
VCamdroid utilizes the industry-standard RTSP (Real-Time Streaming Protocol) to ensure robust, low-latency video transmission between the Android device and the Windows client.
-
Transport Layer:
- Wi-Fi Connection: The Windows client connects directly to the RTSP server running on the Android device over the local network.
- USB Connection: To enable wired communication, the application uses ADB Port Forwarding. Since ADB only supports TCP forwarding, the RTSP stream is tunneled exclusively over TCP (interleaved RTSP). This creates a stable, high-bandwidth tunnel via
localhostthat bypasses network interference.
-
Stream Handling Libraries:
- Server Side (Android): Powered by the RootEncoder library. It handles the complex tasks of interfacing with the Android encoder, packetizing the video data into RTP packets, and managing the RTSP server session.
- Client Side (Windows): Utilizes FFmpeg, the leading multimedia framework, to robustly demux the RTSP stream and decode the incoming video packets.
The pipeline is engineered for performance, offloading image processing to the Android GPU before compression to minimize latency and bandwidth.
-
Capture, Process & Encode (Android):
- Capture: Video frames are captured using the modern Camera2 API.
- Pre-Processing: Raw frames are processed on the GPU using OpenGL. Operations like Rotation, Mirroring (Flip), and Color Correction are applied here before encoding, ensuring the stream is "ready-to-display."
- Hardware Encoding: The processed frames are passed to the device's hardware MediaCodec (supporting H.264 or H.265/HEVC). This offloads compression from the CPU.
- Transmission: RootEncoder encapsulates the encoded stream into RTP packets and transmits them over the active network connection.
-
Decode & Render (Windows):
- Decoding: The Windows client receives the RTSP stream and uses FFmpeg to decode the compressed H.264/H.265 frames into raw image data (YUV/RGB).
- Output:
- UI Preview: The decoded frame is rendered immediately to the application window for live monitoring.
- Virtual Device: The frame is written to a ring buffer managed by the Softcam library. Softcam acts as the bridge between the user application and the system-registered DirectShow filter, allowing third-party apps (Zoom, Teams, OBS) to treat the stream as a physical webcam device.
We actively welcome contributions! Whether you're fixing a bug, optimizing performance, or adding a cool new feature, please feel free to fork the repository and submit a Pull Request.
android/: The Android Studio project (Kotlin). Handles Camera2 API capture, OpenGL processing, and RTSP streaming.windows/: The Visual Studio solution (C++). Contains the Desktop Client GUI and the DirectShow Filter logic.
- Prerequisites: Install the latest Android Studio.
- Import: Open the
android/directory as a project. - Build: Let Gradle sync and download dependencies.
- Core Dependency: RootEncoder (handles RTSP/RTP packets).
- Run: Connect a physical Android device (emulators often lack necessary encoder hardware) and run the
appmodule.
-
Prerequisites:
- Visual Studio 2026 (with "Desktop development with C++" workload).
- vcpkg for
asio 1.32.0,wxWidgets 3.3.1andffmpeg 7.1.2.
-
Install Dependencies: Use
vcpkgto install the required libraries for x64:vcpkg install wxwidgets:x64-windows ffmpeg:x64-windows vcpkg integrate install
-
Build Instructions:
- Build
softcam. See for instructions. - Open
windows/VCamdroid.sln. - Set the configuration to Release / x64 (x86 is not supported).
- Build the solution.
- Build
-
Testing the Driver:
- The DirectShow filter (
softcam.dll) must be registered to be visible to apps like OBS or Zoom. - Run
install.batas Administrator in your output directory, or manually register it via:regsvr32 softcam.dll
- The DirectShow filter (
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
If the application closes immediately or you see a system popup error regarding missing DLLs (like VCRUNTIME140.dll or MSVCP140.dll), your PC is missing the C++ runtime libraries.
- Fix: Download and install the latest VC++ Redistributable (x64) from Microsoft.
If the Android app cannot connect to the Windows client:
- Check Windows Firewall: The firewall often blocks incoming video streams.
- Search for "Allow an app through Windows Firewall" in the Start Menu.
- Find
VCamdroid.exein the list and ensure both Private and Public boxes are checked.
- Verify Network Visibility (Reverse Ping Test):
Sometimes the phone cannot see the PC. To verify:
- Connect via USB (for the test command).
- Open a terminal in the VCamdroid folder and run:
adb shell ping -c 4 <PC_IP_ADDRESS> - If you see "100% packet loss" or "unreachable," your PC's firewall or router settings (AP Isolation) are blocking the connection.
If the app does not detect your phone:
- Check ADB Devices:
- Open a terminal in the VCamdroid folder.
- Run:
adb devices - If list is empty: Your cable is bad or Universal ADB Drivers are missing.
- If "unauthorized": Check your phone screen and tap "Allow" on the "Allow USB Debugging?" popup.
- Kill Conflicting ADB Processes:
- Open Task Manager (
Ctrl + Shift + Esc). - Search for
adb.exein the Details tab. - Right-click and select End Task, then restart VCamdroid.
- Open Task Manager (
VCamdroid is a new project, and hardware compatibility varies across thousands of Android devices. Your feedback is crucial!
If you encounter a bug or crash, please open a New Issue and attach the logs to help us fix it faster.
- Android Logs:
- Open the VCamdroid app on your phone.
- Tap the Bug Icon π in the top corner.
- Click the Save/Share button to export the log file.
- Windows Logs:
- Check the
vcamdroid.logfile inside the VCamdroid installation directory. - Copy the text from the latest log file.
- Check the
Please include:
- Phone Model (e.g., Samsung S21, Pixel 6)
- Android Version
- Connection Method (USB or Wi-Fi)\


