PulseAudio를 실행하는 방법?


28

네트워크를 통해 오디오를 재생할 수있는 PulseAudio 싱크로 Raspberry Pi를 사용하고 싶습니다.

우선 로컬에서 Pulseaudio를 실행하고 다양한 오류가 발생하고 싶습니다. 권장되는 데비안 이미지를 사용하고 있습니다.

PulseAudio를 시작하고 실행하는 가장 좋은 절차는 무엇입니까?


이것이 내가 지금까지 시도한 것입니다.

순서

지금까지의 절차는 다음과 같습니다.

Pulseaudio 및 VLC를 설치하십시오.

sudo apt-get install pulseaudio

펄스 오디오 싱크를 사용하도록 GStreamer를 구성하십시오.

gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink

오디오 장치 용 커널 모듈로드

sudo modprobe snd_bcm2835

mp3로 VLC 실행

vlc 

문제

VLC가 반복적으로 크랙되어 다음 오류가 인쇄됩니다.

[0x7503d0] alsa audio output error: cannot write: Broken pipe

발생하는 오류를 보여줄 수 있습니까?
darryn.ten

답변:


9

ALSA 싱크를 사용하여 Raspberry Pi에서 다음과 같은 절차로 작업하고 있습니다.

필요한 파일을 설치하려면

sudo apt-get install pulseaudio pulseaudio-module-zeroconf alsa-utils avahi-daemon

ALSA를 활성화하려면 :

sudo modprobe snd-bcm2835                      # load module for single boot
echo "snd-bcm2835" | sudo tee -a /etc/modules  # load module for persistance

네트워킹을 설정하려면

sudo nano /etc/pulse/default.pa

그리고 주석을 주석 해제하십시오.

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-zeroconf-publish

pulseaudio 서버를 시작하려면 다음을 사용하십시오.

pulseaudio -D

paplay ( sudo apt-get install pulseaudio-utils) 로 wav 파일을 재생 하거나 시스템의 사운드 제어판에서 싱크를 선택하여 네트워크를 통해 작동하는지 테스트 할 수 있어야합니다 .

다음을 사용하여 시스템 전체 모드 에서 설정할 수도 있습니다 .

sudo pulseaudio --system 

pulseaudio-module-zeroconfapt-get 설치 파트에서 누락되었습니다. pulseaudio --log-level=debug문제 해결을 위해 언급해야 할 수도 있습니다 . 라즈베리 파이가 아닌 사운드 소스에서 paprefs펄스 오디오 conf를 쉽게 개관하기 위해 시작해야합니다 (X11이있는 경우). pulseaudio의심스러운 경우 다시 시작하는 것을 잊지 마십시오 .
vaab

7

부팅시 pulseaudio를 시작하지만 사용자 수준 서비스로 시작하려면 시스템 단위 파일을 만들 수 있습니다. pulseaudio는 시스템 모드에서 실행하는 것을 선호하지 않기 때문에 도움이 될 수 있습니다. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

다음은 /etc/systemd/system/pulseaudio.service에 작성한 서비스입니다.

[Unit]
Description=PulseAudio Sound System
Before=sound.target

[Service]
User=pi
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio
Restart=always  

[Install]
WantedBy=session.target

Before =는 sound.target이 초기화 될 때까지 기다리도록 지시합니다. BusName =을 D-Bus에 연결합니다. WantedBy = session.target이 유용한 기본값이지만, 실제로 무엇을하는지 모르겠습니다.


분명히 우리는 이것을 넣고 루트 권한을 피하기 위해 플래그 ~/.config/systemd/user/pulseaudio.service와 함께 systemd를 사용할 수 있습니다 --user.
jchook

6

아날로그 출력을 사용하여 Wheezy raspbian (2012-10-28)에서 pulseaudio를 실행하는 데 어려움을 겪었습니다. 다음은 세션 별 모드 (시스템 모드 아님)에서 작동시키기 위해 수행 한 작업입니다. 시스템 모드도 작동 할 수 있지만 시도하지 않았습니다. 서버를 설정하려면 더 많은 작업이 필요합니다. 여러 곳에서이 정보를 찾았으므로 여기에 수집하면 누군가를 도울 것입니다.

pulseaudio를 설치하고 사용자 (예 : eric)가 오디오 그룹의 일부인지 확인하십시오.

sudo apt-get install pulseaudio pulseaudio-utils
sudo adduser eric audio

/etc/asound.conf를 다음과 같이 변경하십시오. 이는 기본적으로 alsa 장치로 사용되도록 pulseaudio를 설정하므로 응용 프로그램은 추가 구성없이이 장치를 사용합니다. 처음 두 선언 (주석 선언 포함)은 원본 파일에있었습니다.

pcm.mmap0 {
    type mmap_emul;
    slave {
      pcm "hw:0,0";
    }
}

#pcm.!default {
#  type plug;
#  slave {
#    pcm mmap0;
#  }
#}

pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }

/etc/pulse/daemon.conf에 다음 줄을 추가하십시오 :

default-sample-rate = 48000
resample-method = trivial

trivial가장 낮은 품질의 방법이지만 약 6 %의 CPU를 사용합니다. src-sinc-fastest나를 위해 일했지만 약 25 %의 CPU를 사용하십시오. 다른 사람들도 효과가있을 수 있습니다. 이 후반부에 나는 그 필요성을 잘 이해하지 못하지만, 그것은 마술 성분 인 것처럼 보였다. 당신은 할 수 있습니다 여기에 대한 자세한 내용 .

마지막으로, 노래 재생 사이에 오디오 팝을 끄려면 다음과 같이 /etc/pulse/default.pa에서이 줄을 주석 처리하십시오.

#load-module module-suspend-on-idle

두 소스가 한 번에 재생 될 때 여전히 누락이 있습니다. 그 해결책을 발견하면이 답변에 추가 할 것입니다.


네트워크를 통해 오디오를 재생할 때 PulseAudio는 trivial저 에게도 CPU를 약 16 % 사용하고있었습니다 .
Nathan Osman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.