다른 응용 프로그램과 충돌하는 mpd — 펄스 제어?


8

간단한 설명

MPD가 재생되는 사운드의 시도가 다른 응용 프로그램을 통해 재생하는 경우 X 에서 소리 X 출력되지 않습니다.

다른 응용 프로그램 x의 사운드 가 재생되고 mpd가 재생을 시도하면 x의 사운드가 계속 재생 되는 동안 mpd에서 사운드가 출력되지 않습니다 .

세부

Flash에서이 문제를 처음 발견했으며 이것이 가장 일반적인 시나리오입니다. 나는 이것이 Flash와 엄격하게 관련되어 있지는 않지만 mpd와 관련 있다는 것을 깨닫기 전에 이것에 대한 질문을 게시했습니다 .

가장 큰 좌절은 mpd를 다시 작동시키려는 것입니다. 때때로 다른 사람들이로 플래시를 사용하여 Chromium을 죽이는 다른 사람들 pulseaudio -k에게 도움이되는 것 같습니다 . 대부분의 경우 위의 조합입니다.sudo /etc/init.d/mpd restartSIGTERM

다른 사용자로 mpd를 실행하고 pulseaudio를 사용하기 때문일 수 있습니다. 루트 또는 현재 사용자로 실행되지 않습니다. 또한 mpd는 펄스 지원으로 컴파일됩니다.

나는 많은 것을 시도했지만 그 이후로 시간이 지남에 따라 솔직히 무엇을 암송 할 수 없었습니다. 나는 약간의 지시없이 주위를 파고 가지 않을 것이지만, 나는이 문제를 한 번에 해결해 정말로 기쁠 것입니다.

mpd.conf

주석 / 빈 줄을 제거하여 단순화했습니다.

music_directory     "/var/lib/mpd/music"
playlist_directory      "/var/lib/mpd/playlists"
db_file         "/var/lib/mpd/tag_cache"
log_file            "/var/log/mpd/mpd.log"
pid_file            "/var/run/mpd/pid"
state_file          "/var/lib/mpd/state"

user                "mpd"
bind_to_address     "wilson"

input {
        plugin "curl"
}

audio_output {
    type        "pulse"
    name        "My Pulse Output"

}

filesystem_charset      "UTF-8"
id3v1_encoding          "UTF-8"

질문

이 질문을 유지하기 위해 : 문제의 원인 또는 현재 사용자로 mpd를 실행하지 않고 문제를 해결하는 방법을 아는 사람이 있습니까?


1
mpd를 통해 무언가를 재생할 때 (그리고 그 소리가 작동하는 경우) 사운드 속성 창을로드하고 응용 프로그램 탭을 누르면 mpd가 PA를 사용하고 있는지 아닌지를 알려줍니다.
Oli

Alibara Iduas의 지침에 따라 현재 사용자로 mpd를 실행하면 문제가 해결됩니다. 그래도 사용자 "mpd"로서 이것이 올바르게 실행되지 않는 이유에 여전히 관심이 있습니다.
Jamie Schembri

답변:


5

처음 mpd를 사용하기 시작했을 때이 문제가 있었지만 꽤 오래 전이었습니다.

PulseAudio 기본 설정이 설치되어 있습니까? 포럼에서이 팁을 찾았습니다. sudo apt-get install paprefs

그런 다음 메뉴에서 PulseAudio 프리 프레즌스를 엽니 다. 그런 다음 mpd를 다시 시작하십시오.sudo /etc/init.d/mpd restart

그러나 ... 방금 mpd가 제대로 작동하고 "로컬 사운드 장치에 대한 네트워크 액세스"가 활성화되어 있지 않다는 것을 깨달았습니다.

현재 사용자로 mpd를 실행해야한다고 생각할 수도 있습니다. (이것이 왜 그런지에 대한 실마리는 없습니다!)

사용자로 실행되도록 mpd를 설정하는 간단한 안내서는 다음에서 찾을 수 있습니다. http://gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNTU

mpd가 이미 설치되어 있으므로 요약하면 다음과 같습니다.

1.) 중지하십시오 : sudo update-rc.d mpd disable

2.) mpdconf를 .mpdconf와 같은 홈 디렉토리에 복사하고 다음 항목을 사용자가 액세스하여 쓸 수있는 위치로 변경하십시오.

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

내가이 페이지를 가져 가면이 디렉토리의 .mpd 폴더를 만들어 실제 음악 디렉토리에 저장하십시오.

3.) .mpdconf에서 사용자 라인을 주석 처리하십시오. #user "mpd"

4.) 이제 mpd를 실행하고 데이터베이스를 업데이트 할 수 있습니다.

5.) 로그인 할 때 mpd가 사용자로 자동 시작되도록하려면 시작 응용 프로그램으로 이동하여 mpd에 대한 항목을 추가 한 다음 ~ / .config / autostart /에 자동 시작 파일을 만듭니다.

[Desktop Entry]
Type=Application
Exec=mpd
Hidden=false
NoDisplay=false
Terminal=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Music Player Daemon
Name=Music Player Daemon
Comment[en_US]=plays the music
Comment=plays the music

사용자로 실행하는 데 단점이있을 수 있으므로 이는 사용자 요구에 맞지 않을 수 있습니다.


이것을 읽기 전에 펄스 오디오와 mpd를 제거했습니다. Pulseaudio는 설치 후 거의 작동했지만 어떤 이유로 mpd에서 사운드를 다시 얻을 수 없었습니다. 어쨌든, 나는 가이드를 따라 갔고 지금은 현재 사용자로 mpd를 실행 중이며 정상적으로 작동합니다. 사용자 "mpd"로 실행하는 것이 좋았으며 이는 답변보다 해결 방법이 많으므로 답변으로 받아들이지 않습니다. mpd가 원하는 방식으로 사용자 "mpd"로 실행되지 않는 이유에 여전히 관심이 있습니다 (pulseaudio가 루트에서 실행되어야합니까?). 어쨌든, 나는 당신이 이해하고 당신이 내 감사를 바랍니다!
Jamie Schembri

1
문제 없습니다, 적어도 지금은 작동합니다. 내가 생각할 수있는 유일한 다른 것은 그것을 mpd 사용자로 실행할 때 "mpd"가 펄스 액세스 (및 펄스) 그룹의 그룹 멤버로 나열되는지 확인하는 것입니다. 그러나 나는 이것이 이상한 충돌이 아닌 소리가 전혀 없다면 문제 일 것이라고 생각합니다. 흠, 또한이 Archlinux 위키 페이지에서 "MPD & Alsa"및 "MPD & PulseAudio"섹션을 참조하십시오. wiki.archlinux.org/index.php/Music_Player_Daemon
Aibara

다시 한번 감사합니다. 이전에 mpd가 올바른 펄스 그룹에 있는지 확인 했으므로이 경우에는 문제가되지 않았습니다. 게시 한 링크는 특히 "MPD & Alsa"섹션에 나와있는 정확한 문제를 설명한다는 점에서 매우 흥미 롭습니다. 펄스에 적용 할 수 있습니까?
Jamie Schembri

같은 문제가 Alsa와 함께 쉬운 해결책을 가지고 있다는 것은 이상한 일이지만, Alsa 솔루션이 Pulse에 적용될 수 있는지 확실하지 않습니다. Pulse로이 문제가있는 사람들에 대해 읽은 모든 내용은 MPD를 사용자로 실행하거나 PulseAudio 환경 설정이 변경됩니다. 죄송합니다!
Aibara

이 문제는 MPD에 격리 될 때까지 문제를 일으켰습니다. 그런데 paprefs와 관련된 첫 번째 해결책은 나에게는 효과가 없었지만 두 번째 해결책은 효과가 없었습니다.
Laurence

2

그것이 정확히 같은 문제인지 확실하지 않지만 이전의 기본 mpd 설정을 사용하면 mpd가 다른 사용자 (mpd 사용자)로서 자체 펄스 오디오를 시작하려고한다고 생각합니다. 소켓을 사용하여 /etc/mpd.conf 에서 펄스 출력을 설정 하는 것이 이러한 종류의 문제를 피하기 위해 더 간단 하다는 것을 알았 습니다.

audio_output {
        type            "pulse"
        name            "My Pulse Output"
        server          "localhost"
}

그런 다음 로컬 연결을 수락하는 papref 를 확인하고 싶을 수 있습니다.


젠투에서 나는 또한 내 사용자를 복사해야 .pulse-cookie하는 /var/lib/mpd일, 또는에 실패 펄스 오디오에이를 얻기 위해 failed to connect: Access denied내가 올바른 방법이다 모르겠어요 불구하고.
수수께끼

0

Wiki 지침에 따라 자체 사용자로 실행하면 mpd는 다른 사용자의 pulseaudio 서버로 사운드를 보낼 수 없습니다. 업스트림에서 권장하지 않는 방법으로 pulseaudio를 시스템 전체 데몬으로 설정하는 대신, 펄스 오디오의 tcp 모듈을 사용하여 사운드를 localhost로 보내도록 mpd를 구성 할 수 있습니다.

먼저 /etc/pulse/default.pa 또는 $ XDG_CONFIG_HOME / pulse / default.pa (일반적으로 ~ / .config / pulse / default.pa)에서 tcp 모듈의 주석 처리를 제거하고 허용 된 IP 주소로 127.0.0.1을 설정하십시오. 홈 디렉토리가 우선합니다.

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
#load-module module-zeroconf-publish

암호 표기법의 추가 IP 범위는; 분리기로. 이것이 완료되면 pulseaudio를 다시 시작하십시오.

$ pulseaudio --kill
$ pulseaudio --start -or- start-pulseaudio-x11/kde

다음으로 /etc/mpd.conf를 편집하고 "원격"서버로 127.0.0.1을 가리키는 새로운 펄스 출력을 추가하십시오.

audio_output {
       type     "pulse"
       name     "Local Music Player Daemon"
       server       "127.0.0.1"
}

에서 https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.