web-dev-qa-db-ja.com

mpdが他のアプリケーションと競合しています-パルスを制御していますか?

簡単な説明

Mpdが再生中で、サウンドが別のアプリケーションxを介して再生しようとすると、xからのサウンドは出力されません。

別のアプリケーションxからの音が再生されてmpdが再生しようとすると、mpdから音は出力されませんが、xプレイし続けます。

詳細

Flashでこの問題に最初に気づき、これが最も一般的なシナリオであり続けています。私は これに関する質問を投稿しました 厳密にFlash関連ではないことに気付く前に、代わりにmpdと関係があります。

私の最大の不満は、mpdを再び動作させようとすることです。どの方法も特定できないようです。時々pulseaudio -kが助けになるように見える場合もあれば、Sudo /etc/init.d/mpd restartSIGTERMでChromiumを(Flashにより)殺す場合もあります。ほとんどの場合、上記の組み合わせです。

これは、mpdを別のユーザーとして実行し、pulseaudioを使用しているためだと思います。 rootまたは現在のユーザーとしては実行されません。また、mpdはPulseサポートでコンパイルされています。

私は多くのことを試しましたが、それ以来しばらくしてきたので、私は正直に何を暗唱できませんでした。何らかの指示がなければ、ぶらぶらしたくはありませんが、この問題を完全に解決できて本当にうれしいです。

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を実行せずにそれを修正する方法を知っていますか?

8
Jamie Schembri

最初にmpdを使い始めたときにこの問題がありましたが、かなり前のことなので、修正したことを正確に思い出せません!

PulseAudioの設定がインストールされていますか?フォーラムでこのヒントを見つけました:Sudo apt-get install paprefs

次に、メニューからPulseAudio prefrencesを開きます。[システム]-> [設定]-> [PulseAudioの設定] [ネットワークサーバー]タブをクリックし、[ローカルサウンドデバイスへのネットワークアクセスを有効にする]チェックボックスをオンにします。その後、mpdを再起動します:Sudo /etc/init.d/mpd restart

しかし... mpdがうまく機能し、「ローカルサウンドデバイスへのネットワークアクセス」が有効になっていないことに気付きました。

現在のユーザーとしてmpdを実行する必要があるのは正しいと思います。これが私がしていることです。 (これがなぜなのか、私には見当もつかない!)

ユーザーとして実行されるようにmpdをセットアップするための簡単なガイドは、ここにあります: http://gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNT

すでに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

おそらくユーザーとして実行することには欠点があるので、これはあなたのニーズに合わないかもしれません。

5
Aibara

まったく同じ問題かどうかはわかりませんが、古いデフォルトのmpdセットアップでは、mpdは独自のPulseオーディオを別のユーザー(mpdユーザー)として起動しようとしていたと思います。 / etc/mpd.confでのパルス出力の設定は、この種の問題を回避するために、ソケットを使用して接続する方が簡単です。

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

次に、ローカル接続を受け入れることをpaprefsで確認します。

2
Bill Robinson

Wikiの指示に従って独自のユーザーとして実行すると、mpdは別のユーザーのpulseaudioサーバーにサウンドを送信できなくなります。 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

を使用してcidr表記の追加の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"
}

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

0
Pavel1114