>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
C-plus-plus

Come Trasformare un Vecchio Android in una Webcam Nitida per Windows Senza Pubblicità o Filigrane

Acquistare oggi una buona webcam esterna è un piacere discutibile. I modelli economici offrono immagini sfocate a 720p con una gamma dinamica terribile, mentre opzioni decenti come le soluzioni Logitech costano cifre esorbitanti. Nel frattempo, la maggior parte di noi ha un vecchio smartphone che raccoglie polvere in un cassetto, i cui ottica e sensore superano di gran lunga qualsiasi webcam da ufficio.

Di solito, provare a usare un telefono come webcam si scontra con software proprietari come DroidCam o Iriun. Le versioni gratuite o limitano la risoluzione, applicano filigrane direttamente sul video, o mostrano costantemente annunci pubblicitari. Ho scoperto di recente un progetto open-source chiamato VCamdroid, i cui creatori hanno risolto questo problema in modo diretto senza fronzoli commerciali inutili.

VCamdroid Demo

Cosa c'è sotto il cofano

Il progetto è composto da due parti: un'app Android in Kotlin e un client Windows in C++. Il principio di funzionamento è piuttosto elegante.

Il telefono acquisisce lo stream tramite Camera2 API, elabora i frame in tempo reale attraverso shader OpenGL (rotazione, mirroring, correzione del colore e dell'esposizione avvengono lì), e invia il risultato all'encoder hardware MediaCodec in H.264 o H.265. La libreria RootEncoder gestisce il confezionamento dello stream video in RTP, dopodiché il telefono avvia un server RTSP.

Pipeline

Dal lato Windows, il client si connette allo stream tramite FFmpeg, decodifica i frame e li invia a un dispositivo virtuale DirectShow. Questo utilizza la libreria Softcam, che registra il driver softcam.dll. Qualsiasi programma sul PC — che sia OBS, Zoom, Telegram o Discord — vede lo smartphone come una normale webcam fisica USB.

Connettività cablata e wireless

È possibile trasmettere video in due modi:

  1. Via Wi-Fi. Il computer e il telefono devono essere sulla stessa sottorete. Apri la scheda Connect nel client desktop per vedere un codice QR, punta la fotocamera del telefono verso di esso, conferma la connessione e la trasmissione inizia.
  2. Via USB tramite ADB. Questo è lo scenario principale e più affidabile. Via cavo, la latenza è minima e il segnale non soffre della congestione della banda a 2,4 GHz piena di router dei vicini.

Network

Dettaglio tecnico interessante: l'utility ADB può inoltrare porte solo su TCP. Di default, RTSP spesso trasporta pacchetti RTP su UDP, ma qui lo stream viene incanalato rigorosamente in modalità interleaved TCP. Questo ci fornisce un canale stabile direttamente attraverso localhost senza perdita di pacchetti.

Cosa rende questo progetto interessante in pratica

A differenza di soluzioni ingombranti, VCamdroid si configura rapidamente e non richiede account.

Ecco cosa può fare la combinazione:

  • Passare tra i moduli fotocamera anteriore e posteriore direttamente dal PC durante una chiamata.
  • Controllare la torcia, lo zoom, l'esposizione e il bilanciamento del bianco.
  • Elaborazione delle immagini accelerata via hardware sulla GPU del telefono, quindi il processore del computer è appena sollecitato.
  • Collegare più telefoni simultaneamente. Puoi appendere uno smartphone per un'inquadratura ampia, puntare il secondo sul viso e passare da uno all'altro.

L'immagine risulta pulita, con veri 1080p e 60 fps se il sensore del telefono li supporta.

Avvio rapido

Avrai bisogno di Windows 10 o 11 sul PC e Android 7.0 o versione successiva sul telefono.

Prima di tutto, configura Windows:

  1. Scarica l'archivio dalla pagina Releases del repository.
  2. Estrai ed esegui install.bat come amministratore. Questo script registra il filtro DirectShow nel sistema.
  3. Nella finestra del Windows Firewall, consenti all'app l'accesso sia per le reti private che pubbliche.

Successivamente, installa il client sul telefono:

  1. Attiva la Modalità sviluppatore su Android (tocca sette volte il numero di build nelle impostazioni del telefono) e attiva la levetta Debug USB.
  2. Collega il telefono al computer via cavo ed esegui lo script install_apk.bat. Questo spinge automaticamente l'APK sul dispositivo tramite ADB.

Dopo di ciò, apri VCamdroid sul computer, avvia l'app sullo smartphone e si trovano automaticamente a vicenda tramite il cavo.

Compilazione dal codice sorgente

Se vuoi approfondire il codice o aggiungere una funzionalità di cui hai bisogno, il progetto si compila con strumenti standard.

Per la parte Android, avrai bisogno di un Android Studio fresco. Tutta la logica di acquisizione e streaming è raggruppata nella directory android/.

Per il client Windows, avrai bisogno di Visual Studio e del gestore di pacchetti vcpkg. Le dipendenze vengono recuperate con un comando:

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

Poi compila la libreria softcam, apri windows/VCamdroid.sln, seleziona la configurazione Release x64 e compila il progetto.

Limitazioni e imperfezioni

Il progetto ha circa 400 stelle su GitHub e il codice è ancora relativamente fresco in alcuni punti. Se hai un firmware Android raro o specifico, MediaCodec potrebbe comportarsi in modo instabile.

A volte il Windows Firewall blocca silenziosamente il traffico RTSP quando si lavora via Wi-Fi. In questo caso, devi scavare manualmente nelle impostazioni di Defender o verificare i ping tramite adb shell ping. Inoltre, tieni presente che il filtro DirectShow richiede librerie Visual C++ Redistributable aggiornate sul PC, altrimenti l'app andrà semplicemente in crash senza un errore significativo.

VCamdroid è perfetto per chi è stanco della qualità delle webcam integrate nei laptop o chi non vuole spendere soldi per un'ottica separata per chiamate occasionali. Il progetto è completamente gratuito, open-source sotto licenza MIT, senza restrizioni temporali e senza filigrane. Se hai un vecchio smartphone con una buona fotocamera che raccoglie polvere su uno scaffale, questo è un ottimo modo per rimetterlo in servizio.

Progetti correlati