初老のボケ防止日記

おっさんのひとりごとだから気にしないようにな。

Raspberry Pi 3とポタアンでNASの音楽を再生するネットワークオーディオプレーヤーを作った(DLNA編)

夏休みがNAS休みに。
前回、NAS上の音源を再生する環境をRaspberry Pi 3で構築したのですが

osa030.hatenablog.com

我が家はUPSを設置しておらず、NASを常時起動する運用ではブレーカーが飛んだ時にデータが飛んでしまうかもしれないので基本的には使う時だけ起動するという運用スタイルとなっている。そのため、

NASを起動し忘れて再生できないあるある。

ということで、NASなしでも動作する環境を考えました。

構成

f:id:osa030:20160820151456j:plain

Raspberry Pi 3 ネットワーク上の音源ファイルを再生する
Anker PowerCore 20100 Raspberry Pi 3に電源供給する
DENON DA-10 USB-DAC兼ポタアンとして音声出力する
Smartphone Raspberry Pi 3を操作する。音源ファイルをネットワーク上に公開する
QNAP 音源ファイルをネットワーク上に公開する
Ponkotsu 音楽を楽しむ

図中の「DMS」やら「DMR」やら「DMC」とはなんぞ?というヒトは以下参照。

osa030.hatenablog.com

ようは

NASやスマホ上にある音源ファイルをDLNA経由でRaspberry Pi 3上で再生する環境を作りましょう

というのが今回のテーマ。だったら

スマホにポタアンつけて聴けばいいじゃない

とかそういうツッコミは無しで。

前回までに構築したRaspberry Pi 3をベースに作業スタート。

Raspberry Pi 3をDMR化する

以下を導入すれば完了。

An UPnP Audio Media Renderer based on MPD

upmpdcli is an UPnP Media Renderer front-end to MPD, the Music Player Daemon. It supports both pure UPnP and the OpenHome ohMedia services.

https://www.lesbonscomptes.com/upmpdcli/upmpdcli.html

一言で言えばDLNAで使われているUPnPを解釈してMPDを操作するMPDクライアントである。

インストール

公式外のリポジトリでパッケージが提供されている。

$ sudo vi /etc/apt/sources.list.d/upmpdcli.list

「upmpdcli.list」というファイルを新規作成。

  • upmpdcli.list
deb http://www.lesbonscomptes.com/upmpdcli/downloads/debian/ unstable main
deb-src http://www.lesbonscomptes.com/upmpdcli/downloads/debian/ unstable main

これだけだと「apt-get update」で署名関連のエラーがでてインストールできないのでそれを解決する。

$ gpg --export '32D9C2A835ED066C' | sudo apt-key add -
$ gpg --export '7808CE96D38B9201' | sudo apt-key add -

以下のようなワーニングがでる。

gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.

鍵をインストールする。

$ gpg --recv-key '4C6E 80B6 374D CD5F 53AB 706A 32D9 C2A8 35ED 066C'
$ gpg --recv-key 'F8E3 3472 5692 2A8A E767 605B 7808 CE96 D38B 9201'

こんな感じのメッセージがでる。

gpg: requesting key xxxxxxx from hkp server keys.gnupg.net
gpg: /home/pi/.gnupg/trustdb.gpg: trustdb created
gpg: key xxxxxxxx: public key "Jean-Francois Dockes <jf@dockes.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

先程のコマンドをもう一度実行する。

$ gpg --export '32D9C2A835ED066C' | sudo apt-key add -
$ gpg --export '7808CE96D38B9201' | sudo apt-key add -

成功すると以下の出力となる。

OK

後は普通にインストールするだけ。

$ sudo apt-get update
$ sudo apt-get install upmpdcli

インストール完了で自動起動設定となる。

$ /etc/init.d/upmpdcli status
● upmpdcli.service - LSB: UPnP Renderer front-end to MPD
   Loaded: loaded (/etc/init.d/upmpdcli)
   Active: active (running) since Fri 2016-08-19 12:52:04 UTC; 32s ago
   CGroup: /system.slice/upmpdcli.service
           └─4780 /usr/bin/upmpdcli -D -c /etc/upmpdcli.conf

MPDのポート番号がデフォルトでセキュリティとか変更してなければインストールしたままの設定で問題ないはず。

再生確認

upmpdcli自体はDMRなのでDMCから操作する。また、スマホ内の音源ファイルをDLNA経由で公開するにはDMSの機能も必要となる。ということでDLNAのDMSとDMCの機能をもつアプリを導入する必要がある。

BubbleUPnP for DLNA/Chromecast(Androidアプリ)

play.google.com

AndroidのDLNAアプリと言えばコチラ。

DMRの設定

f:id:osa030:20160820154440j:plain

画面左上「三」のタップ。

f:id:osa030:20160820154455j:plain

「RENDERER(レンダラー)」はデフォルトで自分(Local Renderer)になっているのでタップ。

f:id:osa030:20160820154459j:plain

選択可能なレンダラーがリスト表示されるので「UpMpd」を選択*1

f:id:osa030:20160820154503j:plain

以下の設定になっていることを確認。

RENDERER UpMpd(Raspberry Pi 3)
LIBRARY Local Media Server(スマホ)

アプリがDMCとなるので、この状態でライブラリから曲を選択して再生すると

f:id:osa030:20160820154507j:plain

Raspberry Pi 3に接続されたDA-10から音が出力される。

ふう。完成だ。

NASが「DMS」として機能するのであれば、LIBRARYの選択候補にNASも表示されるのでLIBRARYにNASを選択しても問題はない。
なお「upmpdcli」はUPnPを解釈するだけであってDLNA認証を受けている訳ではない。そのため、DLNA認証機器との相互接続性が保証されているわけではないので注意してほしい。

*1:upmpdcliの設定ファイルで名称を変更している場合はその名称を選択