Pipe de áudio para outro usuário no mesmo computador (pulseaudio)

2

Estou executando dois usuários ao mesmo tempo, porque alguns jogos não gostam de gerenciadores de janelas de composição e você não pode desativar a composição no Unity, meu desktop favorito. Eu não quero rodar dois TTYs do mesmo usuário porque eles interagem uns com os outros de maneira infeliz. Estou executando o Ubuntu 16.04.

Um usuário, jonathan, está em uma sessão unitária em TTY7, o outro, steamdude, está em uma sessão XFCE em TTY2. Tudo funciona como eu quero, exceto pelo áudio. Uma vez que eu adicionei ambos os usuários ao grupo de áudio e fui relogiado, eu pude ouvir o áudio de um TTY enquanto estava no outro TTY. Contudo, quando um usuário está usando a placa de som, o outro usuário não pode reproduzir áudio.

O mais próximo de uma solução que eu tenho (e não sei porque funciona), está usando paprefs para permitir que um dispositivo RTP faça um loopback na sessão Unity. O steamdude não precisa se conectar ao dispositivo RTP; o loopback não interfere no som do TTY2 por algum motivo. O problema é que há um erro de longa data no módulo-loopback que faz com que ele tenha latência por um segundo. Fazendo loops manualmente com

pacat -r --latency-msec=1 -d rtp.monitor | pacat --latency-msec=1 -d alsa_output.pci-0000_00_1b.0.analog-stereo

corrige o problema de latência, mas não resolve o problema; o problema de bloqueio da placa de som volta.

Soluções potenciais, as mais ideais em primeiro lugar, incluem:

1) Transmitindo áudio diretamente de um usuário para o outro

A primeira coisa óbvia que tentei que não funcionou foi

pacat -r --latency-msec=1 -d rtp.monitor | sudo -u steamdude pacat --latency-msec=1 -d alsa_output.pci-0000_00_1b.0.analog-stereo

Isso falhou com a seguinte saída:

Home directory not accessible: Permission denied
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
write() failed: Broken pipe

Note que ambos os usuários estão nos grupos um do outro, o que eu concedo controle total sobre seus diretórios home via chmod e setfacl.

2) Transmissão de áudio através do RTP Multicast de um usuário para outro

Eu não sei como fazer isso, porque o pulso não me mostra dispositivos de streaming do mesmo computador.

3) Envio de áudio de um TTY para uma máquina virtual leve (ou um chroot especialmente projetado?) no outro TTY via RTP.

Isso deve funcionar, mas é a menos elegante de todas as soluções possíveis e ocupa recursos significativos do sistema.

Estou disposto a fazer qualquer uma dessas coisas, mas prefiro saber como fazê-lo da maneira mais eficiente possível.

    
por Zorgoth 28.07.2016 / 20:24

0 respostas