Pulseaudio / dbus를위한 가짜 / 최소 X 세션 시작


13

Pulseaudio를 사용하여 데스크톱과 Raspberry Pi간에 오디오를 공유합니다.

그러나 Pulseaudio에는 dbus가 필요하고 dbus에는 X 세션이 필요합니다. 그래픽 세션이 없으면 Pulseaudio는 공식적으로 권장되지 않는 시스템 모드에서만 실행할 수 있습니다.

라즈베리 파이 외에도 X 세션의 비용이 극적으로 높기 때문에 가장 효율적인 (비용이 적게 드는) 방법으로 제거하고 싶습니다.

Pulseaudio가 시작되는 가장 작은 X 세션을 시작하려면 어떻게해야합니까?


Udev는 X를 필요로하지 않습니다. Pulseaudio에 대해 잘 모르겠습니다. X가 없으면 무엇이 실패합니까? 이것은 D- 버스와 관련이 있습니까?
Gilles 'SO- 악마 그만해

글을 읽었지만 Pulseaudio 일 수 있습니다. X Pulse가 없으면 시스템 전체 모드에서 Pulseaudio가 시작됩니다. 이는 사용자 별 세션이 없다는 것을 의미합니다. 이는 공식 웹 사이트에서 말하는 것처럼 나쁩니다 : freedesktop.org/wiki/Software/PulseAudio/Documentation/User/…
kursus

죄송합니다. udev와 dbus를 혼합하여 편집했습니다.
kursus

답변:


11

가상 프레임 버퍼가있는 X 서버, 즉 메모리에만 표시되고 하드웨어에 연결되지 않는 X 서버 인 Xvfb 를 사용할 수 있습니다 . 해당 서버에서 원하지 않는 클라이언트를 실행할 필요가 없으며 특히 데스크탑 환경이나 창 관리자가 필요하지 않습니다.

Xvfb :1 -screen 0 1x1x8 &

금후:

DISPLAY=:1 dbus-launch
DISPLAY=:1 pulseaudio --start

Xvfb디스플레이를 사용할 수 있으려면 시작 후 약간 기다려야 합니다. 당신이 사용할 수있는 xinitX 서버를 시작하고 준비가되면 다음 클라이언트를 시작합니다. 실행할 명령을 스크립트에 넣습니다 (스크립트가 종료되면 X 서버가 종료 됨).

#!/bin/sh
dbus-launch
pulseaudio --start
sleep 99999999

다음으로 가상 X 서버를 시작하십시오.

xinit /path/to/client.script -- /usr/bin/Xvfb :1 -screen 0 1x1x8

부팅시 실행하려면 cron에서 시작할 수 있습니다. crontab -e루트가 아닌 사용자로 실행 하고 행을 추가하십시오.

@reboot xinit /path/to/client.script -- Xvfb :1 -screen 0 1x1x8

이 세션을 종료하려면 xinit프로세스를 종료하십시오.


부팅시 pulseaudio start 명령 (예 : 네 번째 줄)을 자동으로 실행하는 데 어려움을 겪어 죄송합니다. 그것이 DISPLAY 속성인지 궁금합니다. rc.local, /etc/init.d, rcS를 시도했지만 스크립트가 pulseaudio를 시작하지 않습니다. SSH를 통해 스크립트를 실행하면 완벽하게 작동합니다. 조언을 드리겠습니다.
kursus

Xvfb는 X 연결을 수락하기 전에 일부 설정을 수행해야하므로 이후 명령이 너무 빨리 실행되면 X 서버에 연결하지 못할 수 있습니다. xinit를 사용하여 Xvfb를 시작하고 xvrc가 준비되면 xinit가 시작되도록 xinitrc에 해당 명령을 넣을 수 있습니다.
alanc

잘 못해서 미안해 .xinitrc로 Xvfb를 시작해야합니까? 지금은 rc.local로 시작합니다. 그렇다면 PA 명령을 어디에 두어야합니까? xinitrc에서 PA 명령을 시작했지만 운이 없습니다.
kursus

@kursus이 명령을 모두 사용자로 실행해야합니다. 로 crontab에서이를 수행 할 수 있습니다 @reboot. 또한 alanc가 맞습니다. Xvfb를 시작한 후 지연이 필요하며 xinit 가이 문제를 해결합니다. 내 편집을 참조하십시오.
Gilles 'SO- 악의를 그만두십시오

편집 해 주셔서 감사합니다. 더 명확 해졌습니다. 그러나 스크립트 호출 유무에 관계없이 xinit 명령을 시작할 때 인식 할 수없는 옵션 : Xvfb가 표시 됩니다.
kursus

1

어제 같은 문제가 발생했습니다. 헤드리스 환경에서 DBus와 함께 raspberrypi 0 W에 펄스 오디오를 사용하면 x11이없는 yocto로 생성되고 시스템이 없으므로 펄스 오디오를 실행하기 전에 dbus를 실행하고 내 보내야합니다.

if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
     echo "Starting dbus" 
     export $(dbus-launch)
fi

etc / pulse / client.conf에서 allow-autospawn-for-root = yes를 활성화하십시오

pulseaudio -v설정에 다른 문제가 있는지 확인하기 위해 실행하십시오 . --system스위치가 올바르지 않으므로 스위치를 사용하지 마십시오 .

pulseaudio -D --disallow-exit

0

스크립트를 사용하는 것보다 스크립트가 EOF에 도달하지 못하게하는 더 우아한 방법이 있습니다 sleep 99999999!

sleep infinity대신 사용하십시오 . 그것은 말한대로 ...

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