PulseAudio 및 Multiseat로 사운드를 구성하려면 어떻게해야합니까?


12

전체 공개의 정신으로, 나는 이 질문 을 우분투 포럼에 게시 했지만 더 많은 헤드가 해칠 수 없다고 생각합니다.

다중 시트 설정이 잘 작동합니다. 핫 플러깅 입력 장치는 예상대로 작동합니다. 여전히 해결할 수없는 유일한 문제는 각 좌석의 오디오를 얻는 것입니다.

다음은 오디오를 작동시키려는 시도에 대한 요약입니다.

  1. 사용자가 로그인 한 $ DISPLAY에 따라 ~ / .pulse / default.pa를 동적으로 구성하십시오.

  2. 시스템 전체 인스턴스로 pulseaudio를로드하십시오.

    • 이 작업을 수행 할 수 없습니다. 사용자가 오디오 하드웨어에 액세스 할 수 없었습니다.
  3. udev 규칙을 사용하여 ConsoleKit에서 좌석을 표시하십시오. 여기에있는 udev 지침을 따르십시오 : http://www.freedesktop.org/wiki/Software/systemd/multiseat

    • irc.freenode #pulseaudio의 누군가가 일하는 것이 "보장"되었지만, 이것이 효과가 있다고 생각하지는 않았습니다.

그 시도들 중 어느 것도 성공을 거두지 못했기 때문에 이제는 지역 사회에 도움을 청합니다. 제안 된 방법이 효과가 있고 IDK의 일부 측면을 엉망으로 만들었습니다. 이것은 Ubuntu 12.04에 대한 지침을 포함하도록 MultiseatX 페이지로 가서 업데이트하기 전에 필요한 퍼즐의 마지막 조각입니다.

상황에 대한 나의 이해 : 펄스 오디오에 대한 액세스는 ConsoleKit (ACL에 관한 것)으로 표시된 활성 세션으로 제한됩니다. CK는 한 번에 하나의 세션 만 활성으로 표시 할 수 있습니다. 이 간단한 삶의 사실은 솔루션이 펄스 오디오를 시스템 전체 인스턴스로 실행해야한다는 것을 믿게합니다. 각 사용자는 펄스 서버에 연결하고 모든 하드웨어의 하위 세트로 제한해야합니다. 각 사용자는 localhost, idk를 통해 펄스 서버에 연결할 수 있습니다. 내 시도와 실패한 결과에 관계없이 항상 sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wav하드웨어에 무언가를 연주하는 데 사용할 수 있다는 것을 알고 있습니다.

나는 빨대를 움켜 잡고 이제 머리에서 뽑아 낼 수있는 마지막 몇 개의 머리카락까지 내려 왔습니다. 부를 나눌 수 있도록 이것을 이해하도록 도와주세요. 필요한 추가 정보는 요청시 제공됩니다.


올바르게 이해 했습니까? 2 석 2 개 사운드 카드입니까? 당신은나요 교체 작은 사용자 정의 파일과 default.pa 또는 않는 추가 그렇지 않으면 변경되지 default.pa에 사용자 정의 라인을?
Takkat

나는 여기에 의견을 알았 으면 좋겠다 ... 그래서, 그것은 2 개의 사운드 카드입니다. 하나는 온보드 오디오이고 다른 하나는 GPU의 HDMI 오디오입니다. 작은 사용자 정의 파일은 ~ / .pulse에 있지만 /etc/pulse/default.pa는 변경되지 않습니다. 따라서이 경우 ~ / .pulse / default.pa는 /etc/pulse/default.pa를 대체하지 않고 병합합니다.
Anthony

default.pa의 전체 내용이 포함 된 두 개의 사용자 지정 .pa 파일을 사용하여 기존의 두 파일과 다른 장치 섹션이 추가됩니다 (병합되지 않은 경우).
Takkat

또한 시스템 전체 모드에서 펄스 오디오로 실행되는 default.pa /etc/pulse는 HOME이 아닌에 있어야합니다 .
Takkat

나는 주로 일하는 ATM을 가지고 있습니다 . 다 다 썼을 때 다시보고하겠습니다.
Anthony

답변:


7

온라인에서 여러 가지 설정을 테스트하고 Pulseaudio 개발자와 대화하는 데 많은 시간을 보냈습니다. 결론은 일반 사용자 모드에서 pulseaudio를 실행하면 ConsoleKit이 표시 한 활성 세션 만 오디오 하드웨어에 액세스 할 수 있다는 것입니다. 현재 ConsoleKit은 한 번에 하나의 세션 만 활성으로 표시 할 수 있으므로 시스템 전체에서 펄스 오디오 인스턴스를 실행해야합니다. 거꾸로 : 각 좌석은 개별 오디오를 가질 수 있습니다. 단점 : 모든 오디오 하드웨어는 모든 사용자가 사용할 수 있으며 언제라도 조작 할 수 있습니다. 인터넷 카페 나 보안이 중요한 공공 장소에 이상적인 상황은 아닙니다. 사이트 보안 정책을 만들 때이 점을 명심하십시오. pavucontrol 실행을 관리자만으로 제한하는 것이 현명 할 수 있습니다.

항상 그렇듯이 모든 기본 구성 파일을 백업하십시오. 백업하지 않고 구성을 조정 한 경우 apt-get -d install pulseaudio를 사용하여 pulseaudio 패키지를 검색 할 수 있습니다. 패키지를 / var / cache / archives / apt로만 다운로드하고 컨텐츠를 추출하여 기본 구성을 검색 할 수 있습니다. client.conf는 포함되어 있지 않습니다.

시스템 전체 데몬으로 pulseaudio를 실행하려면 몇 개의 파일을 편집해야합니다.

1.) / etc / default / pulseaudio

    PULSEAUDIO_SYSTEM_START=1

2.) /etc/pulse/daemon.conf- 자세한 내용은 man pulse-daemon.conf를 참조하십시오.

    daemonize = yes
    local-server-type = system

3.) /etc/pulse/client.conf

    autospawn = no

또한 펄스 액세스 그룹에 사용자를 추가해야합니다.

sudo usermod -a -G pulse-access <username>

모든 사용자가 오디오 하드웨어에 액세스 할 수 있으므로 각 사용자가 사용할 하드웨어를 선택해야합니다. 이것은 pavucontrol을 사용하여 수행 할 수 있습니다. 설정은 사용자마다 저장되며 좌석을 따르지 않습니다. 사용자가 좌석을 전환하면 원하는 오디오 하드웨어를 다시 선택해야합니다.

Pulseaudio에 대한 추가 의견

좌석 당 오디오 작업을위한보다 우아한 솔루션이 있기를 바랐습니다. 멀티 시트에서 시스템 전체의 Pulseaudio를 사용하면 많은 단점이 있으며 재부팅간에 완전히 안정되지는 않습니다. 시스템 전체 인스턴스를 시작하려고 시도했으며 사용자 인스턴스를 localhost를 통해 서버로 연결했습니다. pulseaudio --start가 실행될 때 daemon.conf를 소스 한 이후로는 작동하지 않는 것 같습니다.

ConsolKit에 대하여

일반 사용자 당 펄스 오디오를 실행할 때 발생하는 문제는 한 시트가 하드웨어에 액세스 할 수 있고 다른 시트에는 모두 더미 출력이 있다는 것입니다. 이것은 ConsoleKit이 좌석을 완전히 인식하지 못하기 때문입니다. CK는 모든 좌석을 좌석 1의 세션으로 간주하고 한 세션 만 활성으로 표시 할 수 있습니다. 이 사실은 getfacl / dev / snd / *를 실행하여 확인할 수 있습니다. 특정 사용자가 사용하고있는 $ DISPLAY에 따라 적절한 / dev / snd / 파일의 acl을 편집 할 수 있다는 생각이 들었습니다. 이것은 내가 탐구하지 않은 옵션입니다. 이 가설을 탐색하고 찾은 결과로 문서를 편집하여 다중 좌석 원인에 기여하는 것을 고려하십시오.

ConsoleKit , GDM-2.3GDM-3.x에 대한 멀티 시트 브랜치 는 존재하며 자동 멀티 시트 기능을 제공해야합니다.

추가 사항

1.) 사용자가 DISALLOW_MODULE_LOADING = 1 모듈을로드하지 못하게하는 것이 좋습니다.

2.) autospawn = no 는 예제 파일에서 볼 수 있듯이 완전히 필요하지는 않습니다. 아무런 문제가 없습니다.


1
앤서니, 게시물 주셔서 감사합니다 그것은 도움이되었습니다! 나는 같은 문제에 직면하여 시스템 모드에서 Pulseaudio를 실행하지 않고 원하는 결과를 얻는 방법을 발견했습니다. unix.stackexchange.com/a/104344/34581을 살펴 보십시오 . 도움이 되길 바랍니다.
Ilia Rostovtsev

1

상황에 대한 나의 이해 : 펄스 오디오에 대한 액세스는 ConsoleKit (ACL에 관한 것)으로 표시된 활성 세션으로 제한됩니다. CK는 한 번에 하나의 세션 만 활성으로 표시 할 수 있습니다.

있습니다 ConsoleKit에 패치 multiseat 지원을 추가하려면; 이를 통해 모든 활성 시트를 활성으로보고 할 수 있습니다. 아마도 이것은 문제를 해결할 것입니다. 디스플레이 관리자와의 협력이 필요 하며이 지원을 추가 하는 이전 버전의 GDM에 대한 패치가 있습니다.

PPA 에서 수정 된 ConsoleKit 및 GDM 패키지를 사용하여 Natty (11.04)에서 멀티 시트를 사용했습니다 . 아직 Natty에서 업그레이드하지 않았습니다. 작동 방법을 알아내는 데 오랜 시간이 걸렸으며 LightDM이 패치 된 ConsoleKit에서 작동하지 않을까 걱정됩니다.

편집 : Fedora 17에는 인상적인 멀티 시트 기능이 있으며 그중 일부는 Quantal에 있습니다. 그들은 그들의 접근 방식을 설명 하는 위키 페이지가 있습니다. 우분투는 Fedora의 접근 방식이 크게 변경 될 수 없기 때문에 단순히 복사 할 수 없습니다. Fedora는 systemd와 GDM을 사용하고 Ubuntu는 upstart와 LightDM을 사용합니다.


롤 멀티 시트 ConsoleKit 및 GDM 분기에 대해 알고 있습니다. Ubuntu MultiseatX 페이지에서 업데이트 중임을 알리는 링크가 표시됩니다 . 실제로 ck 브랜치는 gdm 브랜치에 따라 다릅니다. 이들은 Oracle과 동일한 사람이 유지 관리합니다. 당신이 언급 한 PPA는 또한 내가 알고 있고 12.04를위한 것이 아닙니다. 표준 저장소 외부로 나가지 않는 방식으로 시도하고 있습니다. Fedora 및 systemd와 관련하여 systemd multiseat 방식은 nvidia 바이너리에서 작동하지 않습니다.
Anthony

0

최근에 PulseAudio 및 Multiseat의 문제를 해결하려고했습니다. 우아한 해결책이 없다는 것을 알았을 때 나의 해결 방법은 네트워크를 사용하는 것이 었습니다.

이 솔루션은 본인이 가장 자주 기계를 사용하는 사용자이고 내 좌석이 가장 많이 로그인 된 사용자이므로 시나리오에 적합합니다. 그리고 내 좌석은 왼손잡이 구성되어 있고 다른 사람은 사용하지 않습니다.

내에서 ~/.config/pulse/default.paI의 시스템 구성을 복사 /etc/pulse/default.pa하고 다음 줄을 추가 :

load-module module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

다른 사용자의 펄스 오디오 설정에서 터널을 추가하거나 필요한 경우 몇 개의 터널을 추가하십시오.

load-module module-tunnel-sink server=127.0.0.1 sink=alsa_output.pci-0000_00_XX.X.iec958-stereo

컴퓨터의 싱크 이름과 일치하도록 싱크 이름을 변경하십시오. 더 친숙한 이름을 구성 할 수 있습니다. 즉, 펄스 오디오 설정 파일에서 구성해야한다는 의미입니다 pacmd list-sinks.

그것은 우아한 해결책이 아닙니다. 아마 다음 장비에서 @Anthony가 제안한 시스템 전체 구성을 사용하려고 시도 할 것입니다.하지만 많은 카드가 있고 하나 또는 몇 개의 싱크 / 소스를 공유하려는 경우 이것은 더 "외과"솔루션.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.