블루투스 스피커가 장착된 MPD에서 소리가 나지 않습니다.

블루투스 스피커가 장착된 MPD에서 소리가 나지 않습니다.

내 환경에는 HDMI와 Bluetooth 스피커라는 두 가지 오디오 출력이 있습니다. 일반적으로 모두 잘 작동합니다. 예를 들어,

#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소리는 재생되지 않습니다. 내 것은 /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 playaplay -D defaultsudo 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.

답변1

이 문제는 완벽하게 해결되었습니다음악 플레이어 데몬/팁과 요령 - PulseAudio. 그리고펄스 오디오가 포함된 MPD매우 도움이 됩니다.

그 사이트는 실제로 충분히 훌륭하지만, 제가 한 일에 대해 쓰겠습니다. 먼저 to 필드를 설정했는데 device잘못되었습니다. 기본적으로 블루투스 스피커는 관리자에 의해 관리되지 않습니다(적어도 Linux Mint에서는 예를 들어 블루투스 스피커를 사용할 수 있음). 따라서 이 필드의 값은 다음과 같아야 합니다. 그러나 기본적으로 이는 사용자 공간 및 시스템 전체에서 실행됩니다. 따라서 현재 사용자 세션의 설정에 액세스할 수 없습니다. 설정을 보려면 원격 기능을 켜면 됩니다./etc/mpd.conf"alsa"alsapulseaudioalsaBlueALSA"pulse"pulseaudiompdmpdpulseaudiompdpulseaudio

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사용 하고 tcpIP 주소 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. 후자의 명령은 실패할 것으로 예상됩니다.

관련 정보