>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C-plus-plus

Zo maak je van een oude Android een haarscherpe webcam voor Windows — zonder ads of watermerken

Een fatsoenlijke externe webcam kopen is tegenwoordig een twijfelachtig plezier. Budgetmodellen leveren wazige 720p-beelden met verschrikkelijk dynamisch bereik, terwijl degelijke opties zoals Logitech-oplossingen belachelijk veel geld kosten. Ondertussen hebben de meesten van ons een oude smartphone die stof staat te verzamelen in een lade, waarvan de optiek en sensor elke kantoor-webcam ver overtreffen.

Meestal loop je bij het gebruiken van een telefoon als webcam tegen proprietaire software aan zoals DroidCam of Iriun. De gratis versies beperken de resolutie, plakken watermerken rechtstreeks over de video, of tonen voortdurend advertenties. Ik ontdekte onlangs een open-source project genaamd VCamdroid, waarvan de makers dit probleem direct hebben opgelost zonder onnodige commerciele toevoegingen.

VCamdroid Demo

Wat er onder de motorkap zit

Het project bestaat uit twee delen: een Kotlin Android-app en een C++ Windows-client. Het werkingsprincipe is vrij elegant.

De telefoon legt de stream vast via de Camera2 API, verwerkt frames on-the-fly door OpenGL-shaders (rotatie, spiegeling, kleur- en belichtingscorrectie gebeurt daar), en voert het resultaat naar de MediaCodec hardware-encoder in H.264 of H.265. De RootEncoder-bibliotheek verzorgt het verpakken van de videostream in RTP, waarna de telefoon een RTSP-server opstart.

Pipeline

Aan de Windows-kant maakt de client verbinding met de stream via FFmpeg, decodeert de frames, en stuurt ze naar een virtueel DirectShow-apparaat. Dit gebruikt de Softcam-bibliotheek, die de softcam.dll driver registreert. Elk programma op de PC — of het nu OBS, Zoom, Telegram of Discord is — ziet de smartphone als een normale fysieke USB-webcam.

Bedraad en draadloos verbinden

Je kunt video op twee manieren streamen:

  1. Via Wi-Fi. De computer en telefoon moeten op hetzelfde subnet zitten. Open het Connect-tabblad in de desktop-client om een QR-code te zien, richt de telefooncamera erop, bevestig de verbinding, en de uitzending begint.
  2. Via USB via ADB. Dit is het hoofd- en meest betrouwbare scenario. Over de kabel is de latentie minimaal en heeft het signaal geen last van een 2,4 GHz-band die verstopt is met de routers van de buren.

Network

Interessant technisch detail: de ADB-hulpprogramma kan alleen poorten forwarden over TCP. Standaard shuttle RTSP RTP-pakketten vaak over UDP, maar hier wordt de stream strikt getunneld via TCP interleaved mode. Dit geeft ons een stabiel kanaal rechtstreeks door localhost heen zonder pakketverlies.

Wat dit project in de praktijk interessant maakt

In tegenstelling tot logge oplossingen is VCamdroid snel ingesteld en zijn er geen accounts nodig.

Hier is wat de combinatie kan doen:

  • Schakelen tussen front- en rear-camera modules rechtstreeks vanaf de PC tijdens een gesprek.
  • De zaklamp, zoom, belichting en witbalans regelen.
  • Hardware-versnelde beeldverwerking op de GPU van de telefoon, dus de processor van de computer wordt nauwelijks belast.
  • Meerdere telefoons tegelijkertijd aansluiten. Je kunt één smartphone ophangen voor een wide shot, de tweede op je gezicht richten, en ertussen schakelen.

Het beeld komt er schoon uit, met ware 1080p en 60 fps als de sensor van je telefoon dit ondersteunt.

Snel aan de slag

Je hebt Windows 10 of 11 op de PC en Android 7.0 of nieuwer op de telefoon nodig.

Installeer eerst Windows:

  1. Download het archief van de Releases-pagina van de repository.
  2. Pak uit en voer install.bat uit als administrator. Dit script registreert het DirectShow-filter in het systeem.
  3. Sta in het Windows Firewall-venster de app toegang toe voor zowel privé- als openbare netwerken.

Installeer vervolgens de client op de telefoon:

  1. Schakel Ontwikkelaarsmodus in op Android (tik zeven keer op het buildnummer in de telefooninstellingen) en activeer de USB-foutopsporing-toggle.
  2. Verbind de telefoon met de computer via de kabel en voer het install_apk.bat script uit. Het pusht de APK automatisch naar het apparaat via ADB.

Open daarna VCamdroid op de computer, start de app op de smartphone, en ze vinden elkaar automatisch via de kabel.

Bouwen vanuit de broncode

Als je in de code wilt duiken of een functie wilt toevoegen die je nodig hebt, bouwt het project met standaard tools.

Voor het Android-deel heb je een verse Android Studio nodig. Alle capture- en streaminglogica is gebundeld in de android/ directory.

Voor de Windows-client heb je Visual Studio en de vcpkg package manager nodig. Afhankelijkheden worden binn gehaald met één commando:

vcpkg install wxwidgets:x64-windows ffmpeg:x64-windows
vcpkg integrate install

Bouw vervolgens de softcam library, open windows/VCamdroid.sln, selecteer de Release x64-configuratie, en compileer het project.

Beperkingen en ruwe randjes

Het project heeft ongeveer 400 sterren op GitHub, en de code is op sommige plekken nog relatief vers. Als je een zeldzame of specifieke Android-firmware hebt, kan MediaCodec zich onstabiel gedragen.

Soms blokkeert Windows Firewall stilzwijgend RTSP-verkeer bij werken via Wi-Fi. In dit geval moet je handmatig in de Defender-instellingen graven of pings controleren via adb shell ping. Houd ook in gedachten dat het DirectShow-filter up-to-date Visual C++ Redistributable-bibliotheken op de PC vereist, anders crasht de app gewoon zonder een betekenisvolle foutmelding.

VCamdroid is een geweldige match voor iedereen die genoeg heeft van de kwaliteit van ingebouwde laptop-webcams of geen geld wil uitgeven aan aparte optica voor incidentele gesprekken. Het project is volledig gratis, open-source onder de MIT-licentie, zonder tijdsbeperkingen en zonder watermerken. Als je een oude smartphone met een redelijke camera hebt die stof staat te verzamelen op een plank, is dit een geweldige manier om hem weer in gebruik te nemen.

Gerelateerde projecten