mpd xung đột với các ứng dụng khác - kiểm soát xung?


8

Giải thích đơn giản

Nếu mpd đang phát và âm thanh cố gắng phát qua ứng dụng khác, x , âm thanh từ x sẽ không được phát ra.

Nếu âm thanh từ một ứng dụng khác, x , đang phát và mpd sau đó cố gắng phát, sẽ không có âm thanh nào phát ra từ mpd trong khi âm thanh từ x tiếp tục phát.

Chi tiết

Lần đầu tiên tôi nhận thấy vấn đề này với Flash và đây tiếp tục là tình huống phổ biến nhất. Tôi đã đăng một câu hỏi về điều này trước khi nhận ra nó không hoàn toàn liên quan đến Flash, nhưng thay vào đó là một việc cần làm với mpd.

Nỗi thất vọng lớn nhất của tôi đến từ việc cố gắng để mpd hoạt động trở lại, vì dường như tôi không thể xác định được bất kỳ phương pháp nào. Đôi khi pulseaudio -kdường như có ích, đôi khi sudo /etc/init.d/mpd restart, những người khác lại giết Chromium (do Flash) với SIGTERM. Hầu hết thời gian nó là sự kết hợp của ở trên.

Tôi nghĩ điều này có thể là do tôi chạy mpd với tư cách là một người dùng khác và sử dụng pulseaudio. Nó không chạy như root hoặc người dùng hiện tại. Ngoài ra, mpd được biên dịch với hỗ trợ xung.

Tôi đã thử rất nhiều thứ, tuy nhiên tôi thực sự không thể đọc thuộc lòng những gì, vì đã được một thời gian kể từ đó. Tôi thà không đi chọc ngoáy mà không có hướng nào, nhưng tôi thực sự rất vui khi được khắc phục vấn đề này một lần và mãi mãi.

mpd.conf

Đơn giản hóa bằng cách loại bỏ ý kiến ​​/ dòng trống.

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"

Câu hỏi

Vì mục đích giữ câu hỏi này: có ai biết nguyên nhân gây ra sự cố này hay cách khắc phục mà không chạy mpd như người dùng hiện tại không?


1
Khi phát một cái gì đó thông qua mpd (và âm thanh từ nó đang hoạt động) tải lên cửa sổ thuộc tính âm thanh, nhấn tab ứng dụng và điều này sẽ cho bạn biết chắc chắn nếu mpd có sử dụng PA hay không.
Oli

Chạy mpd với tư cách là người dùng hiện tại, theo hướng dẫn của Alibara Iduas, hoạt động xung quanh vấn đề này. Mặc dù vậy, tôi vẫn quan tâm đến việc tại sao điều này sẽ không chạy chính xác như người dùng "mpd".
Jamie Schembri

Câu trả lời:


5

Tôi đã gặp vấn đề này khi lần đầu tiên tôi bắt đầu sử dụng mpd, nhưng nó đã khá lâu rồi, vì vậy tôi không thể nhớ chính xác những gì tôi đã làm để khắc phục nó!

Bạn đã cài đặt tùy chọn PulseAudio chưa? Tôi tìm thấy mẹo này trên một diễn đàn: sudo apt-get install paprefs

Sau đó mở các khung của PulseAudio từ menu: System-> Preferences-> PulseAudio Preferences Nhấp vào tab Network Server, sau đó chọn hộp "Kích hoạt truy cập mạng vào thiết bị âm thanh cục bộ" và cuối cùng chọn hộp "Không yêu cầu xác thực". Sau đó, khởi động lại mpd:sudo /etc/init.d/mpd restart

Tuy nhiên ... tôi mới nhận ra rằng mpd hoạt động tốt với tôi và tôi không bật "truy cập mạng vào các thiết bị âm thanh cục bộ".

Tôi nghĩ rằng bạn có thể đúng khi cần chạy mpd với tư cách là người dùng hiện tại, đó là những gì tôi đang làm. (Tôi không có manh mối về lý do tại sao điều này là mặc dù!)

Có thể tìm thấy hướng dẫn đơn giản để thiết lập mpd với tư cách người dùng tại đây: http://gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNTU

Để tổng hợp mọi thứ, vì bạn đã cài đặt mpd:

1.) Dừng lại: sudo update-rc.d mpd disable

2.) Sao chép mpdconf của bạn vào trực tiếp tại nhà của bạn (dưới dạng .mpdconf) và thay đổi các mục sau đây sang những nơi mà người dùng của bạn có thể truy cập và ghi vào:

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

Trang tôi đang lấy này từ gợi ý chỉ cần tạo thư mục .mpd trong thư mục chính của bạn cho nội dung này, lưu cho thư mục nhạc thực tế của bạn.

3.) Nhận xét dòng người dùng trong .mpdconf: #user "mpd"

4.) Bây giờ bạn có thể chạy mpd và cập nhật cơ sở dữ liệu.

5.) Để làm cho mpd tự động khởi động như một người dùng khi đăng nhập, hãy truy cập Ứng dụng khởi động và thêm một mục nhập cho mpd, sau đó tạo tệp tự khởi động trong ~ / .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

Có thể có những nhược điểm khi chạy như một người dùng, vì vậy có lẽ điều này sẽ không phù hợp với nhu cầu của bạn.


Trước khi đọc nó, tôi đã thanh trừng pulseaudio và mpd. Pulseaudio đã hoạt động khá nhiều sau khi cài đặt, nhưng tôi không thể lấy lại âm thanh trên mpd vì một số lý do. Dù sao, tôi đã kết thúc theo hướng dẫn và bây giờ tôi đang chạy mpd với tư cách là người dùng hiện tại và nó hoạt động tốt. Tôi thích chạy nó với tư cách là người dùng "mpd" và vì đây là một cách giải quyết hơn là một câu trả lời, tôi sẽ không chấp nhận nó như một câu trả lời. Tôi vẫn quan tâm tại sao mpd sẽ không chạy với tư cách là người dùng "mpd" theo cách mà tôi muốn (có lẽ pulseaudio nên chạy dưới quyền root?). Bất kể, tôi hy vọng bạn hiểu và bạn có lời cảm ơn của tôi!
Jamie Schembri

1
Không có vấn đề, vui mừng ít nhất nó hoạt động bây giờ. Điều khác duy nhất tôi có thể nghĩ đến là đảm bảo, khi chạy nó với tư cách là người dùng mpd, "mpd" được liệt kê là thành viên nhóm trong nhóm truy cập xung (và có thể cả xung). Nhưng tôi sẽ tưởng tượng đó sẽ chỉ là một vấn đề nếu bạn không có âm thanh nào cả, không phải là xung đột kỳ quặc này. Ngoài ra, hãy xem các phần "MPD & Alsa" và "MPD & PulseAudio" trong trang wiki Archlinux này: wiki.archlinux.org/index.php/Music_Player_Daemon
Aibara

Cảm ơn một lần nữa, Aibara. Trước đây tôi đã đảm bảo rằng mpd nằm trong các nhóm chính xác cho xung, vì vậy đó không phải là vấn đề trong trường hợp này. Liên kết bạn đã đăng rất thú vị, đặc biệt ở chỗ nó mô tả chính xác vấn đề của tôi trong phần "MPD & Alsa" được đề cập! Điều này sẽ thích ứng với Pulse?
Jamie Schembri

Thật kỳ lạ khi cùng một vấn đề có một giải pháp dễ dàng với Alsa, nhưng tôi thực sự không chắc liệu giải pháp Alsa có thể được áp dụng cho Pulse hay không - điều đó thực sự vượt xa tôi. Mọi thứ tôi đã đọc về những người gặp vấn đề này với Pulse cuối cùng đều chạy MPD với tư cách là người dùng hoặc tùy chọn PulseAudio thay đổi. Lấy làm tiếc!
Aibara

Vấn đề này cũng gây ra cho tôi một số rắc rối, cho đến khi tôi tách nó ra MPD. Nhân tiện, giải pháp đầu tiên liên quan đến paprefs không hiệu quả với tôi nhưng giải pháp thứ hai thì có.
Laurence

2

Không chắc đó có chính xác là cùng một vấn đề không, nhưng với thiết lập mpd mặc định cũ của tôi, tôi nghĩ mpd đã cố gắng bắt đầu âm thanh xung của chính nó như một người dùng khác (người dùng mpd). Tôi thấy việc thiết lập đầu ra xung của mình trong /etc/mpd.conf để sử dụng ổ cắm để kết nối đơn giản hơn để tránh loại vấn đề này.

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

Sau đó, bạn có thể muốn kiểm tra paprefs mà bạn chấp nhận kết nối cục bộ


Trên Gentoo, tôi cũng cần phải sao chép người dùng của tôi .pulse-cookieđể /var/lib/mpdđược điều này để làm việc, hoặc PulseAudio thất bại với failed to connect: Access denied, mặc dù tôi không chắc chắn là đúng cách.
rebus

0

Khi chạy như người dùng của chính nó theo hướng dẫn wiki, mpd sẽ không thể gửi âm thanh đến máy chủ pulseaudio của người dùng khác. Thay vì thiết lập pulseaudio như một trình nền toàn hệ thống, một thực tế không được khuyến khích bởi ngược dòng, thay vào đó, bạn có thể định cấu hình mpd để sử dụng mô-đun tcp của pulseaudio để gửi âm thanh đến localhost:

Đầu tiên, bỏ ghi chú mô-đun tcp trong /etc/pulse/default.pa hoặc $ XDG_CONFIG_HOME / Pulse / default.pa (thường là ~ / .config / Pulse / default.pa) và đặt 127.0.0.1 làm địa chỉ IP được phép; thư mục nhà được ưu tiên:

### 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

Phạm vi IP bổ sung trong ký hiệu cidr có thể được thêm bằng cách sử dụng; làm dải phân cách. Khi điều này hoàn tất, hãy khởi động lại pulseaudio:

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

Tiếp theo, chỉnh sửa /etc/mpd.conf và thêm đầu ra xung mới trỏ đến 127.0.0.1 dưới dạng máy chủ "từ xa":

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

từ https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks

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.