>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
C-plus-plus

Cómo convertir un Android antiguo en una webcam nítida para Windows sin anuncios ni marcas de agua

Comprar una webcam externa decente hoy en día es un placer cuestionable. Los modelos económicos ofrecen imágenes borrosas de 720p con un rango dinámico terrible, mientras que opciones decentes como las soluciones de Logitech cuestan dinero irrazonable. Mientras tanto, la mayoría de nosotros tenemos un smartphone antiguo acumulando polvo en un cajón del escritorio, cuyos ópticos y sensor superan con creces cualquier webcam de oficina.

Por lo general, intentar usar un teléfono como webcam se topa con software propietario como DroidCam o Iriun. Las versiones gratuitas limitan la resolución, colocan marcas de agua directamente sobre el video o muestran anuncios constantemente. Recientemente descubrí un proyecto de código abierto llamado VCamdroid, cuyos creadores resolvieron este problema directamente sin complicaciones comerciales innecesarias.

Demo de VCamdroid

Qué hay bajo el capó

El proyecto consiste en dos partes: una aplicación Android en Kotlin y un cliente Windows en C++. El principio de funcionamiento es bastante elegante.

El teléfono captura la transmisión a través de la API Camera2, procesa los frames en tiempo real mediante shaders de OpenGL (rotación, espejado, corrección de color y exposición), y envía el resultado al codificador hardware MediaCodec en H.264 o H.265. La biblioteca RootEncoder se encarga de empaquetar el flujo de video en RTP, después de lo cual el teléfono inicia un servidor RTSP.

Pipeline

En el lado de Windows, el cliente se conecta a la transmisión a través de FFmpeg, decodifica los frames y los envía a un dispositivo virtual DirectShow. Esto utiliza la biblioteca Softcam, que registra el controlador softcam.dll. Cualquier programa en la PC — ya sea OBS, Zoom, Telegram o Discord — reconoce el smartphone como una webcam USB física convencional.

Conectividad por cable e inalámbrica

Puedes transmitir video de dos maneras:

  1. A través de Wi-Fi. La computadora y el teléfono deben estar en la misma subred. Abre la pestaña Connect en el cliente de escritorio para ver un código QR, apunta la cámara del teléfono hacia él, confirma la conexión y la transmisión comienza.
  2. A través de USB mediante ADB. Este es el escenario principal y más confiable. Por cable, la latencia es mínima y la señal no se ve afectada por una banda de 2.4 GHz saturada de routers de vecinos.

Network

Detalle de ingeniería interesante: la utilidad ADB solo puede reenviar puertos sobre TCP. Por defecto, RTSP a menudo envía paquetes RTP sobre UDP, pero aquí la transmisión se tuneliza estrictamente en modo entrelazado TCP. Esto nos da un canal estable directamente a través de localhost sin pérdida de paquetes.

Qué hace interesante este proyecto en la práctica

A diferencia de soluciones voluminosas, VCamdroid se configura rápidamente y no requiere cuentas.

Esto es lo que puede hacer la combinación:

  • Cambiar entre los módulos de cámara frontal y trasera directamente desde la PC durante una llamada.
  • Controlar la linterna, zoom, exposición y balance de blancos.
  • Procesamiento de imagen acelerado por hardware en la GPU del teléfono, por lo que el procesador de la computadora apenas se carga.
  • Conectar varios teléfonos simultáneamente. Puedes colgar un smartphone para una toma amplia, apuntar el segundo a tu cara y cambiar entre ellos.

La imagen sale limpia, con verdadero 1080p y 60 fps si el sensor del teléfono lo soporta.

Inicio rápido

Necesitarás Windows 10 o 11 en la PC y Android 7.0 o superior en el teléfono.

Primero, configura Windows:

  1. Descarga el archivo desde la página de Releases del repositorio.
  2. Extrae y ejecuta install.bat como administrador. Este script registra el filtro DirectShow en el sistema.
  3. En la ventana del Firewall de Windows, permite el acceso de la aplicación para redes privadas y públicas.

Luego, instala el cliente en el teléfono:

  1. Habilita el modo Desarrollador en Android (toca el número de compilación en la configuración del teléfono siete veces) y activa el interruptor de Depuración USB.
  2. Conecta el teléfono a la computadora por cable y ejecuta el script install_apk.bat. Este envía automáticamente el APK al dispositivo a través de ADB.

Después de eso, abre VCamdroid en la computadora, inicia la aplicación en el smartphone, y se encuentran automáticamente entre sí a través del cable.

Compilación desde el código fuente

Si quieres profundizar en el código o agregar una función que necesites, el proyecto se compila con herramientas estándar.

Para la parte de Android, necesitarás un Android Studio reciente. Toda la lógica de captura y transmisión está incluida en el directorio android/.

Para el cliente Windows, necesitarás Visual Studio y el gestor de paquetes vcpkg. Las dependencias se obtienen con un comando:

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

Luego compila la biblioteca softcam, abre windows/VCamdroid.sln, selecciona la configuración Release x64 y compila el proyecto.

Limitaciones y aspectos problemáticos

El proyecto tiene alrededor de 400 estrellas en GitHub, y el código todavía está relativamente fresco en algunos lugares. Si tienes un firmware Android raro o específico, MediaCodec puede comportarse de manera inestable.

A veces el Firewall de Windows bloquea silenciosamente el tráfico RTSP cuando trabajas por Wi-Fi. En este caso, tienes que profundizar en la configuración del Defender manualmente o verificar los pings a través de adb shell ping. También ten en cuenta que el filtro DirectShow requiere bibliotecas Visual C++ Redistributable actualizadas en la PC, de lo contrario la aplicación simplemente fallará sin un error significativo.

VCamdroid es una excelente opción para cualquiera que esté cansado de la calidad de las webcams integradas en laptops o que no quiera gastar dinero en óptica separada para llamadas ocasionales. El proyecto es completamente gratuito, de código abierto bajo la licencia MIT, sin restricciones de tiempo y sin marcas de agua. Si tienes un smartphone antiguo con una buena cámara acumulando polvo en un estante, esta es una excelente manera de darle una nueva vida útil.

Proyectos relacionados