Pulseaudioでmpdを再生しようとすると、mpd.logが次のように報告します。
Pulse_output:「Pink ROCKI」の有効化に失敗しました[パルス]:pa_context_connect()が失敗しました:接続が拒否されました
私のmpd.confファイルはVanillaです。パルスセクションはジェネリックです。
audio_output {
type "Pulse"
name "General Pulse"
}
Laugeoが以下に示唆しているように、私はまた、両方の名前で個々のシンクを指定しようとしました:
audio_output {
type "Pulse"
name "ROCKI"
sink "raop_output.ASAP1826T.local"
}
インデックス番号:
audio_output {
type "Pulse"
name "ROCKI"
sink "4"
}
次に何を試すべきですか?システムサービスとして実行するようにpulseaudioを構成できますか?
これはUbuntu 14.04、pulseaudio 4.0(および5.0)、Music Player Daemon 0.18.7にあります
更新:見つけました このブログ ブロガーのLouizが同じ(または非常によく似た)問題を解決したようです:
MPDは明らかに、私自身のユーザーとして新しいpulseaudioプロセスを生成しようとしますが、すでに実行されているため失敗します。新しいインスタンスを生成しようとせずに、既存のpulseaudioインスタンスを使用できない理由を理解できませんでした。
この投稿 のおかげで理解できました。
MPDは、環境変数XDG_RUNTIME_DIRが設定されておらず、pulseaudioがそのファイル(ソケット、プロセスpidなど)を保存しているため、既に実行中のpulseaudioインスタンスを見つけることができませんでした。
私は彼の解決策を試しました:
以下を含む新しいファイル/etc/systemd/system/mpd.service.d/fixenv.confを作成します。
[サービス] Environment = XDG_RUNTIME_DIR =/run/user/1000
(1000をユーザーのUNIX IDに置き換えます。)
リブートし、XDG_RUNTIME_DIRが正しく設定され、Pulseはそのpidファイルを/ run/user/1000/Pulse /ディレクトリー(ユーザーIDは1000)に入れましたが、mpdから同じエラーが表示されます:
Pulse_output:「ROCKI」の有効化に失敗しました[パルス]:pa_context_connect()が失敗しました:接続が拒否されました
私は毎日linuxの詳細を学んでいますが、ソケット、プロセスPID、systemd(Ubuntuはupstartを使用するはずではありませんか?systemdは実行され起動しているようです)森の中で失われたm。
最後に、pulseaudioデーモンモードよりも優れた最良の解決策は あり です。mpdを(mpdユーザーではなく)自分で実行することなので、セッションpulseaudioを使用しても問題ありません。
別の答えですが、テスト済みで動作しています:
pulseaudioを、標準の「ユーザーモード」ではなく「デーモンモード」として実行するように設定します
Sudo gedit /etc/init/pulseaudio.conf
#
を削除して行20のコメントを外し、以下を取得します。start on runlevel [2345]
Sudo usermod -aG Pulse,pulse-access mpd
Sudo usermod -aG Pulse,pulse-access your-login
今再起動:うまくいけば、それは動作します。
注:情報については、この page にpulseaudioデーモンモードを避ける必要がある理由がリストされていますが、単一ユーザーのPCでは問題ないことがわかります(特に、ユーザーモードよりも多くのCPU /メモリ使用量は表示されません)。
XDG_RUNTIME_DIRソリューションはうまくいきましたが、/ etc/systemd/systemにファイルを作成する必要はありません。 /etc/init.d/mpdに次の行を追加するだけです。
export XDG_RUNTIME_DIR=/run/user/1000
すでに/etc/mpd.confで自分のユーザーおよび「オーディオ」グループとして実行するようにmpdを指定しています。
MPD設定ファイルでpulseaudioシンクを指定してみることができます:
Pulseaudioシンクを表示するには、ターミナルで次のコマンドを実行します。pactl list short sinks
次のようなものが出力されます。
0 alsa_output.pci-0000_00_03.0.hdmi-stereo module-alsa-card.c s16le 2ch 44100Hz IDLE
1 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
メインシンク(HDMIサウンドがないため2番目のメインシンク)を選択し、その名前をmpd.conf audio_outputにコピーします。
音声出力 {
type "Pulse"
name "MPD PulseAudio Output"
sink "alsa_output.pci-0000_00_1b.0.analog-stereo"
}