mpd bertentangan dengan aplikasi lain - mengambil kendali pulsa?

8

Penjelasan sederhana

Jika mpd sedang diputar dan suara mencoba diputar melalui aplikasi lain, x , suara dari x tidak akan dihasilkan.

Jika suara dari aplikasi lain, x , diputar dan mpd kemudian mencoba untuk memutar, tidak ada suara yang akan dihasilkan dari mpd sementara suara dari x terus diputar.

Detail

Saya pertama kali memperhatikan masalah ini dengan Flash, dan ini terus menjadi skenario yang paling umum. Saya memposting pertanyaan tentang ini sebelum menyadari bahwa itu tidak sepenuhnya terkait dengan Flash, tetapi ada hubungannya dengan mpd.

Frustrasi terbesar saya berasal dari mencoba membuat mpd bekerja lagi, karena saya tidak bisa menemukan metode apa pun. Kadang-kadang pulseaudio -ktampaknya membantu, di lain waktu sudo /etc/init.d/mpd restart, orang lain membunuh Chromium (karena Flash) SIGTERM. Sebagian besar waktu itu kombinasi dari yang di atas.

Saya pikir ini mungkin karena saya menjalankan mpd sebagai pengguna lain dan menggunakan pulseaudio. Itu tidak dijalankan sebagai root atau pengguna saat ini. Juga, mpd dikompilasi dengan dukungan pulsa.

Saya sudah mencoba banyak hal, namun jujur ​​saya tidak bisa melafalkan apa, karena sudah beberapa waktu sejak itu. Saya lebih suka tidak mencari-cari tanpa arah, tetapi saya akan sangat senang memperbaiki masalah ini untuk selamanya.

mpd.conf

Disederhanakan dengan menghapus komentar / baris kosong.

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"

Pertanyaan

Demi menjaga pertanyaan ini: apakah ada yang tahu apa yang menyebabkan ini, atau bagaimana cara memperbaikinya tanpa menjalankan mpd sebagai pengguna saat ini?

Jamie Schembri
sumber
1
Saat memainkan sesuatu melalui mpd (dan suara darinya berfungsi) memuat jendela properti suara, tekan tab aplikasi dan ini akan memberi tahu Anda dengan pasti apakah mpd menggunakan PA atau tidak.
Oli
Menjalankan mpd sebagai pengguna saat ini, sesuai instruksi Alibara Iduas, mengatasi masalah ini. Saya masih tertarik pada mengapa ini tidak akan berjalan dengan benar sebagai pengguna "mpd".
Jamie Schembri

Jawaban:

5

Saya memiliki masalah ini ketika pertama kali mulai menggunakan mpd, tetapi beberapa waktu yang lalu, jadi saya tidak ingat persis apa yang saya lakukan untuk memperbaikinya!

Apakah Anda memiliki preferensi PulseAudio diinstal? Saya menemukan tip ini di forum: sudo apt-get install paprefs

Kemudian buka PulseAudio preferensi dari menu: System-> Preferences-> Preferensi PulseAudio Klik tab Server Jaringan, kemudian centang kotak "Aktifkan akses jaringan ke perangkat suara lokal", dan akhirnya centang kotak "Jangan memerlukan otentikasi". Setelah itu, mulai ulang mpd:sudo /etc/init.d/mpd restart

Namun ... Saya baru menyadari bahwa mpd berfungsi dengan baik untuk saya dan saya tidak mengaktifkan "akses jaringan ke perangkat suara lokal".

Saya pikir Anda mungkin benar perlu menjalankan mpd sebagai pengguna saat ini, yang saya lakukan. (Aku tidak tahu mengapa ini terjadi!)

Panduan sederhana untuk menyiapkan mpd agar dijalankan sebagai pengguna dapat ditemukan di sini: http://gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNTU

Singkatnya, karena Anda sudah menginstal mpd:

1.) Hentikan: sudo update-rc.d mpd disable

2.) Salin mpdconf Anda ke direktori home Anda (sebagai .mpdconf), dan ubah entri berikut ke tempat-tempat di mana pengguna Anda dapat mengakses dan menulis ke:

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

Halaman yang saya ambil ini menyarankan hanya membuat folder .mpd di direktori home Anda untuk hal ini, simpan untuk direktori musik Anda yang sebenarnya.

3.) Mengomentari baris pengguna di .mpdconf: #user "mpd"

4.) Sekarang Anda dapat menjalankan mpd dan memperbarui database.

5.) Untuk membuat mpd memulai secara otomatis sebagai pengguna saat masuk, buka Aplikasi Startup dan tambahkan entri untuk mpd, kemudian buat file autostart di ~ / .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

Mungkin ada kelemahan untuk menjalankan sebagai pengguna, jadi mungkin ini tidak sesuai dengan kebutuhan Anda.

Aibara
sumber
Sebelum membaca ini, saya membersihkan pulseaudio dan mpd. Pulseaudio bekerja cukup banyak setelah menginstal, tetapi saya tidak bisa mendapatkan suara kembali di mpd karena alasan tertentu. Bagaimanapun, saya akhirnya mengikuti panduan ini dan sekarang saya menjalankan mpd sebagai pengguna saat ini dan berfungsi dengan baik. Saya lebih suka menjalankannya sebagai pengguna "mpd", dan karena ini lebih merupakan solusi daripada jawaban, saya tidak akan menerimanya sebagai jawaban. Saya masih tertarik pada mengapa mpd tidak akan berjalan sebagai pengguna "mpd" dengan cara yang saya inginkan (mungkin pulseaudio harus dijalankan di bawah root?). Bagaimanapun, saya harap Anda mengerti dan terima kasih!
Jamie Schembri
1
Tidak masalah, senang setidaknya berfungsi sekarang. Satu-satunya hal lain yang bisa saya pikirkan adalah memastikan, ketika menjalankannya sebagai pengguna mpd, "mpd" terdaftar sebagai anggota grup di grup akses-pulsa (dan mungkin juga pulsa). Tapi saya akan membayangkan itu hanya akan menjadi masalah jika Anda tidak memiliki suara sama sekali, bukan konflik aneh ini. Hm, juga, lihat bagian "MPD & Alsa" dan "MPD & PulseAudio" di halaman wiki Archlinux ini: wiki.archlinux.org/index.php/Music_Player_Daemon
Aibara
Sekali lagi terima kasih, Aibara. Saya sebelumnya memastikan bahwa mpd berada dalam kelompok yang benar untuk denyut nadi, jadi itu bukan masalah dalam kasus ini. Tautan yang Anda poskan sangat menarik, terutama karena itu menjelaskan masalah saya yang sebenarnya di bagian "MPD & Alsa" yang disebutkan! Apakah ini dapat disesuaikan dengan Pulse?
Jamie Schembri
Sungguh aneh bahwa masalah yang sama memiliki solusi yang mudah dengan Alsa, tapi saya benar-benar tidak yakin apakah solusi Alsa dapat diterapkan ke Pulse - itu benar-benar di luar jangkauan saya. Semua yang saya baca tentang orang-orang yang memiliki masalah dengan Pulse ini akhirnya menjalankan MPD sebagai pengguna, atau preferensi PulseAudio berubah. Maaf!
Aibara
Masalah ini juga menyebabkan masalah bagi saya, sampai saya mengisolasinya ke MPD. Omong-omong solusi pertama yang melibatkan paprefs tidak bekerja untuk saya tetapi yang kedua berhasil.
Laurence
2

Tidak yakin apakah itu masalah yang sama persis, tetapi dengan pengaturan mpd default-ish lama saya, saya pikir mpd sedang mencoba untuk memulai audio pulsa sendiri sebagai pengguna yang berbeda (pengguna mpd). Saya menemukan pengaturan output pulsa saya di /etc/mpd.conf untuk menggunakan soket untuk menyambung lebih mudah untuk menghindari masalah seperti ini.

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

Maka Anda mungkin ingin memeriksa paprefs bahwa Anda menerima koneksi lokal

Bill Robinson
sumber
Di Gentoo, saya juga perlu menyalin pengguna saya .pulse-cookieagar /var/lib/mpdini berfungsi, atau pulseaudio gagal failed to connect: Access denied, meskipun saya tidak yakin apakah itu cara yang benar.
rebus
0

Ketika dijalankan sebagai penggunanya sendiri sesuai instruksi wiki, mpd tidak akan dapat mengirim suara ke server pulseaudio pengguna lain. Daripada mengatur pulseaudio sebagai daemon sistem, praktik yang sangat tidak disarankan oleh hulu, Anda dapat mengkonfigurasi mpd untuk menggunakan modul tcp pulseaudio untuk mengirim suara ke localhost:

Pertama, batalkan komentar pada modul tcp di /etc/pulse/default.pa atau $ XDG_CONFIG_HOME / pulse / default.pa (biasanya ~ / .config / pulse / default.pa) dan atur 127.0.0.1 sebagai alamat IP yang diizinkan; direktori home diutamakan:

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

Kisaran IP tambahan dalam notasi cidr dapat ditambahkan menggunakan; sebagai pemisah. Setelah ini selesai, mulai ulang pulseaudio:

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

Selanjutnya, edit /etc/mpd.conf dan tambahkan output pulsa baru yang menunjuk ke 127.0.0.1 sebagai server "remote":

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

dari https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks

Pavel1114
sumber