Music Player Daemon/トラブルシューティング

提供: ArchWiki
移動先: 案内検索

メインの記事は Music Player Daemon

トラブルシューティング

Autodetection failed

MPD を起動すると、セットアップが自動検出されて、アウトプットやボリュームコントロールが設定されます。大抵はこれで上手くいきますが、システムによっては上手く行かないことがあります。アウトプットやミキサーコントロールを MPD に手動で指定することが可能です。/etc/mpd.conf.example から /etc/mpd.conf をコピーした場合、以下をアンコメントしてください (alsa 出力と alsa ミキサーの例):

audio_output {
	type			"alsa"
	name			"My ALSA Device"
	device			"hw:0,0"	# optional
	format			"44100:16:2"	# optional
	mixer_type		"hardware"
	mixer_device		"default"
	mixer_control		"PCM"
}

MPD で ESD を使用した場合にパーミッションの問題が起こる場合は root で以下のコマンドを実行してください:

# chsh -s /bin/true mpd

最初の起動時に MPD がフリーズする

mp3 タグが壊れているときによく起こるエラーです。以下にこの問題を解決する実験的な方法を記述します。必要なのは:

  • kid3
  • easytag

この方法は非常に長い時間がかかります (特にデータベースが巨大な場合)。大体、16GB のデータベースを修復するのに 2.5 時間くらいかかります。

Easy Tag

The purpose of easytag here is that easytag detects the error in the tags, but like MPD it hangs and dies. The trick here is that easy tags actually tells you what file is causing the problem on the status bar. Before starting easytag make sure to have a terminal close to be ready to kill easy tag to avoid a hang. Once you are ready, on the tree view select the directory where all your music is located. By default easytag starts to search all subdirectories for mp3 files. Once you notice that easytag stopped scanning for songs, make note of the culprit and kill easytag.

ノート: This task can also be achieved by editing mpd's config file and setting "log_level" from "default" to "verbose". restart mpd and look up the last entry in mpd's log file after mpd hangs. It is recommended to set "log_level" back to "default" after debugging, since the log file grows fast.

Kid3

Here's where kid3 comes in handy. With kid3 go to the offending song and rewrite one of the tags. then save the file. This should force kid3 to rewrite the whole tag again fixing the problem with MPD and easy tag hanging.

Repeat this procedure until your music library is done.

Cannot connect to mpd: host "localhost" not found: Temporary failure in name resolution

ネットワークから切断されていると、(ncmpcpp を使って) MPD に接続することはできません。解決方法は IPv6 を無効化するか以下の行を /etc/hosts に追加することです:

::1 localhost.localdomain localhost

mpd にクライアントで接続できない問題

一部のユーザーは以下のようなエラーが表示されてクライアントから mpd にアクセスできないと報告しています:

$ ncmpcpp
Cannot connect to mpd: Connection closed by the server
$ sonata
2011-02-13 18:33:05  Connection lost while reading MPD hello
2011-02-13 18:33:05  Not connected
2011-02-13 18:33:05  Not connected

ncmpcpp に関する Arch フォーラムの [1][2] の投稿や FS#22071 を参照してください。

解決方法 1

mpd.confmpd.error という行があったら削除してください。mpd エラーファイルは廃止され削除されました。

解決方法 2

ノート: I'm not so sure this is a good idea. There is a warning about changing the address to bind to in the default mpd.conf. If this does not help, you might want to comment out the changes.

上記の設定で直らない場合、以下を mpd.conf に追加してください:

bind_to_address "127.0.0.1"
port "6600"

その後、クライアントから 127.0.0.1 で接続してみてください。例えば ncmpcpp の設定ファイルに以下を追加:

mpd_host "127.0.0.1"
mpd_port "6600"

IPv4 よりも前に IPv6 が使われる

起動時に、mpd が以下のメッセージを表示する場合:

listen: bind to '0.0.0.0:6600' failed: Address already in use (continuing anyway, because binding to '[::]:6600' succeeded)

MPD は IPv4 にバインドする前に IPv6 インターフェイスにバインドしようとしています。IPv4 インターフェイスを使いたい場合、mpd.conf で以下のようにハードコードしてください:

bind_to_address "127.0.0.1"

複数のバインドを指定することもできます。localhost やネットワークカードの外部 IP を listen させるには:

bind_to_address "127.0.0.1"
bind_to_address "192.168.1.13"

daemon: cannot setgid for user "mpd": Operation not permitted

The error is stating that the user starting the process does not have permissions to become another user (mpd) which the configuration has told the process to run as.

この問題を解決するには、mpd を root で起動してください:

# systemctl start mpd

daemon: fatal_error: Failed to set group NN: Operation not permitted

The error is stating that mpd can't set the group. This is if you have set any other group in /etc/mpd.conf than the default: mpd. This is because of the default mpd.service file. It starts mpd as user mpd (and if no group specified with the default group of this user as stated in your /etc/passwd) and therefore mpd does not have any rights to change his group.

解決方法 1

/etc/mpd.confgroup= をコメントアウトするか group=mpd と変更してください。

解決方法 2

/etc/systemd/system/mpd.service ファイルを作成して適切なグループを追加してください。例えば "audio" グループ mpd を実行する場合:

/etc/systemd/system/mpd.service
.include /usr/lib/systemd/system/mpd.service
    [Service]
    Group=audio

解決方法 3

/etc/passwd で mpd ユーザーのデフォルトグループを変更してください。

MPD & ALSA

Sometimes, when using other audio outputs, e.g: some web pages containing Flash applets, MPD is rendered unable to play (until it is restarted). The error comes up in mpd's log:

Error opening alsa device "hw:0,0": Device or resource busy

Reasons for this may be:

  • The sound card does not support hardware mixing (uses dmix plugin)
  • An application does not work with ALSA's default settings

For a detailed description, it is recommended to take a look at this link.

This problem may be solved by adding the following lines to mpd.conf:

mpd.conf
audio_output {
        type                    "alsa"
        name                    "Sound Card"
        options                 "dev=dmixer"
        device                  "plug:dmix"
}

To make the changes have effect, restart mpd (e.g. systemctl restart mpd, if it is a global configuration).

ALSA で CPU の使用量が高くなる

ALSA で MPD を使用しているとき、MPD が CPU を大量に消費する場合があります (20-30%)。これはほとんどのサウンドカードがサポートしているのが 48kHz なのに対してほとんどの音楽は 44.1kHz であるために、MPD がリサンプリングを行ってしまうのが原因です。リサンプリングには CPU サイクルが大量に必要で、結果として使用量が高くなります。

/etc/mpd.conf の audio_output に auto_resample "no" を追加して MPD にリサンプリングを使わないようにすれば大抵は問題が解決します。

mpd.conf
audio_output {
   type			"alsa"
   name			"My ALSA Device"
   auto_resample	"no"
}

Although it may not give as drastic a speedup, enabling mmap may still speed things up:

mpd.conf
audio_output {
   type			"alsa"
   name			"My ALSA Device"
   use_mmap		"yes"
}

Some users might also want to tell dmix to use 44kHz as well. More info about tuning performance of your MPD can be found on the MPD wiki

Playing audio files with different rate (works for EMU 0202/0204/0404)

To play audio files of different rate with automatic card rate change install pulseaudio and pulseaudio-alsa and keep using ALSA as output:

mpd.conf
audio_output {
    type          "alsa"
    name          "Emu 0202 USB"
    device        "hw:2,0"
}