環境
- Ubuntu 20.04
- mpd 0.23
インストール
インストール
本来はapt get install mpdでインストールできるが、なんやかんやがあって自前ビルドしたものを使っている
設定
# 再生したい音楽ファイルのパス -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.