Adicionando Filtro de Tela de Fundo Customizado direto na câmera do UBUNTU Linux para reuniões do Teams
- Qual a ideia?
- Instalação e Preparação do Ambiente
- Passo a Passo
- 1 - Vamos criar o device virtual, para isso liste os devices que você já tem, pois cada device possui uma numeração e não podemos sobrescrever nenhum.
- 2 - Verificando qual o principal device físico da sua webcam
- 3 - Depois que já identificamos qual o device real iremos utilizar para gerar o device virtual, o usaremos o v4l2loopback para criação.
- 4 - Instalação do projeto Linux-Fake-Background-Webcam
- 5 - Testando
- 6 - Maravilha! Se deu certo até aqui, você já pode testar no seu teams:
- E agora ? Criando serviço
- Muito bem! Chegamos até aqui. O que falta ?
Qual a ideia?
Qual problema esse artigo resolve ?
Já faz algum tempo que a microsoft implementou no aplicativo de reuniões Microsoft Teams a opção de alterar o background da sua câmera. E isso permite utilizar imagens que o próprio teams disponibiliza como essa:
Entretanto, para algumas empresas é interessante customizar o wallpaper do fundo da tela para alguma imagem padrão da compania, isso passa uma imagem de profissionalismo e dependendo do tipo de apresentação que você for fazer, pode ser interessante utilizar um background customizado da empresa.
O problema é: Para usuários do Ubuntu, mas vale para as outras distribuições Linux também. A microsoft não disponibiliza a feature que envolve carregar uma imagem customizada para o background. Apenas usuários do windows premium tem essa regalia.
Fonte: https://support.microsoft.com/en-us/office/change-your-background-in-microsoft-teams-meetings-f77a2381-443a-499d-825e-509a140f4780
O que vamos fazer?
Nesse artigo vamos descer um pouco o nível. Não vamos trabalhar na camada de aplicação do teams, vamos criar um device de video virtual que carrega a leitura de vídeo da câmera padrão do notebook e adiciona um fundo de tela.
Nesse device virtual que vamos criar, iremos configurar no teams para utilizar o device virtual ao invés da câmera original, sendo assim possível ter o background que quisermos, independente do aplicativo de reuniões, seja teams, google meeting, zoom, etc.
Por sorte, já temos na comunidade o lfbw que irá nos auxiliar MUITO na resolução.
Testado em: Ubuntu Linux 22.04.3 LTS
Instalação e Preparação do Ambiente
1 - Precisamos instalar o pacote ffmpeg e v4l-utils para testar o device virtual e facilitar a identificação:
1
sudo apt -y install ffmpeg v4l-utils
2 - Para criar o device virtual, utilizaremos o v4l2loopback-dkms
1
sudo apt -y install v4l2loopback-dkms
3 - Clone o repositório Linux-Fake-Background-Webcam
1
git clone https://github.com/fangfufu/Linux-Fake-Background-Webcam.git
4 - Certifique-se de ter instalado o python3
1
python3 --version
Passo a Passo
1 - Vamos criar o device virtual, para isso liste os devices que você já tem, pois cada device possui uma numeração e não podemos sobrescrever nenhum.
1
sudo v4l2-ctl --list-devices
1
sudo ls -l /dev/video*
A saída deve ser algo parecido com a imagem abaixo:
No meu caso, o último device físico é o /dev/video4, então eu posso criar a partir do /dev/video5 sem comprometer minha webcam. Para esse teste irei utilizar o /dev/video6
2 - Verificando qual o principal device físico da sua webcam
Para isso, utilizaremos o ffmpeg para testar cada um dos devices:
1
ffplay /dev/video1
Teste com todos os devices que você tiver, no meu caso o que funcionou corretamente foi o /dev/video1, note que outros podem funcionar, entretanto dependendo da sua webcam pode ter mais de um device funcional. Escolha o que for mais próximo da sua realidade.
3 - Depois que já identificamos qual o device real iremos utilizar para gerar o device virtual, o usaremos o v4l2loopback para criação.
tenha certeza que não há nenhum device virtual já criado, o comando abaixo deleta os existentes (em memória, qualquer problema é só rebootar. Mas se você nunca criou um device virtual de video ou audio antes, não há com o que se preocupar).
1
sudo modprobe -r v4l2loopback
Supondo que você quer criar o device virtual no /dev/video6:
1
sudo modprobe v4l2loopback devices=1 exclusive_caps=1 video_nr=6 card_label="fake-cam"
Cheque se o device foi criado, conforme demonstrado no passo 1 de listagem.
4 - Instalação do projeto Linux-Fake-Background-Webcam
Navegue até a raiz da pasta do repositório que você clonou do Linux-Fake-Background-Webcam
Certifique-se de que o pip está atualizado
1
python3 -m pip install --upgrade pip .
Agora vamos instalar as dependencias do projeto
1
python3 -m pip install --upgrade .
Caso aconteça algum erro na instalação das dependencias, verifique no projeto.
Agora iremos configurar o arquivo config-example.ini. Abaixo há uma sugestão,
Mas o que iremos precisar mesmo é adicionando o campo “background-image” com o path da imagem que você deseja adicionar no fundo.
E alterar o valor do “webcam-path” para o device correto que você identificou no passo 2 (utilizando ffplay)
config-example.ini
Não se preocupe a principio com os valores de width e height, depois do teste você ajusta conforme necessário.
5 - Testando
Com tudo configurado corretamente, vamos testar (certifique-se de que o lfbw está devidamente instalado conforme passo 4):
Na raiz do projeto Linux-Fake-Background-Webcam execute:
1
lfbw -c config-example.ini
Observação: Para cancelar o processo, basta pressionar “ctrl+" que é o sinal “SIGQUIT”
se der tudo certo a seguinte mensagem irá aparecer:
1
2
3
Real camera original values are set as: 640x480 with 30 FPS and video codec 1448695129
Real camera new values are set as: 640x480 with 30 FPS and video codec 1196444237
Running...
Na mensagem acima você pode conferir os valores de altura e largura da sua tela e ajustar conforme necessário. No nosso caso já está ajustado.
Agora para verificar se o device virtual está funcionando, teste utilizando ffplay conforme passo 2:
No nosso exemplo, criamos para o /dev/video6
1
ffplay /dev/video6
Com o sucesso, deve aparecer a imagem de fundo dessa forma:
6 - Maravilha! Se deu certo até aqui, você já pode testar no seu teams:
Certifique-se de escolher nas configurações o device virtual criado.
E agora ? Criando serviço
Com isso você já consegue entrar em reuniões com backgrounds personalizados, entretanto se você reiniciar sua máquina vai precisar realizar o passo 3 e 5 novamente.
Para tornar isso mais efetivo, vamos transformar em serviço.
Volte para a raiz do projeto github, dentro dele tem uma pasta “systemd-user”. Sim, a comunidade pensou nisso, que maneiro né ?
vamos copiar o arquivo lfbw.service que está dentro da pasta systemd-user para o /etc/systemd/system no caso do ubuntu ou dependendo da sua distribuição, o local onde ficam os arquivos “.service”,
Na dúvida pergunte ao chatgpt o path so serviços da sua distribuição Linux.
1
sudo cp -a lfbw.service /etc/systemd/system/
e o outro arquivo “lfbw_start_wrapper.sh” para o path ~/.local/bin
1
cp -a lfbw_start_wrapper.sh ~/.local/bin/lfbw_start_wrapper.sh"
agora edite o arquivo lfbw.service corrigindo o path do script para sua home:
1
vi /etc/systemd/system/lfbw.service
lfbw.service
Agora edite o arquivo lfbw_start_wrapper.sh que copiou para sua home (Se atente para o número do parâmetro “video_nr” que deve ser o número do device virtual da câmera, que irá ser criado.):
1
vi ~/.local/bin/lfbw_start_wrapper.sh
lfbw_start_wrapper.sh
Um reload para salvar o novo serviço:
1
systemctl daemon-reload
dessa forma criamos um serviço chamado lfbw.
Teste o serviço:
1
service lfbw start
1
service lfbw status
se estiver tudo certo, habilite na inicialização do sistema operacional:
1
systemctl enable lfbw
Muito bem! Chegamos até aqui. O que falta ?
- Falta elaborar uma forma mais eficiente de manter o device virtual sempre funcionando, há casos onde dependendo da inicialização do sistema a webcam original não surge no sempre device (/dev/video2). Há casos onde surge no /dev/video0 ou /dev/video1, etc…
Caso isso aconteça com você, basta repetir o passo 2 e editar o arquivo config-example.ini conforme passo 4.