{"id":42797698,"url":"https://github.com/darusc/VCamdroid","last_synced_at":"2026-02-09T16:01:04.142Z","repository":{"id":290189075,"uuid":"953060619","full_name":"darusc/VCamdroid","owner":"darusc","description":"Use your android phone as windows virtual webcam","archived":false,"fork":false,"pushed_at":"2026-01-24T15:47:01.000Z","size":48068,"stargazers_count":68,"open_issues_count":5,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-25T04:57:44.086Z","etag":null,"topics":["android-camera","camerax","directshow","directshow-filter","rtsp","rtsp-streaming","softcam","video-streaming","virtual-webcam","webcam","webcam-streaming","windows","windows-webcam"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darusc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-22T13:33:46.000Z","updated_at":"2026-01-25T02:20:08.000Z","dependencies_parsed_at":"2025-05-04T14:24:35.872Z","dependency_job_id":null,"html_url":"https://github.com/darusc/VCamdroid","commit_stats":null,"previous_names":["darusc/vcamdroid"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/darusc/VCamdroid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darusc%2FVCamdroid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darusc%2FVCamdroid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darusc%2FVCamdroid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darusc%2FVCamdroid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darusc","download_url":"https://codeload.github.com/darusc/VCamdroid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darusc%2FVCamdroid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29271848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T13:47:44.167Z","status":"ssl_error","status_checked_at":"2026-02-09T13:47:43.721Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-camera","camerax","directshow","directshow-filter","rtsp","rtsp-streaming","softcam","video-streaming","virtual-webcam","webcam","webcam-streaming","windows","windows-webcam"],"created_at":"2026-01-30T02:00:22.779Z","updated_at":"2026-02-09T16:01:04.134Z","avatar_url":"https://github.com/darusc.png","language":"C++","readme":"\u003ch1 align=\"center\"\u003e\n  \u003csub\u003e\n    \u003cimg src=\"imgs/icon2.png\" width=\"150\"\u003e\n  \u003c/sub\u003e\n  \u003cbr\u003e\n  VCamdroid\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eTurn your Android phone into a high-performance Windows webcam.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/darusc/VCamdroid/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/darusc/VCamdroid?style=for-the-badge\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/darusc/VCamdroid/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/darusc/VCamdroid?style=for-the-badge\" alt=\"Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/darusc/VCamdroid/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/downloads/darusc/VCamdroid/total?style=for-the-badge\" alt=\"Downloads\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Table of Contents\n\n1. [**Description**](#description)\n2. [**Key Features**](#key-features)\n3. [**Installation Guide**](#installation-guide)\n4. [**Usage Instructions**](#usage-instructions)\n5. [**Troubleshooting**](#troubleshooting)\n6. [**Reporting Issues**](#reporting-issues)\n7. [**Technical Architecture**](#technical-architecture)\n8. [**Contributing**](#contributing)\n\n## Description\n\nVCamdroid 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](https://github.com/tshino/softcam), 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"imgs/demo.gif\" width=\"600\" alt=\"VCamdroid Demo\"\u003e\n\u003c/p\u003e\n\n## Key Features\n\n* **Universal Compatibility:** Works with any Windows application that supports standard webcams.\n* **Flexible Connectivity:** Supports high-speed wired connections (via ADB) and convenient wireless connections (via Wi-Fi).\n* **Multi-Device Support:** Connect multiple Android devices simultaneously and switch between them instantly.\n* **Full Camera Control:** Remotely toggle between front and back cameras, adjust resolutions, and enable flash.\n* **Image Adjustments:** Real-time controls for rotation, mirroring (flip), brightness, contrast, and saturation.\n* **Zero-Config Pairing:** Automatically connects over USB via ADB; straightforward QR code pairing for Wi-Fi.\n\n\n## Installation Guide\n\n### Prerequisites\n* **PC:** Windows 10 or 11.\n* **Phone:** Android 7.0 (Nougat) or higher.\n\n### Step 1: Install on Windows\n1.  Download the latest binaries from the [**Releases Page**](https://github.com/darusc/VCamdroid/releases).\n2.  Extract the ZIP archive.\n3.  Right-click `install.bat` and select **Run as Administrator**.\n    * *Note: This script registers `softcam.dll` with the system, making the virtual webcam device visible to other applications.*\n4. Check both **Private** and **Public** profiles in the Windows Firewall popup and allow the app\n\n### Step 2: Install on Android\nYou can transfer the APK file to your phone and install it manually, or follow the steps below for an automatic install:\n1.  Connect your phone to your PC via USB.\n2.  Ensure **USB Debugging** is enabled (see instructions below).\n3.  Run `install_apk.bat` on your PC to automatically install the app on your phone.\n\n\n### 💡 How to Enable USB Debugging\n1.  Go to **Settings \u003e About Phone**.\n2.  Find **Build Number** and tap it **7 times** until you see \"You are now a developer!\"\n3.  Go back to **Settings \u003e System \u003e Developer Options**.\n4.  Toggle **USB Debugging** to **ON**.\n    * *For device-specific steps, refer to the [official Android documentation](https://developer.android.com/studio/debug/dev-options).*\n\n\n## Usage Instructions\n\n### Wired Connection (USB / ADB)\n*Recommended for lowest latency and highest stability.*\n\n1.  Connect your phone to the PC via USB.\n2.  Launch the **VCamdroid Desktop Client**.\n3.  Launch the **VCamdroid App** on your phone.\n4.  The connection is automatic. App should change to streaming mode.\n\n### Wireless Connection (Wi-Fi)\n1.  Ensure both your PC and phone are on the same Wi-Fi network.\n2.  Launch the **VCamdroid Desktop Client** and select the **Connect** tab to reveal a QR Code.\n3.  Launch the **VCamdroid App** on your phone.\n4.  Point your camera at the PC screen to scan the QR code. Clicl 'connect' in the popup dialog.\n\nIf you encounter any problems check the [**Troubleshooting**](#troubleshooting) section. If the issue still persist, please [report the issue](#reporting-issues).\n\n\n---\n\n## Technical Architecture\n\n### Networking Protocol\nVCamdroid utilizes the industry-standard **RTSP (Real-Time Streaming Protocol)** to ensure robust, low-latency video transmission between the Android device and the Windows client.\n\n1.  **Transport Layer:**\n    * **Wi-Fi Connection:** The Windows client connects directly to the RTSP server running on the Android device over the local network.\n    * **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 `localhost` that bypasses network interference.\n\n2.  **Stream Handling Libraries:**\n    * **Server Side (Android):** Powered by the [RootEncoder](https://github.com/pedroSG94/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.\n    * **Client Side (Windows):** Utilizes [FFmpeg](https://ffmpeg.org/), the leading multimedia framework, to robustly demux the RTSP stream and decode the incoming video packets.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"imgs/network.png\" width=\"60%\"\u003e\u003c/p\u003e \n\n### Video Pipeline\nThe pipeline is engineered for performance, offloading image processing to the Android GPU before compression to minimize latency and bandwidth.\n\n1.  **Capture, Process \u0026 Encode (Android):**\n    * **Capture:** Video frames are captured using the modern **Camera2 API**.\n    * **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.\"\n    * **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.\n    * **Transmission:** **RootEncoder** encapsulates the encoded stream into RTP packets and transmits them over the active network connection.\n\n2.  **Decode \u0026 Render (Windows):**\n    * **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).\n    * **Output:**\n        * **UI Preview:** The decoded frame is rendered immediately to the application window for live monitoring.\n        * **Virtual Device:** The frame is written to a ring buffer managed by the [Softcam](https://github.com/tshino/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.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"imgs/pipeline.png\" width=\"50%\"\u003e\u003c/p\u003e \n\n\n## 🤝 Contributing\n\nWe 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.\n\n### 📂 Repository Structure\n* `android/`: The Android Studio project (Kotlin). Handles Camera2 API capture, OpenGL processing, and RTSP streaming.\n* `windows/`: The Visual Studio solution (C++). Contains the Desktop Client GUI and the DirectShow Filter logic.\n\n---\n\n### 🛠️ Development Setup\n\n#### 📱 Android App\n1.  **Prerequisites:** Install the latest **Android Studio**.\n2.  **Import:** Open the `android/` directory as a project.\n3.  **Build:** Let Gradle sync and download dependencies.\n    * *Core Dependency:* [RootEncoder](https://github.com/pedroSG94/RootEncoder) (handles RTSP/RTP packets).\n4.  **Run:** Connect a physical Android device (emulators often lack necessary encoder hardware) and run the `app` module.\n\n#### 💻 Windows Client\n1.  **Prerequisites:**\n    * **Visual Studio 2026** (with \"Desktop development with C++\" workload).\n    * **vcpkg** for ```asio 1.32.0```, ```wxWidgets 3.3.1``` and ```ffmpeg 7.1.2```.\n\n2.  **Install Dependencies:**\n    Use `vcpkg` to install the required libraries for **x64**:\n    ```powershell\n    vcpkg install wxwidgets:x64-windows ffmpeg:x64-windows\n    vcpkg integrate install\n    ```\n\n3.  **Build Instructions:**\n    * Build ```softcam```. [See](https://github.com/tshino/softcam?tab=readme-ov-file#how-to-build-the-library) for instructions.\n    * Open `windows/VCamdroid.sln`.\n    * Set the configuration to **Release / x64** (x86 is not supported).\n    * Build the solution.\n\n4.  **Testing the Driver:**\n    * The DirectShow filter (`softcam.dll`) must be registered to be visible to apps like OBS or Zoom.\n    * Run `install.bat` as Administrator in your output directory, or manually register it via:\n        ```cmd\n        regsvr32 softcam.dll\n        ```\n\n### 📬 Submitting a Pull Request\n1.  Fork the project.\n2.  Create your feature branch (`git checkout -b feature/AmazingFeature`).\n3.  Commit your changes (`git commit -m 'Add some AmazingFeature'`).\n4.  Push to the branch (`git push origin feature/AmazingFeature`).\n5.  Open a Pull Request.\n\n\n## Troubleshooting\n\n### App Crashes / \"VCRUNTIME140.dll was not found\"\nIf 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.\n* **Fix:** Download and install the [latest VC++ Redistributable (x64)](https://aka.ms/vs/17/release/vc_redist.x64.exe) from Microsoft.\n\n### Connection Failed / Host Unreachable\nIf the Android app cannot connect to the Windows client:\n1.  **Check Windows Firewall:** The firewall often blocks incoming video streams.\n    * Search for **\"Allow an app through Windows Firewall\"** in the Start Menu.\n    * Find `VCamdroid.exe` in the list and ensure both **Private** and **Public** boxes are checked.\n2.  **Verify Network Visibility (Reverse Ping Test):**\n    Sometimes the phone cannot see the PC. To verify:\n    * Connect via USB (for the test command).\n    * Open a terminal in the VCamdroid folder and run: `adb shell ping -c 4 \u003cPC_IP_ADDRESS\u003e`\n    * If you see \"100% packet loss\" or \"unreachable,\" your PC's firewall or router settings (AP Isolation) are blocking the connection.\n\n### USB Connection not working\nIf the app does not detect your phone:\n1.  **Check ADB Devices:**\n    * Open a terminal in the VCamdroid folder.\n    * Run: `adb devices`\n    * **If list is empty:** Your cable is bad or [Universal ADB Drivers](https://adb.clockworkmod.com/) are missing.\n    * **If \"unauthorized\":** Check your phone screen and tap \"Allow\" on the **\"Allow USB Debugging?\"** popup.\n2.  **Kill Conflicting ADB Processes:**\n    * Open **Task Manager** (`Ctrl + Shift + Esc`).\n    * Search for `adb.exe` in the **Details** tab.\n    * Right-click and select **End Task**, then restart VCamdroid.\n\n---\n\n## Reporting Issues\n\nVCamdroid is a new project, and hardware compatibility varies across thousands of Android devices. Your feedback is crucial!\n\nIf you encounter a bug or crash, please open a [New Issue](https://github.com/darusc/VCamdroid/issues) and **attach the logs** to help us fix it faster.\n\n### How to get the logs:\n1.  **Android Logs:**\n    * Open the VCamdroid app on your phone.\n    * Tap the **Bug Icon** 🐞 in the top corner.\n    * Click the **Save/Share** button to export the log file.\n2.  **Windows Logs:**\n    * Check the `vcamdroid.log` file inside the VCamdroid installation directory.\n    * Copy the text from the latest log file.\n\n**Please include:**\n* Phone Model (e.g., Samsung S21, Pixel 6)\n* Android Version\n* Connection Method (USB or Wi-Fi)\\","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarusc%2FVCamdroid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarusc%2FVCamdroid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarusc%2FVCamdroid/lists"}