Ir para o conteúdo

Como usar o celular como câmera no linux

TLDR

O que queremos fazer aqui é criar um dispositivo de loopback para captura de vídeo através da v4l2. Esse dispositivo irá receber a imagem da câmera de um dispositivo android. Desse modo poderemos usá-lo como webcam.

Esse é um post tutorial rápido de como utilizar o seu celular Android como webcam no linux. Para isso precisamos realizar as seguintes tarefas:

  • Ativar "opções do desenvolvedor" e "Depuração por USB"
  • Instalar dependências (v4l-utils e v4l2loopback)
  • Instalar e configurar o scrcpy

Ativar "opções do desenvolvedor" e "Depuração por USB"

Para o restante do tutorial funcionar, você precisa ativar a "depuração por USB" no seu dispositivo e isso só é possível se as "opções do desenvolvedor" estão configuradas. Como existem inúmeros dispositivos que rodam android, é mais fácil você aprender como faz na documentação oficial, mas lembre-se, você só precisa ativar "depuração por USB" nas "opções do desenvovedor".

Instalar dependências

v4l-utils

Depois de configurada a depuração por usb, iremos começar a instalação dos softwares no computador pelo v4l-utils, que é um conjunto de ferramentas para controlar dispositivos V4L2, que por sua vez é a API de vídeo do kernel Linux. Para a instalação, se você usa o fedora, como eu, utilize:

sudo dnf -y install v4l-utils

Para as demais distribuições, utilize o respectivo gerenciador de pacotes padrão.

v4l2loopback

O v4l2loopback é um driver que nos permitirá criar dispositivos V4L2 virtuais. Para instalar, você precisa clonar o repositório do projeto.

git clone https://github.com/v4l2loopback/v4l2loopback.git

navegar até a pasta clonada:

cd v4l2loopback
e instalar utilizando:

make && sudo make install

Para mais informações, leia a documentação oficial.

Instalar e configurar o scrcpy

Depois que as dependências vamos instalar o scrcpy para que possaamos espelhar dispositivos Android (vídeo e áudio) conectados via USB ou TCP/IP. Para instalar, se você utiliza o fedora, basta utilizar o comando:

sudo dnf copr enable zeno/scrcpy && sudo dnf install scrcpy

Para outras distribuições, favor consultar a documentação oficial.

Com o scrcpy instalado, você precisa conectar o dispositivo android via usb. Para testar, utilize o comando:

scrcpy --list-cameras
Isso irá listar as câmeras disponíveis no dispositivo conectado. Se tudo estiver funcionando, você verá a lista de câmeras do dispositivo. Agora, precisamos criar o dispositivo virtual, através do seguinte comando:

1
2
3
4
sudo modprobe v4l2loopback \
  video_nr=5 \
  card_label="Câmera do celular" \
  exclusive_caps=1
No comando acima, foi criado um dispositivo virtual (/dev/video5), que aparecerá com o nome "Câmera do celular". O parâmetro exclusive_caps=1 altera como as capacidades (capabilities) do dispositivo V4L2 são expostas para os aplicativos. Com isso os aplicativos enchergam o dispositivo como webcam real. Para verificar se o dispositivo foi criado, utilize o comando:

ls /dev/video*

O dispositivo /dev/video5 deve aparecer na lista. Depois disso iremos iniciar o scrcpy e espelhar a imagem da câmera no dispositivo criado.

1
2
3
4
5
6
scrcpy --video-source=camera \
  --camera-size=1280x720 \
  --camera-id=0 \
  --capture-orientation=180 \
  --v4l2-sink=/dev/video5 \
  --no-video-playback

Através desse comando criamos uma câmera de dimensões 1280x720. Ela aparecerá como "Câmera do celular" nas aplicações. Pronto, agora você poderá utilizar a câmera do seu celular como webcam. Para deixar tudo ainda mais interessante, pode criar um bash script que una a criação do dispositivo de loopback e o espelhamento da câmera:

camera.sh
sudo modprobe v4l2loopback video_nr=5 card_label="Câmera do celular" exclusive_caps=1
scrcpy --video-source=camera --camera-size=1280x720 --camera-id=0 --capture-orientation=180 --v4l2-sink=/dev/video5 --no-video-playback

Adicione permissões de execução chmod +x camera.sh e voilà, agora com um simples comando você pode utilizar seu celular como webcam de alta qualidade.

Se você notar erros ou enganos nesta publicação, não hesite em me contatar pelo e-mail madsonddias@gmail.com e terei o maior prazer em corrigi-los imediatamente!