O Discord é uma rede social muito popular nos últimos tempos. Ele surgiu lá em 2015 com o intuito de dar uma experiência consideravelmente superior ao que tinhamos no Skype e TeamSpeak, com o foco no público Gamer, embora tenha aberto ao público geral nos últimos anos. O client para desktops se trata de uma aplicação em Electron, engine essa baseada no Chromium. Por se tratar de um client em Electron, isso possibilitou que o client tivesse versões nativas para as principais plataformas, uma delas sendo o Linux por meio de pacotes .deb e .tar.gz, além de uma distribuição oficial em Flatpak.
O Discord no Linux é incompleto!
A versão de Linux não conta com várias das funções de sua versão para Windows, uma delas sendo o compartilhamento de áudio do desktop em chamadas de vídeo. Outra delas é a falta de suporte ao PipeWire para partilhamento de tela em sessões Wayland, necessitando usar a versão Web do Discord para partilhamento de tela em Wayland atravéz do PipeWire.
Mas há uma maneira!
Mas para tudo existe uma solução! O mesmo PipeWire que é usado para partilhamento de tela na versão Web do Discord, também pode ser usado como abstração para aplicações que usam a API de áudio JACK, além do tradicional PulseAudio. Com isso em mente, é possível direcionar o áudio de aplicações em específico para a entrada de microfone do Discord, assim, seus amigos no Discord podem aproveitar não somente de sua live no Discord, como também do áudio. E é bem simples de fazer isso:
-
Primeiro garanta que o pacote pipewire-jack
ou pipewire-libjack
esteja instalado em sua distro. Veja a forma de instalação de pacotes para a sua distro em específico para saber como fazer isso;
-
Instale alguma interface JACK. Para esse tutorial, vou usar o Catia. Ele pode ser instalado direto dos repositórios de sua distribuição ou do site do KX Studio como parte do bundle Cadence;
-
Execute o comando pw-jack
no Terminal. O comando só precisa ser executado uma vez, então é possível definí-lo para auto execução durante o login, caso saiba como fazê-lo;
-
Entre em uma chamada de voz no Discord e abra a aplicação Catia. Note que a chamada de voz do Discord está identificado como WEBRTC Voice Engine no momento que o Catia é aberto:
O que interessa para nós aqui são os input_FL
e input_FR
, que apontam para o lado Esquerdo e Direito do som Stereo respectivamente.
- No meu exemplo, vou direcionar uma música que está tocando no VLC, mas isso pode ser feito com qualquer aplicação. Note que o Catia já identificou o VLC:
Agora basta arrastar o output_FL
e output_FR
do VLC media player para o input_FL
e input_FR
, respectivamente, do WEBRTC VoiceEngine.
E voilá! Agora está transmitindo o áudio de uma aplicação do seu computador para sua chamada de voz no Discord.
Para melhor qualidade de áudio, é recomendável desativar as opções de cancelamento de Echo e ruído nas configurações de áudio do Discord. E agora é só aproveitar!
10 curtidas
No pulseaudio é facinho de fazer também, eu só crio 6 módulos: 2 null-sinks, 3 loopbacks e um remap-source.
Nisso, eu jogo o áudio para a null-sink (1) criada, que pelo loopback redireciona o áudio do programa para outra null-sink (2) e pra minha saída de fone. Meu microfone também é redirecionado por loopback para a null-sink (2). A null-sink (2) é a master do remap-source, e quando eu quero transmitir áudio de qualquer coisa, eu jogo o áudio pra null-sink (1), e coloco o microfone da remap-source no Discord 
Aqui o esquema do que eu tou falando:
PS: “Porque eu não pego o áudio do app direto na null sink e só redireciono pro auto falante sem a null sink (1)?”
Não tem como, pulseaudio não funciona assim, a não ser que eu faça um script pra isso 
Aliás, vocês sabiam que seria possível sim capturar o áudio dos aplicativos pelo pulseaudio? O problema é que ninguém quer se aprofundar para fazer isso, muito menos o pessoal do Chromium. O pulseaudio tem essa capacidade, senão o Soundux não funcionaria como funciona hoje no Linux (isso pode ser tema de outro post). então pedir compartilhamento de áudio no Discord ao compartilhar tela não é culpa do Discord, é culpa do pessoal do Chromium (corrijam se estiver errado).
Grato, bom te rever em algum lugar na net, @ryu_ketsueki !
Inky
1 curtida
A idéia do meu tópico era mostrar como fazer isso de forma gráfica, sem depender de scripts para o pulseaudio. Outra coisa é que o script para o pulseaudio não funciona em sessão Wayland por necessitar do PipeWire, mesmo que ele tenha abstração para aplicações que usem o pulseaudio. Acredite, as sinks e loopbacks pararam de funcionar. Então esse meu tutorial é um futureproof para essa finalidade sem precisar passar scripts.
2 curtidas
excelente trabalho. parabéns.
Também é válido, mas pelo que um amigo com mania de coisas novas (e não minto, o maluco tem essa qualidade pessoal exageradamente boa) testou o Wayland e o pipewire, os loopbacks parecem não funcionar muito bem…
Você deve estar usando faz um tempinho, já consertaram? Ou não aconteceu contigo?
Boa! fiz minha versão do mesmo tutorial, porém usando o Helvum:
1 curtida
Acontece que Pulseaudio não é executado nativamente quando PipeWire está ativo. As aplicações que parecem interagir com Pulse, na verdade estão interagindo com o PipeWire atravéz de compatibilidade, então é possível que esses comandos do pulse para criar as sinks e loopbacks, vão ter de ser reescritos para PipeWire em específico ou usar o JACK com as GUI, o que é muito mais fácil para o usuário final do que ter de aprender comandos do pulse. Eu não vejo isso sendo resolvido tão cedo, já que JACK é preferível para o lado profissional e PipeWire está recebendo mais atenção por ser mais seguro e resolver não só áudio em Wayland mas partilhamento de vídeo também. O Fedora é a maior influência em trazer o Wayland, PipeWire e Flatpaks para as distros ultimamente então isso só tende a melhorar com o tempo.
Migrei para a sessão Wayland do KDE Plasma já faz um bom tempo e, honestamente, não sinto falta de nada da sessão X11. Só algumas coisas cosméticas mas o Plasma já é muito bonito do jeito que os devs entregam ele. Falta só a revitalização dos ícones para ficar perfeito e dar trabalho para o GNOME (hehe).
2 curtidas
Show de bola! Eu não manjo muito de JACK e só agora fui conhecer um pouco mais o PipeWire, então eu fui seguindo o tutorial que eu vi, que usava o Catia. Legal que tem como usar o PipeWire diretamente sem passar pelo JACK
1 curtida
@ryu_ketsueki do céuuuuuuuu, você e o povo aqui não vão acreditar, mas o Discord faz uma baita sacanagem de não atualizar o electron. Não só dá a oportunidade de compartilhar áudio com janela (via milagrosos xdg portals), mas tbm manda pro inferno todas as vulnerabilidades do Electron velho.
Fonte: A Letter to Discord for not Supporting the Linux Desktop | TheEvilSkeleton
PS: http://tauri.studio/ ferramenta nova, leve, igualzinha quase ao electron, merece uma atenção, né Discord? Quando ficar melhor, acho q funcionará muito melhor.
2 curtidas
Agora é possível por meio dos desktop-portals
no Wayland via um browser customizado chamado discord-screenaudio
Testei no Arch KDE Plasma, parece incrível, algo que nem dava para fazer antes e agora a todo vapor no Wayland!
2 curtidas