동일한 컴퓨터의 다른 사용자에게 오디오 파이프(pulseaudio)

동일한 컴퓨터의 다른 사용자에게 오디오 파이프(pulseaudio)

일부 게임에서는 합성 창 관리자를 좋아하지 않고 제가 가장 좋아하는 데스크톱인 Unity에서는 합성을 끌 수 없기 때문에 동시에 두 명의 사용자를 실행합니다. 불행한 방식으로 서로 상호 작용하기 때문에 동일한 사용자에 대해 두 개의 TTY를 실행하고 싶지 않습니다. 우분투 16.04를 실행 중입니다.

사용자 jonathan은 TTY7의 Unity 세션에 있고, 다른 사용자 steamdude는 TTY2의 XFCE 세션에 있습니다. 오디오를 제외한 모든 것이 내가 원하는 방식으로 작동합니다. 두 사용자를 모두 오디오 그룹에 추가하고 다시 로그인하면 한 TTY에서 다른 TTY의 오디오를 들을 수 있습니다. 그러나 한 사용자가 사운드 카드를 사용하는 동안 다른 사용자는 오디오를 전혀 재생할 수 없습니다.

내가 가지고 있는 가장 가까운 해결책(왜 작동하는지 모르겠습니다)은 paprefs를 사용하여 RTP 장치가 Unity 세션 내에서 루프백할 수 있도록 하는 것입니다. steamdude는 어떤 이유로든 RTP 장치를 연결할 필요가 없습니다. 루프백은 TTY2의 사운드를 방해하지 않습니다. 문제는 모듈의 루프백에 최대 1초까지 지연을 일으키는 오랜 버그가 있다는 것입니다. 수동사이클

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

지연 문제를 해결했지만 사운드 카드 잠김 문제가 다시 발생하여 문제가 해결되지 않았습니다.

잠재적인 솔루션(이상적으로는 먼저)은 다음과 같습니다.

1) 한 사용자에서 다른 사용자로 직접 오디오 스트리밍

내가 시도했지만 작동하지 않았던 첫 번째 분명한 것은

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

이 작업은 다음 출력과 함께 실패합니다.

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

두 사용자는 서로의 그룹에 속해 있으며 chmod 및 setfacl을 통해 홈 디렉토리에 대한 모든 권한을 부여했습니다.

2) RTP 멀티캐스트를 통해 한 사용자에서 다른 사용자로 오디오 스트리밍

Pulse가 동일한 컴퓨터의 스트리밍 장치를 표시하지 않기 때문에 어떻게 해야 할지 모르겠습니다.

3) 하나의 TTY에서 RTP를 통해 다른 TTY의 경량 가상 머신(또는 특별히 설계된 chroot?)으로 오디오를 보냅니다.

이는 작동하지만 가능한 모든 솔루션 중에서 가장 우아하지 않으며 많은 시스템 리소스를 사용합니다.

나는 이런 일을 하고 싶지만 가장 효율적인 방법으로 수행하는 방법을 알고 싶습니다.

관련 정보