>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
C-plus-plus

Como Transformar um Android Antigo em uma Webcam Nítida para Windows Sem Anúncios ou Marcas d'Água

Comprar uma webcam externa decente hoje é um prazer questionável. Modelos econômicos entregam imagens borradas em 720p com alcance dinâmico terrível, enquanto opções decentes como soluções Logitech custam dinheiro irrazoável. Enquanto isso, a maioria de nós tem um celular antigo acumulando poeira em uma gaveta, cujos componentes ópticos e sensores superam qualquer webcam de escritório.

Normalmente, tentar usar um celular como webcam encontra obstáculos com software proprietário como DroidCam ou Iriun. As versões gratuitas ou limitam a resolução, ou colocam marcas d'água diretamente sobre o vídeo, ou exibem anúncios constantemente. Recentemente descobri um projeto open-source chamado VCamdroid, cujos criadores resolveram esse problema diretamente sem complicações comerciais desnecessárias.

VCamdroid Demo

O que está sob o capô

O projeto consiste em duas partes: um aplicativo Android em Kotlin e um cliente Windows em C++. O princípio de funcionamento é bastante elegante.

O celular captura o stream através da API Camera2, processa os frames em tempo real através de shaders OpenGL (rotação, espelhamento, correção de cor e exposição acontecem ali), e alimenta o resultado para o codificador de hardware MediaCodec em H.264 ou H.265. A biblioteca RootEncoder cuida de empacotar o stream de vídeo em RTP, após o qual o celular inicia um servidor RTSP.

Pipeline

No lado Windows, o cliente conecta ao stream via FFmpeg, decodifica os frames e os envia para um dispositivo virtual DirectShow. Isso usa a biblioteca Softcam, que registra o driver softcam.dll. Qualquer programa no PC — seja OBS, Zoom, Telegram ou Discord — reconhece o smartphone como uma webcam USB física comum.

Conectividade com e sem fio

Você pode transmitir vídeo de duas formas:

  1. Via Wi-Fi. O computador e o celular devem estar na mesma sub-rede. Abra a aba Connect no cliente desktop para ver um QR code, aponte a câmera do celular para ele, confirme a conexão, e a transmissão começa.
  2. Via USB através de ADB. Este é o cenário principal e mais confiável. Por cabo, a latência é mínima e o sinal não sofre com a banda 2.4 GHz congestionada de roteadores dos vizinhos.

Network

Detalhe de engenharia interessante: o utilitário ADB só pode encaminhar portas via TCP. Por padrão, RTSP frequentemente envia pacotes RTP via UDP, mas aqui o stream é tunelado estritamente sobre o modo entrelaçado TCP. Isso nos dá um canal estável através do localhost sem perda de pacotes.

O que torna este projeto interessante na prática

Diferente de soluções pesadas, o VCamdroid configura rapidamente e não exige contas.

Aqui está o que a combinação pode fazer:

  • Alternar entre os módulos de câmera frontal e traseira diretamente do PC durante uma chamada.
  • Controlar o flash, zoom, exposição e balanço de branco.
  • Processamento de imagem com aceleração de hardware na GPU do celular, então o processador do computador é pouco utilizado.
  • Conectar vários celulares simultaneamente. Você pode pendurar um smartphone para uma tomada ampla, apontar o segundo para o seu rosto, e alternar entre eles.

A imagem sai limpa, com 1080p verdadeiro e 60 fps se o sensor do celular suportar.

Início rápido

Você vai precisar do Windows 10 ou 11 no PC e Android 7.0 ou superior no celular.

Primeiro, configure o Windows:

  1. Baixe o arquivo da página Releases do repositório.
  2. Extraia e execute install.bat como administrador. Este script registra o filtro DirectShow no sistema.
  3. Na janela do Firewall do Windows, permita o acesso do aplicativo para redes privadas e públicas.

Depois, instale o cliente no celular:

  1. Habilite o modo Desenvolvedor no Android (toque no número da versão nas configurações do celular sete vezes) e ative a opção Depuração USB.
  2. Conecte o celular ao computador via cabo e execute o script install_apk.bat. Ele empurra automaticamente o APK para o dispositivo via ADB.

Depois disso, abra o VCamdroid no computador, inicie o aplicativo no smartphone, e eles se encontram automaticamente pelo cabo.

Compilando a partir do código-fonte

Se quiser explorar o código ou adicionar um recurso que você precisa, o projeto compila com ferramentas padrão.

Para a parte Android, você vai precisar de um Android Studio recente. Toda a lógica de captura e streaming está bundled no diretório android/.

Para o cliente Windows, você vai precisar do Visual Studio e do gerenciador de pacotes vcpkg. As dependências são puxadas com um comando:

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

Depois compile a biblioteca softcam, abra windows/VCamdroid.sln, selecione a configuração Release x64, e compile o projeto.

Limitações e imperfeições

O projeto tem cerca de 400 estrelas no GitHub, e o código ainda está relativamente fresco em algumas partes. Se você tiver um firmware Android raro ou específico, o MediaCodec pode se comportar de forma instável.

Às vezes o Firewall do Windows bloqueia silenciosamente o tráfego RTSP ao trabalhar via Wi-Fi. Neste caso, você tem que mexer manualmente nas configurações do Defender ou verificar pings via adb shell ping. Também tenha em mente que o filtro DirectShow requer bibliotecas Visual C++ Redistributable atualizadas no PC, caso contrário o aplicativo vai simplesmente crashar sem um erro significativo.

O VCamdroid é uma ótima escolha para quem está cansado da qualidade das webcams integradas de laptops ou quem não quer gastar dinheiro em óptica separada para chamadas ocasionais. O projeto é completamente gratuito, open-source sob a licença MIT, sem restrições de tempo e sem marcas d'água. Se você tem um smartphone antigo com uma câmera decente acumulando poeira em uma prateleira, esta é uma ótima forma de trazê-lo de volta ao serviço.

Projetos relacionados