PulseAudio 싱크를 설정하는 방법?


16

내 PC에서 모든 시스템 사운드를 스트리밍하기 위해 Raspberry Pi에 PulseAudio 싱크를 설정하려고합니다. 가장 좋은 방법은 무엇입니까?

예를 들어 영화를 볼 수 있습니까 아니면 지연 시간이 너무 큽니까? 나는 gstreamer를 사용하여 얼마 전에 이것을 시도했지만 약 2 초의 대기 시간으로 내 요구 사항에 쓸모가 없습니다.


1
대기 시간이 1-2 초 정도 걸립니다.
goldilocks

답변:


19

공식 지침을 대부분의 사람들이 네트워크에 "직접 연결"희망 단지 작품을 만들 수 있지만,이 펄스 오디오 보인다 내가 그 잘 따라하지 않습니다 : 그것은 나에게 갔다 시간 . [ "직접 연결"외에도 아래에서 자세히 설명하는 "터널"방법을 사용할 수도 있지만 먼저 읽어 보시기 바랍니다.]

이제 파이에 (fedora 17) 데스크톱 스트리밍 사운드가 있습니다. /etc/pulse양쪽 에서 구성 파일을 최소화했습니다 . 데스크탑 측면에서 :

/etc/pulse/client.conf

# See man pulse-client.conf
default-server = tcp:192.168.2.13:4713

기본 펄스 오디오 포트가있는 내 파이의 LAN 주소. 그러나 여기에 서버가 지정된 상태에서 펄스 오디오가 시작되지 않는 동안 잠시 혼란스러워했던 부분이 있습니다.

> pulseaudio --start
N: [pulseaudio] main.c: User-configured server at tcp:192.168.2.13:4713, refusing to start/autospawn.

포 그라운드에서 실행됩니다 (아마도 pulse-client.conf?를 읽지 못하기 때문에). 그러나 밝혀진 것처럼 데스크탑 (송신) 측에서 전혀 실행할 필요 가 없습니다. 펄스 오디오 문서에서는 철자가 아닙니다. lsof -i -P그것을 사용 하면 다양한 미디어 플레이어를위한 하위 레벨 플러그인이 작동하는 것으로 보입니다.

따라서 "client.conf"라는 한 줄은 실제로 데스크탑 / 클라이언트쪽에 필요한 모든 것입니다. 네트워크를 사용하기 만하면됩니다 (하지만 아래의 "아직 더 복잡한 문제"참조).

펄스 오디오 디먼 (수신 / 서버 측)을 시스템 서비스로 실행할 수 있지만, 펄스 개발자는이를 권장하지 않으며 실제로는 pi init 스크립트에서 경고가 발생합니다. 여전히 시작해야합니다. 너 자신. Fedora에는 시스템 부팅 서비스 항목도 포함되어 있지 않습니다.

따라서 pi 측에서 다음과 같이 구성된 pulseaudio 서버 프로세스를 명시 적으로 시작하고 중지해야합니다.

/etc/pulse/daemon.conf

# See man pulse-daemon.conf
log-level = info
exit-idle-time = 10800 # 3 hours

exit-idle-time데몬을 무한정 실행하기 위해 -1을 사용할 수 있습니다 . 이 값은 초이며 기본값은 20입니다 (이 값을 설정하지 않으면 "신기하게"죽어가는 것을 의미합니다).

/etc/pulse/default.pa

# See man default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.2.0/24
load-module module-alsa-sink device=hw:0,0

이 앱은 네트워크 앱이므로 루트로 실행하는 것은 좋지 않습니다. 그러나에서 언급 한 바와 같이 man pulseaudio프로세스에 우선 순위를 부여하기 위해 프로세스를 "우수"하는 것이 좋습니다. 를 사용하여 수동으로 수행 할 수 nice있지만 실행 파일이 "setuid"인 경우 pulseaudio는 루트 또는 pulse-rt그룹 구성원에 대해 자동으로 수행합니다 . 즉, 일부 루트 권한을 사용하고 올바른 권한이없는 uid ( 및 또한이 작업을 수행해야합니다). 따라서 (루트 또는 sudo로) :pingpasswd

chmod u+s /usr/bin/pulseaudio

pulse-rtraspbian에 pulseaudio를 설치할 때 생성 된 그룹 이 없으므로 다음을 수행하십시오.

groupadd pulse-rt

이것은 당신에게 1003 같은 gid를 줄 것입니다. 그 그룹에 user pi를 추가하십시오 :

usermod -aG pulse-rt pi

그러나 라즈 비안에서는 여전히 파이처럼 부를 수 없습니다. 이를 위해 다음을 추가하십시오 /etc/security/limits.conf.

@pulse-rt       hard nice -20
@pulse-rt       soft nice -20

이러한 변경이 이루어지기 전에 실제로 로그인을 실행해야합니다. pi와 함께 ssh를 사용하는 경우을 사용하십시오 login. 이제 pulseaudio를 시작할 수 있으며 -11을 되 찾을 수 있습니다. 이는 대부분의 다른 프로세스보다 우선 순위가 높습니다 (의 NICE 값 참조 top).

네트워크에서 스트리밍되는 사운드를 재생하는 동안 pi의 펄스 오디오는 약 10 %의 CPU와 사소한 양의 메모리를 사용합니다. :) 그것과 나의 데스크탑은 유선 LAN에 있습니다; 펄스는 원시 pcm 데이터를 스트리밍하므로 대역폭 사용량은 소스의 샘플 속도, 1 kB / s 이상에 해당합니다. 안타깝게도 비디오를보고있는 경우 소리가 눈에 띄게 지연됩니다.

더 많은 합병증 ...

불행히도 내 PC의 다양한 사운드 응용 프로그램 중 어느 것도 바로 작동하지 않았습니다. mpg123전혀 실행되지 않습니다. 이를 위해 페도라에서는 mpg123-plugins-pulseaudio패키지 가 필요합니다 . 브라우저의 플래시 콘텐츠 (예 : 유 튜드)alsa-plugins-pulseaudio (실제로 원격 서버에 연결되는 것) 다른 배포판에는 비슷한 패키지가 있어야합니다. 이전에 펄스 오디오를 사용해 본 적이 없다면 이미 설치되어있을 수 있습니다.

KDE의 데스크톱 벨과 휘파람도 작동하지 않았습니다. 로컬 펄스 오디오 서버를 찾고 설명 된대로 직접 연결을 사용하면 서버를 로컬로 실행할 수 없으므로 이는 해결하기 어려운 문제입니다. 이를 해결하는 방법은 "터널"방법을 사용하는 것입니다.

모듈 터널 싱크

이것은 pulseaudio 문서에서 언급 된 다른 방법입니다. 이 경우 서버가 양쪽에서 실행되고 한 쪽이 다른쪽으로 핸드 오프됩니다. 이렇게하려면 "default-server"를 주석 처리하고 다음을 포함 /etc/client.conf하는 로컬 /etc/default.pa을 추가하십시오 .

load-module module-tunnel-sink sink_name=rpi_tunnel server=tcp:192.168.2.13:4713 sink=bcm1

입력하지 않으면 sink_namepulseaudio가 시작되지 않습니다. 이 sink이름은 파이 측의 싱크 이름을 나타내며 이름도 필요합니다. 거기에 해당 sink_name하는 module-alsa-sink줄 을 추가하십시오 default.pa:

load-module module-alsa-sink device=hw:0,0 sink_name=bcm1 

서버를 양쪽에서 시작하고 미리 정렬하십시오. KDE 경고음을 포함한 모든 기능이 수행되었지만 브라우저 플래시 재생이 심하게 끊겼습니다. 그러나 다른 데스크톱 환경 (실제로는 창 관리자 인 fvwm)에서는 문제가 없었습니다.

나는 KDE를 좋아하지만 경고음없이 살 수 있으므로 지금은 직접 연결을 사용합니다.

문제 해결

문제가있는 경우 pulseaudio -vvvv --log-level=debugpi를 사용 하면 많은 디버깅 메시지가 제공됩니다. 처음에 파이에서 소리를 낼 수 없었을 때, 이것은 "ALSA bcm2835 드라이버의 버그와 관련이있는"문제를보고했는데, 이것은 단지 alsa로 소리가 좋았 기 때문에 나에게 이상해 보였고, 그 주위에 파이 소프트웨어가 있다고 확신합니다. 펄스 오디오에서 – apt-get remove pulseaudio그리고 다시 설치 apt-get install pulseaudio하면이 문제를 해결하는 것 같았습니다 ... 내가보고 싶은 해결책은 아니지만, 적어도 지금은 모든 상자에 스피커를 꽂지 않아도 티쉬를들을 수 있습니다. 대개.


광범위한 답변에 감사드립니다. 그러나 한 가지 질문은 오디오가 Pi에서 직접 나오는 경우 어떻게됩니까?
Vincent

Dunno 내가 그것을 시도했다면 (나는 더 이상 이것을하지 않고 있지만) pulseaudio는 멀티플렉서 여야하므로 작동해야합니다.
goldilocks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.