Como compartilhar a tela com som no Linux
Grátis, sem cartão. Para maiores de 18 anos.
No Linux, a captura de tela entrega a imagem, mas o som do computador não vem junto. A solução é criar uma saída de áudio virtual no PipeWire, mandar para ela só o programa que você quer mostrar e transmitir essa saída junto com a tela. Dá para fazer na mão com o pactl, ou deixar o app do nexo chat para Linux fazer isso sozinho quando você clica em compartilhar.
Por que o som não vai junto com a tela
No Linux com Wayland, quem desenha o seletor de tela é o próprio sistema, pelo portal da área de trabalho, e ele entrega ao aplicativo só a imagem. O som do computador mora em outro lugar: no servidor de áudio, que na maioria das distribuições atuais é o PipeWire.
O PipeWire oferece uma fonte chamada monitor, uma cópia de tudo que sai no alto-falante. Só que os apps feitos com Chromium não mostram essas fontes na lista de dispositivos: medimos no Chromium 152 e a lista trazia apenas o microfone e o dispositivo padrão.
E capturar o alto-falante inteiro cria outro problema. Numa chamada, ele também toca a voz das outras pessoas, então transmitir tudo devolve essa voz para elas, que passam a se ouvir com atraso.
Como fazer na mão com PipeWire e pactl
Os comandos abaixo funcionam no PipeWire e no PulseAudio, porque os dois entendem o pactl. A ideia é a mesma dos dois lados: um programa só entra na saída virtual, você continua ouvindo pelo seu fone, e a saída vira uma fonte comum que qualquer app enxerga.
- 1
Descubra o nome da sua saída de som
Anote o que aparecer. Você vai usar no terceiro passo.
pactl get-default-sink - 2
Crie a saída virtual
Ela não toca em lugar nenhum: é só um lugar para onde o som do programa vai.
pactl load-module module-null-sink sink_name=compartilhar sink_properties=device.description=Compartilhar - 3
Continue ouvindo o programa no seu fone
Sem este passo o som some para você. Troque NOME_DA_SUA_SAIDA pelo nome do primeiro passo.
pactl load-module module-loopback source=compartilhar.monitor sink=NOME_DA_SUA_SAIDA latency_msec=40 - 4
Ache o programa que você quer transmitir
Procure o application.name do programa e anote o número que aparece depois de Sink Input #.
pactl list sink-inputs - 5
Mande só esse programa para a saída virtual
O resto do computador, inclusive a voz da chamada, continua no fone e fica fora da transmissão.
pactl move-sink-input NUMERO compartilhar - 6
Transforme a saída numa fonte comum
É isto que faz o Chromium enxergar o som: a fonte CompartilharAudio aparece na lista como se fosse um microfone.
pactl load-module module-remap-source master=compartilhar.monitor source_name=compartilhar_audio source_properties=device.description=CompartilharAudio
No app da chamada, escolha CompartilharAudio como entrada de áudio. Se o app aceita só uma entrada, ela substitui o seu microfone: quem assiste ouve o programa, mas não você. Cada load-module imprime um número; para desfazer, rode pactl unload-module com cada número. Nada disso é permanente, e reiniciar o computador também limpa tudo.
Sem comando nenhum
Como o nexo chat faz isso sozinho
O app do nexo chat para Linux executa esses mesmos passos quando você clica em compartilhar, e desfaz tudo quando a transmissão termina.
Você escolhe o som
Nenhum som, um programa só, ou todo o som do computador. A tela ou janela continua sendo escolhida no seletor do sistema.
Um programa só, sem eco
O app cria a saída virtual, move o programa escolhido para ela e devolve o som ao seu fone. A voz da chamada não entra na transmissão.
Todo o som, menos o da chamada
O som do próprio nexo chat fica de fora por padrão. Programas que começam a tocar depois entram sozinhos na transmissão.
Sua voz, se você quiser
Dá para mandar o seu microfone junto com a tela, separado do som do programa.
O que precisa ter no Linux
- App
- nexo chat para Linux em .deb ou AppImage. O AppImage precisa da biblioteca libfuse2.
- Áudio
- PipeWire ou PulseAudio, com o comando pactl. No Debian, Ubuntu e derivados ele vem no pacote pulseaudio-utils.
- Tela
- Testado no GNOME com Wayland, onde o seletor de tela é o do próprio sistema.
- Qualidade
- 720p a 30 quadros no plano grátis.
Perguntas sobre som na tela compartilhada
Por que as pessoas da chamada ouvem a própria voz quando eu compartilho a tela?
Porque o som transmitido é o do alto-falante inteiro, e ele também toca a voz delas. Mande só o programa que você quer mostrar para uma saída virtual, como no passo a passo, ou use o modo de um programa só do nexo chat.
O comando pactl não existe. O que eu instalo?
No Debian, Ubuntu e derivados, o pactl vem no pacote pulseaudio-utils. Ele funciona mesmo quando o servidor de áudio é o PipeWire.
Esses comandos funcionam com PulseAudio?
Sim. A saída virtual, o loopback e o remap são módulos do PulseAudio, e o PipeWire os oferece pela mesma interface.
Preciso desfazer alguma coisa depois?
Na mão, rode pactl unload-module para cada número que o load-module mostrou, ou reinicie o computador. O app do nexo chat desfaz tudo sozinho quando a transmissão termina.
