帶藍牙音箱的mpd沒有聲音
我的環境有兩個音頻輸出:HDMI 和藍牙揚聲器。通常它們都可以正常工作。例如,
#this plays sound via bluetooth speaker $ aplay -D default jingle.wav #this plays sound via HDMI $ aplay -D plughw:1,7 jingle.wav
但是,
mpc play
不播放任何聲音。My/etc/mpd.conf
是預設的,除了音樂目錄。所以music_directory "smb://xxx.xxx.xx.x/some_directory" ... audio_output { type "alsa" name "My ALSA Device" # device "hw:0,0" # optional # mixer_type "hardware" # optional # mixer_device "default" # optional # mixer_control "PCM" # optional # mixer_index "0" # optional }
我使用遠端音樂目錄(
smb
協議)並且連接正常。根據,欄位man mpd.conf
的預設值為。但是沒有聲音,雖然我希望它通過藍牙揚聲器播放,如上面的命令。說device``"default"``mpc play``aplay -D default``sudo mpd --no-daemon --stderr
exception: OutputThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted avahi: Service 'Music Player' successfully established. client: [0] opened from xxx.x.x.x:xxxxx No protocol specified xcb_connection_has_error() returned true No protocol specified No protocol specified xcb_connection_has_error() returned true exception: Failed to read mixer for 'My ALSA Device': no such mixer control: PCM
最後一行可能是原因,所以我將
mixer_type
欄位設置為"none"
. 但是還是沒有聲音。mpc play
成功和目前位置(例如00:56/3:20 (58%)
)進展但沒有聲音。如何使用我的藍牙音箱?如果我設置
device
為plughw:1,7
,mpc play
實際上是通過 HDMI 播放聲音,如aplay
上面的命令。但是,我想使用藍牙揚聲器。環境:
$ lsb_relase -d Description: Linux Mint 19 Tara $ mpd --version Music Player Daemon 0.20.18
我
mpd
通過sudo apt install mpd
.
Music Player Daemon/Tips and tricks - PulseAudio完美地解決了這個問題。帶有pulseaudio的MPD也很有幫助。
該網站實際上就足夠了,但讓我寫下我所做的。首先,我確實將
device
欄位設置/etc/mpd.conf
為"alsa"
但這是錯誤的。預設情況下,藍牙揚聲器不是由管理,alsa
而是由pulseaudio
(至少在 Linux Mint 上,儘管您可以通過alsa
使案例如使用藍牙揚聲器BlueALSA
)。所以該欄位的值應該是"pulse"
。但是,預設情況下,在系統範圍pulseaudio
內執行時在使用者空間中mpd
執行。因此mpd
無法訪問目前使用者pulseaudio
會話的設置。要mpd
查看設置,您可以打開pulseaudio
的遠端功能:sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak sudo vi /etc/pulse/default.pa
並改變線
#load-module module-native-protocol-tcp
對此(取消註釋並添加一些單詞)
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
並重新啟動
pulseaudio
以反映此更改。#Note there is no `sudo` prefix. #As written above, `pulseaudio` runs in a user session. pulseaudio --kill pulseaudio --start
現在您可以
pulseaudio
使用tcp
協議和通過 ip 地址127.0.0.1
(通常是localhost
)訪問 。最後,mpd
應該更改 的設置:sudo cp /etc/mpd.conf /etc/mpd.conf.bak sudo vi /etc/mpd.conf
並設置
audio_output
欄位的值如下audio_output { type "pulse" name "arbitrary_name_which_you_like" server "localhost" }
並重新啟動
mpd
以反映更改。#Note there is `sudo` prefix. sudo systemctl restart mpd
就這樣。
補充:
順便說一句,
aplay -D default jingle.wav
成功但mpc play
沒有成功的事實來自執行空間的差異,即在系統範圍內執行或作為使用者會話執行。所以比較結果是沒有意義的。我應該mpc play
比較sudo -u mpd aplay -D default jingle.wav
。後一個命令失敗,這是預期的結果。