動かざることバグの如し

近づきたいよ 君の理想に

UbuntuにMPDをインストールしてリモート音楽再生する

環境

インストール

インストール

本来はapt get install mpdでインストールできるが、なんやかんやがあって自前ビルドしたものを使っている

thr3a.hatenablog.com

設定

# 再生したい音楽ファイルのパス
-music_directory       "/var/lib/mpd/music"
+music_directory        "/mnt/nas/MUSIC"

# デフォルトだとローカルでしか通信できないのでanyにして0.0.0.0にする
-bind_to_address       "localhost"
+bind_to_address        "any"

# エラーでうまくいかないときの調査用
-#log_level            "default"
+log_level          "verbose"

# 後述するが音楽ファイルのデータベースを自動更新するか
-#auto_update    "yes"
+auto_update    "yes"

# IPアドレスとか指定しなくてもクライアント側が自動検出してくれるシステム それくらい手動でやれ
-#zeroconf_enabled     "yes"
+zeroconf_enabled       "no"

# exception: Decoder plugin 'wildmidi' is unavailable: configuration file does not exist: /etc/timidity/timidity.cfg
# のエラーで起動しなかったので対応
+decoder {
+   plugin "wildmidi"
+   enabled "no"
+}
+

# スピーカー出力は無効化
-audio_output {
-  type        "alsa"
-  name        "My ALSA Device"
+#audio_output {
+#  type        "alsa"
+#  name        "My ALSA Device"
 #  device      "hw:0,0"  # optional
 #  mixer_type      "hardware"      # optional
 #  mixer_device    "default" # optional
 #  mixer_control   "PCM"     # optional
 #  mixer_index "0"       # optional
-}
+#}

# mpd streaming有効化
+audio_output {
+        type            "httpd"
+        name            "MPD Streaming"
+        encoder         "lame"          # optional, vorbis or lame
+        port            "6601"
+        bind_to_address "any"               # optional, IPv4 or IPv6
+#       quality         "5.0"                   # do not define if bitrate is defined
+        bitrate         "128"                   # do not define if quality is defined
+        format          "44100:16:1"
+        max_clients     "0"                     # optional 0=no limit
+        always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped
+        tags "yes" # httpd supports sending tags to listening streams.
+}

起動

設定反映

systemctl restart mpd

自動起動有効化

systemctl enable mpd

エラー対応

エラーレベルをverboseにしてにらめっこするしかない

いちいちsystemctl再起動してられるかって場合は

# mpd --no-daemon --stdout --verbose /etc/mpd.conf

でフォアグラウンドで起動するとログが全部標準出力で流れるので確認しやすい

/var/lib/mpd/playlistsがない

何故かデフォルトで作られてなかった mpdがアクセスできるようにするためにはユーザーmpd グループaudioにする必要がある

# mkdir /var/lib/mpd/playlists
#chown mpd:audio /var/lib/mpd/playlists

exception: Decoder plugin 'wildmidi' is unavailable

前述したがwildmidiとかいうデコーダプラグインが勝手に増えたが対応してないのでエラー 無効化したら起動した

Error “bind to ‘0.0.0.0:6600’ failed (continuing anyway, because binding to ‘[::]:6600’ succeeded)”

結論から言うと、問題ない

公式ドキュメントにも

This happens on Linux when /proc/sys/net/ipv6/bindv6only is disabled. MPD first binds to IPv6, and this automatically binds to IPv4 as well; after that, MPD binds to IPv4, but that fails. You can safely ignore this, because MPD works on both IPv4 and IPv6.

って書いてある。 https://mpd.readthedocs.io/en/latest/user.html#error-bind-to-0-0-0-0-6600-failed-continuing-anyway-because-binding-to-6600-succeeded

参考リンク