Como compartilhar a tela com som no Linux

Criar conta grátis

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 Equipe nexo chatPublicado em

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. 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. 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. 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. 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. 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. 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.

Compartilhe a tela com som, sem comando nenhum

Crie a conta, instale o app para Linux e escolha o programa na hora de compartilhar.

Criar conta grátis

Grátis, sem cartão. Para maiores de 18 anos.