- O Android 14 pode reduzir a dependência de apps separados para usar webcam no PC ao oferecer um modo de webcam USB no nível do sistema operacional
- A nova opção em USB Preferences pode mudar o aparelho para o modo UVC (USB Video Class), fazendo com que PCs com Windows, macOS e Linux o reconheçam como uma webcam USB padrão
- No entanto, o recurso não é ativado automaticamente; é preciso que a configuração do kernel, a configuração de UVC, a atualização do USB HAL e o app de sistema Webcam Service estejam alinhados
- O Webcam Service envia frames da API Camera2 para o nó
/dev/video, e o usuário pode controlar pré-visualização, zoom e troca de lente pela notificação - Mesmo em aparelhos atualizados para o Android 14, dispositivos com kernel antigo ou limitações de HAL podem ficar de fora, então o suporte real depende da implementação do fabricante
Modo de webcam USB no Android 14
- A partir do Android 14, a função de usar o smartphone como webcam para PC pode passar a fazer parte do próprio Android OS
- Durante o período da COVID, o uso de plataformas de videoconferência como Zoom e Google Meet aumentou, mas webcams boas eram difíceis de encontrar ou caras, e a qualidade das webcams embutidas em notebooks também era limitada
- Como as câmeras de smartphones costumam ter qualidade de imagem melhor que a maioria das webcams, muitos usuários já usavam software de terceiros para transformar o celular em webcam
- No Android 14, a opção USB webcam pode aparecer em USB Preferences
- Os modos USB existentes incluem transferência de arquivos/Android Auto (MTP), tethering USB (NCM), MIDI e PTP
- Ao selecionar USB webcam, se o aparelho for compatível, o modo USB muda para UVC
- O PC conectado com Windows, macOS ou Linux reconhece o dispositivo Android como uma webcam USB padrão
- Isso também pode funcionar com outros dispositivos Android
Condições necessárias para ativar o recurso
- O suporte a webcam no Android 14 não é um recurso ativado por padrão
- Para funcionar na prática, são necessárias quatro condições
- Ativação da configuração do kernel Linux
- Configuração do UVC gadget
- Atualização do USB HAL
- Pré-instalação de um novo app de sistema
Requisitos de configuração do kernel
- A configuração necessária do kernel Linux é
CONFIG_USB_CONFIGFS_F_UVC - Essa configuração é necessária para permitir que o dispositivo Android seja montado como um UVC gadget
- Muitos aparelhos atualizados para o Android 14 e quase todos os lançados com Android 14 provavelmente terão kernels com essa configuração ativada
- No Generic Kernel Image (GKI), essa configuração vem ativada por padrão desde
android12-5.10 - Dispositivos lançados com Android 12 ou superior e que usam Linux kernel 5.10 ou superior devem incluir kernel GKI
- No Generic Kernel Image (GKI), essa configuração vem ativada por padrão desde
- No ecossistema Android, atualizações de versão major do kernel são raras e, como o programa Google Requirements Freeze (GRF) permite certificar implementações antigas de fornecedores, alguns aparelhos atualizados para o Android 14 podem não oferecer suporte ao recurso de webcam USB
- A forma mais direta de verificar o suporte é conferir a versão do kernel e se a configuração está ativada
- Verificar a versão do kernel:
adb shell "cat /proc/version"
- Verificar a configuração do kernel:
adb shell "zcat /proc/config.gz | grep 'CONFIG_USB_CONFIGFS_F_UVC'"
- Verificar a versão do kernel:
- Como exemplo, o Galaxy Z Fold 5 rodando Android 13 usa
android13-5.15GKI e temCONFIG_USB_CONFIGFS_F_UVC=y, então, ao ser atualizado para o Android 14, pode oferecer suporte ao recurso de webcam USB, desde que os outros pré-requisitos também sejam atendidos
App de sistema Webcam Service
- Algumas versões beta do Android 14 QPR1 para certos aparelhos Pixel incluem um novo app de sistema chamado Webcam Service
- O nome do pacote é
com.android.deviceaswebcam - Ele depende da biblioteca compartilhada
libjni_deviceAsWebcam.so - Esse app e essa biblioteca devem ser incluídos em um futuro lançamento do código-fonte do Android 14
- O nome do pacote é
- O app Webcam Service implementa o serviço DeviceAsWebcam, que transforma o dispositivo Android em webcam
- Esse serviço envia os frames da câmera para um nó
/dev/videoque o dispositivo host pode ler - Segundo a política SELinux, o nó
/dev/videosó pode ser acessado por processos no domíniodevice_as_webcam- Na prática, quem acessa é apenas o app de sistema Webcam Service
- Por isso, o suporte nativo a webcam USB no Android 14 pode ser aproveitado pelo fabricante do dispositivo, mas não pode ser usado diretamente por apps de terceiros
Forma de iniciar a webcam USB e controles do usuário
- Quando a nova opção USB webcam é ativada em USB Preferences, o sistema transmite o intent
android.hardware.usb.action.USB_STATE- O intent inclui os extras
connectedeuvc
- O intent inclui os extras
- O Webcam Service tem um receiver que recebe esse intent
- O extra
uvcestá definido comotrue - O método de framework
android.hardware.usb#isUvcSupportEnabled()retornatrue - Quando as duas condições são atendidas, o serviço do sistema é iniciado
- O extra
isUvcSupportEnabled()retornatruequando a propriedade de sistemaro.usb.uvc.enabledestá comotrue- Essa propriedade precisa ser definida pelo OEM no momento da build
- Se ela não estiver definida, a opção USB webcam não aparece em USB Preferences e o Webcam Service também não é iniciado
- Essa propriedade só pode ser lida por apps de sistema como Settings e Webcam Service
- Quando o Webcam Service é iniciado, aparece uma nova notificação para o usuário configurar a webcam
- Ao tocar na notificação, abre-se a pré-visualização da câmera
- O usuário pode aplicar zoom in/out ou trocar de lente
- Internamente, o app Webcam Service inicia um foreground service para evitar que o sistema o encerre
- Ele usa a API Camera2 e oferece streaming em 720p (1280×720) ou 1080p (1920×1080)
- No host conectado, o nome do dispositivo de webcam aparece como Android Webcam
ConfigFS e USB HAL
- O nome exibido no host, os parâmetros de vídeo e a forma exata de codificação variam conforme o fabricante configura o UVC gadget via configfs
- Em aparelhos Pixel baseados em Tensor, a configuração da função UVC gadget do Google está nos arquivos
init.gs[101|201].usb.rcdentro de/vendor/etc/init/hw - Para que o Android mude o modo USB selecionado nas Settings para UVC, é necessário um USB HAL atualizado
- Por causa do programa GRF, muitos aparelhos atualizados para o Android 14 provavelmente não receberão um USB HAL atualizado, e nesse caso o recurso não funcionará
Suporte de plataforma e limitações
- Ao implementar um recurso nativo de webcam USB no Android, o Google permite que fabricantes interessados adotem essa funcionalidade
- Se o app Webcam Service for incluído no AOSP como esperado, os fabricantes poderão usá-lo para implementar o recurso de webcam
- Pode ser comparado ao Continuity Camera da Apple, mas a abordagem do Android funciona em várias plataformas
- Telefones com Android 14 e que atendam aos requisitos podem se transformar em uma webcam USB padrão e ser usados em qualquer PC
1 comentários
Opiniões do Hacker News
O scrcpy já é excelente para esse uso: https://github.com/Genymobile/scrcpy
Para transmitir a câmera do celular no OBS, basta esperar o dispositivo com
adb, obter o IP dewlan0, conectar comadb tcpip 5555eadb connect, e então executarscrcpy -e --v4l2-sink=/dev/video0 --lock-video-orientation=1 -n -NSe você puder compilar a partir do código-fonte, também adicionei commits extras em cima do PR, com suporte ao modo restrito de captura em alta velocidade do Android, permitindo streaming de câmera a 120fps/240fps. Não é lá muito útil para reuniões, mas é útil para capturar vídeo de VR de realidade mista em alta taxa de quadros. Até onde sei, não existe nenhum app de webcam para Android, proprietário ou open source, que passe de 60fps
adbestá bem completo, então gostaria de conselhos sobre duas coisas que ainda faltam do meu lado. Uma é como definir uma porta fixa para ADB/TCP ou encaminhá-la automaticamente para o PC, já que agora o Android muda a porta a cada vez. A outra é como ativar ADB/TCP em hotspot móvel, pois o Android reclama: “Please connect to WiFi”Tirando essas duas coisas, graças ao scrcpy, KDE Connect e Waydroid, a integração Linux-Android é quase perfeita, a ponto de até usuários da Apple ficarem com inveja
Fugindo um pouco do assunto, durante o lockdown eu estava procurando uma forma de usar o iPhone como webcam e descobri o VDO.Ninja: https://vdo.ninja/
No começo era uma forma de enviar o feed de vídeo para o OBS, e eu usava isso para montar uma entrada de webcam. Com o crescimento do projeto, ele também passou a servir para algo parecido com o Zoom, abrindo diretamente no navegador o compartilhamento de vídeo e áudio do desktop, o que permitiu organizar noites de cinema virtuais remotas
Dá para fazer pela interface de criação de salas, mas configurar tudo só com parâmetros de URL era muito mais flexível e robusto: https://docs.vdo.ninja/master/how-does-it-work
Ao criar URLs de remetente e destinatário, eles se conectam automaticamente via WebRTC. Por exemplo, dava para criar uma fonte que capturava uma janela do VLC e enviava vídeo e áudio, enquanto duas URLs de destino recebiam esse vídeo/áudio e também enviavam o áudio de seus microfones uma para a outra. Assim era possível assistir e ouvir um filme juntos no navegador e ainda conversar. Não tenho nenhuma relação com o projeto; só acho que ele é realmente excelente
OBS é uma ferramenta usada para transmitir a tela do computador para lugares como a Twitch: https://obsproject.com/
É um recurso novo bem-vindo. As empresas vêm investindo tempo e esforço para criar câmeras com recursos como rastreamento e modo retrato
Ainda assim, parece ter chegado um pouco tarde em comparação com o momento da pandemia em que tudo virou remoto de repente e todo mundo estava desesperado atrás de webcams. Teria sido bom se tivessem oferecido esse recurso naquela época, em vez de nos fazer comprar apps de terceiros
Para mim, foi pouco demais e tarde demais. Não quero ser o tipo de pessoa que solta esse tipo de “hot take”, mas, ouvindo um pouco: até 2013 eu só usava telefone fixo, sem celular, comecei com um Nexus 4 e fui trocando a cada 2 ou 3 anos até chegar ao Pixel 6. Só que amanhã meu primeiro iPhone chega
Há muitos motivos. Não dá para conectar um celular do Google a um monitor externo e espelhar a tela, e a saída DisplayPort está explicitamente desativada no código-fonte sem motivo: https://twitter.com/MishaalRahman/status/1189998588023234560 É um recurso que funciona bem em outros celulares
Também não dá para acessar as mensagens de texto de um celular Android sem um app separado. Tentei
adb backup, mas não funciona; talvez dê com root, mas pelo que sei o processo de root normalmente apaga tudoTambém não dá para acessar o backup do celular. Ele fica salvo apenas nos servidores do Google, e a única forma de chegar perto disso é restaurando em um telefone. Tenho fisicamente na mão um aparelho que comprei, mas não consigo acessar tudo que há nele. No iPhone, dá para conectar no Windows ou no Mac e despejar o backup no computador, e ele inclui mensagens, configurações do sistema, contatos, fotos, bancos de dados, quase tudo. Talvez a exceção sejam coisas como chaves de proteção de hardware
Nem preciso falar das palhaçadas do Google. A bagunça de mensageiros, o encerramento de vários serviços, o suporte insuficiente, uma integração mais forte com anúncios e rastreamento, coisas assim. A Apple também não é perfeita, mas sinto que vale a pena entrar por um tempo no jardim murado. No iOS há saída de vídeo, acesso ao próprio aparelho, mensagens que fazem sentido e pelo menos a sensação de que se importam com privacidade. Paradoxalmente, sinto que tenho mais controle usando produtos da Apple do que produtos do Google
Por exemplo, não dá para saber a velocidade de carregamento nem o tempo estimado de carga, então é difícil confirmar se escolhi, entre vários carregadores, um carregador rápido e cabo compatíveis com o iPhone; e, mesmo com Chrome ou Firefox instalados, se você seleciona um texto e toca em pesquisar na web, ele vai para o Safari. Há muitas pequenas irritações desse tipo, e o sistema operacional é tão fechado que não há o que fazer
O Android é muito mais fácil de personalizar, e sideload, como rodar um emulador de GBA no iPhone, também é mais fácil. Há aparelhos mais interessantes no ecossistema Android, como os flip phones da Samsung. A integração do ecossistema com o Mac é boa, mas é difícil dizer que um lado é claramente melhor
Nenhum dos serviços que o Google matou me afetou, e nem sei bem a que se referem com a bagunça de mensageiros. Também não está claro que tipo de suporte estaria faltando
O Pixel 1 XL era excelente, mas depois de uns 2 anos a câmera começou a falhar constantemente, levava mais de 3 segundos para abrir ou travava com frequência. No fim, a bateria piorou, e a bateria de reposição também se degradou em poucos meses, então troquei
O Pixel 3a caiu do meu bolso e quebrou dois meses antes do fim das atualizações de segurança. No geral era um bom telefone, mas o Google não deu suporte por tanto tempo quanto eu esperava. O Pixel 6 Pro está bom até agora, mas o Pixel 5 da minha esposa tem problemas como desempenho lento e conexão celular instável
Talvez a lição seja “não compre celulares Pixel”, mas as alternativas podem ser um pesadelo ainda maior em termos de segurança. Os celulares Galaxy vinham com uma quantidade inacreditável de apps lixo pré-instalados para remover. No Pixel há apenas apps do Google e a maioria pode ser removida, então as preocupações de privacidade e segurança são menores do que ter apps de 30 empresas pré-instalados, talvez impossíveis de apagar
Critiquei muito a Apple ao longo dos anos, então é decepcionante que, no fim, trocar de plataforma pareça ser a melhor opção
Algumas inconveniências parecem bem irritantes, mas não a ponto de eu aceitar a restrição de pagar uma assinatura recorrente para escrever código no computador que eu quiser e executá-lo no meu telefone ou no telefone de amigos, tendo que submetê-lo a um revisor que pode recusá-lo por qualquer motivo
Nesses sistemas, é possível ter acesso
adbcomo root, e com isso também acessar o banco de dados SQLite das mensagens. O espelhamento de tela via modo alternativo DP do USB-C funciona por padrão, e também dá para ativar o “modo desktop” do Android, embora ele ainda seja bem básico e experimentalA Fairphone oferece suporte por bastante tempo, é fácil de consertar e também consegue rodar kernel mainline (postmarketOS etc.). Claro que, do ponto de vista do sistema operacional, qualquer celular Android ainda depende do Google
Concordo com muitas críticas ao Google, mas ir para a Apple parece trocar um mal por outro. Eu jamais chamaria um telefone da Apple de “meu”, e também não sinto que a Apple ofereça “acesso ao próprio aparelho”
Uso o app Camo há mais de um ano. Funciona muito bem e também permite ver a câmera por Wi‑Fi, então não precisa de cabo. A conta básica é gratuita: https://reincubate.com/camo/
Isso já existia há alguns anos. Não sei em que sentido ainda não havia suporte
Com esse recurso, o Pixel 6a, que hoje custa 250 dólares, tem grande chance de se tornar a webcam com melhor custo-benefício do mercado
Li em algum site de promoções extremamente irritante que, depois de 6 meses, o bloqueio de operadora é removido automaticamente. Não vou linkar porque esse site é irritante demais. Para iniciar o contador de 6 meses, é obrigatório ativar o telefone
Pelo que sei, no Nokia N900 isso já era possível em 2009 com gstreamer. Eu não cheguei a criar e usar um dispositivo de vídeo de fato, mas imagino que o
v4l2sinkjá existisse naquela época. Usei várias vezes para fazer streaming com uma janela remota e OpenCVFoi o único telefone realmente bom que já tive. Seria ótimo se em dispositivos Android as coisas fossem tão fáceis assim, mas, curiosamente, quase nunca são
Isso também é difícil e merece respeito. Mas tenho a impressão de que essa visão dura e conservadora sobre software dominou completamente, por muito tempo, as coisas que vêm sendo criadas. Há cada vez menos computação que tente dar uma base sólida para power users. A tecnologia continua se distanciando e ficando mais obscura. Ironicamente, porque continuamos perdendo as rampas de entrada para quem quer se aprofundar e virar especialista ou explorador
Seria bom poder usar um telefone Android como dashcam. Quando isso vai ser possível? Parece uma função que obviamente deveria existir
É um recurso bom de ter, mas acho que a maioria das pessoas ainda vai querer ficar com o celular em mãos durante uma chamada no Zoom. Ainda assim, talvez muita gente tenha um telefone sobrando