PhoneCam

Icono de Simple-Backup

PhoneCam

Versión 1.0.0 Bash 4+ Linux Mint 22.3 Cinnamon

Convierte la cámara y el micrófono de tu Android en una webcam y un micrófono más de tu Linux Mint, por cable USB. Sin instalar nada en el teléfono, sin Wi-Fi, sin nube: todo se queda entre tu móvil y tu PC.

⚠️ PhoneCam está en español — menús, avisos y comentarios del código. Si te interesa una versión en inglés, hay más detalles en Idioma y roadmap.

Qué es

Para cualquier programa que elija cámara o micrófono —Zoom, Meet, Discord, OBS, Teams, el propio navegador— tu teléfono pasa a aparecer en la lista como una webcam cualquiera, sin que esa aplicación tenga que saber nada especial sobre PhoneCam ni sobre tu móvil.

1menu-phonecam 2confi-avanza-menu 3conecta-telf-phonecam

Por dentro combina tres piezas ya existentes y las coordina desde un único script:

PhoneCam no reinventa nada de eso: se encarga de instalarlo, conectarlo todo correctamente entre sí y ponerte un menú delante para que no tengas que recordar ni un solo comando.

Conectarlas bien es más que “encenderlas a la vez”. Al iniciar la webcam, PhoneCam le pide a scrcpy solo la cámara —sin pantalla, sin control remoto, para no gastar recursos de más— y la vuelca en el dispositivo de v4l2loopback. Al iniciar el micrófono, le pide solo audio y enruta él mismo el flujo de sonido hasta el micrófono virtual; si no lo consigue en unos segundos, te avisa y te explica cómo terminarlo a mano en pavucontrol.

Ventajas

Compatibilidad

Instalación

git clone https://github.com/filonux/PhoneCam.git
cd Phonecam/script
chmod +x phonecam.sh
./phonecam.sh install

No lo ejecutes con sudo: el propio instalador lo pedirá cuando de verdad lo necesite. Si quieres una instalación desatendida (sin preguntas, salvo la contraseña de sudo del sistema), usa ./phonecam.sh install --yes.

Durante la instalación, el script:

  1. Instala por apt lo que hace falta: adb, curl, v4l2loopback-dkms, v4l-utils, pipewire, pipewire-pulse, wireplumber, pulseaudio-utils, zenity, yad, libnotify-bin y las cabeceras del kernel en uso.
  2. Descarga scrcpy (la build oficial, no la de los repositorios) si no lo tienes o tu versión es demasiado antigua.
  3. Configura v4l2loopback para que la webcam virtual sobreviva a un reinicio —si el número de dispositivo que usa por defecto ya está ocupado por otra cámara o capturadora, elige automáticamente el siguiente libre—, y añade tu usuario a los grupos video y plugdev si hace falta.
  4. Se copia a sí mismo a ~/.local/bin/phonecam y añade esa carpeta al PATH si no estaba ya.
  5. Escribe una configuración por defecto (si no tenías una) y crea el lanzador de aplicaciones y el servicio systemd --user que detecta el teléfono automáticamente.

Dos cosas a tener en cuenta:

Todo lo que crea la instalación queda aquí:

Qué Dónde
Comando instalado ~/.local/bin/phonecam
Configuración ~/.config/phonecam/phonecam.conf
Registros ~/.local/share/phonecam/logs/
Estado en ejecución (PID de cada proceso) $XDG_RUNTIME_DIR/phonecam/ (o ~/.cache/phonecam/ si no hay XDG_RUNTIME_DIR)
scrcpy descargado por PhoneCam ~/.local/share/phonecam/scrcpy/
Lanzador de aplicaciones ~/.local/share/applications/phonecam.desktop
Servicio del agente ~/.config/systemd/user/phonecam-agent.service

Comandos

Una vez instalado, phonecam funciona como cualquier otro comando del sistema. Si prefieres no instalarlo, exactamente lo mismo funciona ejecutando ./phonecam.sh <comando> desde script/.

Comando Qué hace
phonecam / phonecam menu Abre el menú — gráfico si hay zenity, de texto si no. Es lo que se ejecuta si no pasas ningún comando.
phonecam webcam Inicia solo la cámara del teléfono como webcam.
phonecam mic Inicia solo el micrófono del teléfono.
phonecam both Inicia cámara y micrófono a la vez.
phonecam stop Detiene todos los procesos de PhoneCam.
phonecam status Estado actual: conexión del teléfono, procesos activos, dispositivos virtuales.
phonecam cameras Lista las cámaras disponibles en el teléfono.
phonecam choose-cam Elige y guarda la cámara predeterminada — útil si el teléfono tiene varias.
phonecam config Abre la configuración avanzada (formulario gráfico, o el archivo en tu editor si no hay zenity).
phonecam ayuda Guía rápida de cómo conectar y autorizar el teléfono.
phonecam version Muestra la versión instalada.
phonecam install [--yes] Instala PhoneCam y sus dependencias.
phonecam uninstall Desinstala PhoneCam.
phonecam help (o -h / --help) Lista de comandos, con una línea de qué hace cada uno.

(phonecam agent también existe, pero es de uso interno: lo lanza el servicio systemd --user que crea el instalador para la detección automática — ver Detección automática y bandeja del sistema. No hace falta ejecutarlo a mano.)

Cómo conectarlo por primera vez

  1. En el teléfono: Ajustes → Acerca del teléfono, toca 7 veces sobre “Número de compilación” para activar las Opciones de desarrollador.
  2. Entra en Opciones de desarrollador y activa Depuración USB.
  3. Conecta el teléfono al PC con un cable USB de datos (no todos los cables de carga lo son).
  4. En el teléfono aparecerá un aviso “Permitir depuración USB”: acéptalo y marca “Recordar en este equipo” para no repetirlo cada vez.
  5. Ejecuta phonecam menu (o phonecam webcam / mic / both directamente).

A partir de ahí, en la app donde quieras usarlo, elige el dispositivo como lo harías con cualquier cámara o micrófono normal: la webcam debería aparecer como “PhoneCam” (a veces se ve como “Dummy video device”, según cómo la lea la app) y el micrófono como “PhoneMic”.

Si tienes varios teléfonos conectados a la vez, PhoneCam te deja elegir cuál usar en el menú gráfico (en el de texto, coge el primero que encuentra y te avisa); si el teléfono tiene varias cámaras (angular, frontal, etc.), phonecam choose-cam te deja fijar cuál quieres como predeterminada.

Esta misma guía está siempre a mano con phonecam ayuda, o desde la opción “❓ Cómo conectar el teléfono” del propio menú.

Configuración avanzada

phonecam config abre un formulario (o el archivo de texto, si no tienes zenity) sobre ~/.config/phonecam/phonecam.conf:

Campo Qué controla Por defecto
CAMERA_FACING Qué cámara usar por orientación: back, front o external back
CAMERA_ID Fuerza una cámara concreta por ID (la fija phonecam choose-cam; tiene prioridad sobre CAMERA_FACING) vacío
CAMERA_SIZE Resolución, formato ANCHOxALTO (vacío = la máxima que declare el teléfono) vacío
CAMERA_FPS Fotogramas por segundo 30
VIDEO_QUALITY_PROFILE balanced (H.264, mínima latencia, recomendado para videollamadas) o max (H.265, más calidad, algo más de latencia de decodificación) balanced
AUDIO_SOURCE Fuente de audio del teléfono: mic, mic-unprocessed, mic-voice-communication o mic-camcorder mic
AUDIO_CODEC Códec del micrófono: opus, aac, flac o raw opus
AUDIO_BITRATE Bitrate de audio, ej. 192K 192K
AUTO_MODE Qué hacer al conectar el móvil: ask, webcam, mic, both u off ask
TURN_SCREEN_OFF Apaga la pantalla del móvil al iniciar la captura false
KEEP_AWAKE Evita que el móvil se bloquee mientras está conectado true

El propio archivo .conf trae comentarios explicando cada opción, así que también se puede editar a mano sin mirar esta tabla. Ahí viven además, aunque no en el formulario, el bitrate exacto de cada perfil de vídeo (VIDEO_BITRATE_BALANCED y VIDEO_BITRATE_MAX, 20M/30M por defecto), el dispositivo de vídeo virtual (V4L2_DEVICE) y los nombres de los dispositivos de audio virtuales (MIC_SINK_NAME, MIC_SOURCE_NAME).

El formulario valida los campos de texto libre —resolución, FPS y bitrate de audio— antes de guardar nada, así que un valor mal escrito no acaba apareciendo después como un fallo críptico de scrcpy; el resto de campos son listas desplegables, así que no hay forma de dejarlos con un valor inválido. Cualquier cambio guardado se aplica de inmediato a la sesión en la que lo cambiaste; el agente en segundo plano lo recoge en la siguiente conexión del teléfono.

Detección automática y bandeja del sistema

La instalación deja activo un agente (phonecam agent, gestionado como servicio systemd --user) que vigila la conexión del teléfono sin que tengas que abrir el menú:

AUTO_MODE Qué hace el agente al conectar el teléfono
ask (por defecto) Abre una ventana pequeña preguntando si quieres solo webcam, solo micrófono, ambos o no hacer nada. Si no tienes zenity, en su lugar te llega una notificación pidiéndote que abras phonecam menu.
webcam / mic / both Arranca ese modo directamente, sin preguntar nada.
off No hace nada automático; el uso manual con phonecam sigue disponible igual.

Con yad instalado, además aparece un icono en la bandeja del sistema con accesos directos a: abrir el menú completo, solo webcam, solo micrófono, webcam + micrófono, ver el estado, detener todo, abrir la configuración y salir — esta última opción detiene el servicio de verdad, no solo esconde el icono.

Desinstalar

phonecam uninstall

Tampoco lo ejecutes con sudo: se niega a arrancar como root, igual que el instalador. Detiene todos los procesos, desactiva y borra el agente en segundo plano, quita el comando instalado y el lanzador, libera el micrófono virtual y limpia los registros y archivos temporales. También borra la carpeta donde descargó scrcpy (~/.local/share/phonecam/scrcpy/); el enlace ~/.local/bin/scrcpy solo lo borra si todavía apunta ahí, así que si en algún momento pusiste tú tu propio scrcpy en su lugar, no lo toca. Lo único que te pregunta antes de borrar es la configuración guardada en ~/.config/phonecam; si respondes que no, se queda ahí por si reinstalas más adelante.

La webcam virtual no se revierte sola porque hacerlo necesita sudo: el propio comando imprime estos tres comandos exactos para hacerlo a mano cuando quieras.

sudo rm -f /etc/modprobe.d/phonecam-v4l2loopback.conf
sudo rm -f /etc/modules-load.d/phonecam-v4l2loopback.conf
sudo modprobe -r v4l2loopback

Los paquetes del sistema (v4l2loopback-dkms, pipewire…) tampoco se desinstalan, por si los usa alguna otra aplicación; el propio comando te lo recuerda, aunque ahí ya te toca a ti decidir con apt qué paquetes quitar si quieres dejar el sistema completamente limpio.

Se lleva bien con Scriptya

Scriptya es otro proyecto de Filonux: un menú que organiza tus scripts en carpetas, los ejecuta con búsqueda difusa y puede convertir cualquiera de ellos —phonecam.sh incluido— en una app independiente con su propio icono, en el menú de aplicaciones o en el escritorio, sin tener que escribir un .desktop a mano.

Le puedes apuntar a la carpeta script/ de este repositorio y lanzar PhoneCam desde ahí, o usar scriptya --icons para dejarlo instalado como app aparte. Scriptya también lee metadatos opcionales al principio de cada script (nombre para el menú, descripción, si pide confirmación, si necesita sudo…); phonecam.sh todavía no los incluye, pero es un candidato natural para una futura actualización.

Idioma y roadmap

PhoneCam está en español: menús, avisos, mensajes de estado y comentarios del código. No hay versión en inglés por ahora.

Mini-roadmap, sujeto a que haya interés real:

Si te interesa cualquiera de las dos cosas, abre un issue y dilo — es la forma más simple de que se sepa que hay gente esperándolo.

Contribuir

Los issues y pull requests son bienvenidos. Hay plantillas para reportar un fallo o proponer una mejora, y la guía completa está en CONTRIBUTING.md. Este proyecto sigue el código de conducta descrito en CODE_OF_CONDUCT.md; si necesitas reportar algo relacionado con seguridad de forma privada, mira SECURITY.md.

Licencia

Consulta el archivo LICENSE de este repositorio.


Hecho por Filonux.