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.
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.
Por dentro combina tres piezas ya existentes y las coordina desde un único script:
/dev/video* normal.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.
.desktop y unidad systemd --user viven en un solo .sh. Se lee de un tirón, se audita de un tirón y se copia donde haga falta sin arrastrar una carpeta de dependencias./dev/video* estándar y el micrófono, un dispositivo PipeWire/PulseAudio normal. Cualquier programa que sepa elegir cámara o micrófono los ve directamente, sin integraciones ni plugins específicos.scrcpy de los repositorios de Mint/Ubuntu suele ir muy atrasado —a menudo por la serie 1.x—, muy por debajo de la 2.2 que PhoneCam necesita. Por eso no depende de ese paquete: comprueba la versión instalada y, si falta o se queda corta, descarga la build oficial más reciente desde los releases de GitHub y la deja lista en ~/.local/bin, sin pedir sudo ni tocar el resto del sistema.yad instalado añade además un icono en la bandeja con acceso directo a todo. Más detalles en Detección automática y bandeja del sistema.adb atascado no puede congelar el menú ni el agente. Antes de dar una webcam o un micrófono por activos, comprueba que el proceso siga siendo de verdad scrcpy y no un PID reciclado por otro programa; al detenerlos, espera a que cierren de verdad antes de devolver el control, para que un reinicio inmediato no se encuentre el dispositivo todavía ocupado./dev/video42) ya está ocupado por otra cámara o capturadora, PhoneCam elige automáticamente el siguiente libre. Reinstalar reutiliza ese número y la configuración que ya tenías —no la sobrescribe— y de paso vuelve a comprobar (y si hace falta, actualizar) scrcpy.sudo) te deja los comandos exactos para revertirla. Más detalles en Desinstalar.zenity instalado tienes menús y formularios; sin él, cae automáticamente a un menú de texto igual de funcional. Ningún paso se queda bloqueado solo por faltar una herramienta gráfica.apt, así que cualquier base Ubuntu/Debian debería comportarse igual; en distribuciones sin apt (Fedora, Arch…) tendrás que instalar las dependencias a mano e invocar el script directamente, sin pasar por install.x86_64. En otras arquitecturas necesitas instalar scrcpy 2.2+ por tu cuenta; PhoneCam lo usará igual una vez esté en el PATH.sudo solo se pide durante la instalación (paquetes del sistema, módulo v4l2loopback, grupos video/plugdev); el resto —incluida la descarga de scrcpy— corre como usuario normal, salvo que te falten a la vez curl y wget al ir a descargar scrcpy (no debería pasarte tras una instalación normal, porque curl ya es una de las dependencias), en cuyo caso se ofrece instalar curl con sudo antes de seguir.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:
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.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.~/.local/bin/phonecam y añade esa carpeta al PATH si no estaba ya.systemd --user que detecta el teléfono automáticamente.Dos cosas a tener en cuenta:
video o plugdev, tienes que cerrar sesión y volver a entrar (o reiniciar) para que el permiso surta efecto — hasta entonces, /dev/video42 (o el número que se haya asignado) existirá pero no podrás escribir en él.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 |
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.)
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ú.
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.
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 (ver tabla debajo).phonecam config o choose-cam en la siguiente conexión del teléfono, sin que haga falta reiniciar el servicio a mano.systemd lo reinicia solo.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.
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.
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.
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:
.deb para instalar con un doble clic, sin pasar por git cloneSi 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.
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.
Consulta el archivo LICENSE de este repositorio.
Hecho por Filonux.