Làm cách nào để chạy PulseAudio?


28

Tôi muốn sử dụng Raspberry Pi của mình làm bồn rửa PulseAudio có thể phát âm thanh qua mạng.

Để bắt đầu, tôi muốn chạy Pulseaudio cục bộ và gặp phải nhiều lỗi khác nhau. Tôi đang sử dụng hình ảnh Debian được đề xuất.

Quy trình tốt nhất để khởi động và chạy PulseAudio là gì?


Đây là những gì tôi đã cố gắng cho đến nay:

Thủ tục

Thủ tục của tôi cho đến nay trông giống như sau:

Cài đặt Pulseaudio và VLC:

sudo apt-get install pulseaudio

Định cấu hình GStreamer để sử dụng bồn rửa pulseaudio:

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

Tải mô-đun hạt nhân cho thiết bị âm thanh

sudo modprobe snd_bcm2835

Chạy VLC với mp3

vlc 

Các vấn đề

VLC bị nứt nhiều lần, in lỗi này:

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

Bạn có thể hiển thị các lỗi bạn đang nhận được?
darryn.ten

Câu trả lời:


9

Tôi đã làm cho nó hoạt động trên Raspberry Pi của mình bằng cách sử dụng bồn rửa ALSA, với quy trình như sau:

Để cài đặt các tập tin cần thiết:

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

Để bật ALSA:

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

Để thiết lập mạng:

sudo nano /etc/pulse/default.pa

và bỏ ghi chú các dòng:

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

Để khởi động máy chủ pulseaudio, hãy sử dụng:

pulseaudio -D

Bạn sẽ có thể kiểm tra xem nó có hoạt động không bằng cách phát tệp wav bằng paplay ( sudo apt-get install pulseaudio-utils) và qua mạng bằng cách chọn phần chìm trong bảng điều khiển âm thanh của hệ thống.

Bạn cũng có thể thiết lập ở chế độ toàn hệ thống với:

sudo pulseaudio --system 

pulseaudio-module-zeroconfbị thiếu trong phần cài đặt apt-get. Nên đề cập đến cũng có thể pulseaudio --log-level=debugđể khắc phục bất kỳ vấn đề. Trên nguồn âm thanh (không phải là mâm xôi pi), bạn nên khởi chạy paprefsđể dễ dàng tổng quan về pulseaudio conf (nếu bạn có X11). Và đừng quên khởi động lại pulseaudiokhi nghi ngờ.
vaab

7

Nếu bạn muốn pulseaudio bắt đầu khi khởi động, nhưng là một dịch vụ cấp người dùng, bạn có thể tạo một tệp đơn vị systemd. Điều này có thể giúp ích, vì pulseaudio không thích chạy ở chế độ hệ thống. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Đây là dịch vụ tôi đã viết trong /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 = bảo nó đợi cho đến khi sound.target khởi chạy. BusName = kết nối nó với D-Bus WantedBy = session.target là một mặc định hữu ích, nhưng tôi không thực sự biết nó làm gì.


Rõ ràng chúng ta có thể đặt cái này vào ~/.config/systemd/user/pulseaudio.servicevà sử dụng systemd với --usercờ để tránh các quyền root.
jchook

6

Tôi đã có một thời gian khó khăn khi chạy pulseaudio trên Wheezy raspbian (2012-10-28) bằng cách sử dụng đầu ra analog. Sau đây là những gì tôi đã làm chỉ để nó hoạt động ở chế độ mỗi phiên (không phải chế độ hệ thống). Chế độ hệ thống cũng có thể hoạt động, tôi chưa thử. Thiết lập máy chủ sẽ yêu cầu một số công việc hơn. Tôi tìm thấy thông tin này ở nhiều nơi, hy vọng việc thu thập nó ở đây sẽ giúp được ai đó.

Cài đặt pulseaudio và đảm bảo người dùng (ví dụ eric) là một phần của nhóm âm thanh:

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

Thay đổi /etc/asound.conf trông giống như sau. Điều này thiết lập pulseaudio được sử dụng như một thiết bị alsa theo mặc định để các ứng dụng sử dụng nó mà không cần bất kỳ cấu hình bổ sung nào. Hai khai báo đầu tiên (bao gồm cả một nhận xét) là trong tệp gốc.

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 }

Thêm các dòng sau vào /etc/pulse/daemon.conf:

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

triviallà phương pháp chất lượng thấp nhất, nhưng sử dụng khoảng 6% cpu. src-sinc-fastestcũng làm việc cho tôi, nhưng sử dụng khoảng 25% CPU. Những người khác có thể làm việc là tốt. Điều này sau đó tôi không hiểu lắm về sự cần thiết, nhưng nó dường như là thành phần kỳ diệu. Bạn có thể đọc thêm về nó ở đây .

Cuối cùng, để tắt âm thanh bật giữa các lần phát bài hát, hãy nhận xét dòng này trong /etc/pulse/default.pa như sau:

#load-module module-suspend-on-idle

Vẫn còn một số trường hợp bỏ học khi hai nguồn phát cùng một lúc, nếu tôi phát hiện ra một biện pháp khắc phục cho điều đó tôi sẽ thêm vào câu trả lời này.


Khi phát âm thanh qua mạng, PulseAudio đã sử dụng khoảng 16% CPU ngay cả với trivialtôi.
Nathan Osman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.