Dec 31, 2016
UPnP/DLNAは難しかった(volumioをupnpで繋いだので追記した)
最近はupnp/dlnaをvolumioで使おうと試みていた。
lightMPD/upnpgwがupnpを上手く使って音質向上に成功しているようで、NASをマウントするよりもシステムの負担が少ないのかもしれない。じゃあ手近で使っているvolumioで出来ないか、あわよくば音質改善が見込めないかとか考えた。
そもそも大したスキルがないので上手くいかなかったので、この際なので記録しておく。
追記。
DLNAで音出し : オーディオ日記 http://yseki118.exblog.jp/25998461/
こちらで書かれていることなど読むと、upnpで音質向上とはいかないということが今更分かる。
頭もハサミも使いようだ。身の丈にあったことを無理せずやったほうが効率いいんだろうな、と思うのだった。
1月4日、さらに追記。
次のエントリーにその後の経過を書いた。意外に音は良かったという結末だ。
volumio1.55ならupnpを使えるということらしい。
ラズパイ・オーディオをDLNAネットワークプレーヤーとして活用する - Phile-web
http://www.phileweb.com/review/article/201604/22/2053.html
Raspberry Pi+Volumio をネットワークオーディオプレイヤーとして使う : アジャイル株式会社
http://www.agilegroup.co.jp/technote/volumio-via-network.html
How to start the DLNA Server for Volumio 1.5 on the Pi
https://volumio.org/forum/how-start-the-dlna-server-for-volumio-the-t2401.html
まずvolumio1.55の設定。
webブラウザからアクセスしてDLNA関係の設定をONにする。
試験的に、volumioにはNAS上の適当なフォルダをマウント。
次に、sshでrootでログイン。パスはvolumio。
/etc/minidlna.confを編集。
#media_dir=/var/lib/mpd/music
上記の行のコメントアウトを外す。
dlnaサーバを再起動するのに以下のコマンドを打つ。
service minidlna restart
これでvolumio1.55がDLNA serverになる。
もしもvolumioにマウントしたNASのデータだけをupnpクライアントに認識させたかったら、/etc/minidlna.confを以下のよう編集したらいい。
media_dir=/var/lib/mpd/music/NAS
確認で、http://volumio:8200/ をwebブラウザで表示。
うちのノートPC(Fedora)はこれでは表示できなかったので、IPアドレスに書き換えて打ち込む。
スナップショット画面が以下。

確かにdlna serverとして動いている。
windows PCのWindows Media Playerから、dlnaサーバーとしてvolumioを認識できた。しかしwindowsから音を出すのが目的じゃない。
まずvolumioを2台、upnpでつなぐことができないか考えた。
MPD-to- MPDでやれるはずなんだけど、レンダラー担当のvolumioが、volumio DLNA serverを認識してくれない。というか、認識させる方法がいくら調べても分からない。
MPD as client to an UPnP/DLNA Media Server
https://www.lesbonscomptes.com/pages/mpd-upnp.html
諦めて、QNAP NASの機能を使う。NAS-to-MPDということになるのかな。
まず、LINNが推奨してるというMinimServerを試みる。AppCenterを使って簡単にインストールできる。
ただ、インストールは簡単だったけど扱いがよくわからない。
設定次第で細かいことも出来そうなんだけど、設定の仕方がよくわからないのだ。設定するのに「MinimWatch」というソフトをインストールしないといけない、とまでは分かった。
サーバーソフトの紹介 『MinimServer』言の葉の穴 http://kotonohanoana.com/archives/1536
MinimServer 導入・設定・運用編 言の葉の穴 http://kotonohanoana.com/archives/8121
ただ細かい設定をしなくても、この時点でvolumioからupnpでNASを認識できている。
ncmpcppで表示できていて、操作して音も出せる。
しかし、cue sheetは表示されず、使えない。表示されている音楽ファイルの再生を指示して音が出るまでに若干時間がかかる。不便だな、設定したら便利になるだろうか、などと思っていたら、MinimServerが認識していないflacファイルが少なからずあることに気付いた。原因ははっきりしない。
MinimWatchは触ってもないけど、諦めることにする。
MinimServerを止めて、最初からQNAP NASに入ってるものを使うことにする。
DLNAメディアサーバー、Music Stationが組み込まれていて、追加でMedia Streaming Add-onをインストールしたらNASからデータをvolumioに送ることができる。操作は、NASのMusic Stationにwebブラウザでアクセスして行う。
つまり、webブラウザでNAS上のアプリを操作し、そのアプリがvolumioにデータを送り、volumioがそれを再生すると。
再生中のvolumioにsshでログインしてtopを打ってみたのが下の画像。
Upmpdcliが働いて、volumioがupnpレンダラーとして機能しているのが分る。

意外なことに、Music Stationはcue sheetの中を読み込んで曲別に楽曲管理してくれるようで、これはすごいと思った。しかし残念なのは、1曲再生するつもりで操作したら、その曲が終わったあと次の曲を再生していく。アルバムの2曲目を再生しようとしたら1曲目から再生される。つまり曲別に管理しているようでもデータの扱いはファイルということだ。再生されている曲と、Music Stationに表示されている曲に齟齬が生じる。
実際、ncmpcppでmpdにアクセスしたら、個別の曲じゃなくアルバムのflacファイルを再生してるのが一目瞭然だ。
upnp/dlnaというのはファイル別で楽曲管理するらしく、cue sheetを使うのは相当難しそう。
MinimServer Forum > MinimServer > General > CUE Sheets
http://forum.minimserver.com/archive/index.php?thread-138-3.html
> The UPnP server protocol requires each track to be sent as a complete file.
あれこれするうちに挙動がおかしくなった。これはまずい。負担はかけられないようだ。
他に触ってみて気づいたのは、やはり音が出るまでに若干時間がかかる。10秒前後かな。再生開始の時にノイズが乗ることがある。
あと、Music Stationでライブラリ管理を行うのは難しい。うちはファイルが多すぎるのだ。目的のファイルを探すのに時間がかかりすぎる。検索機能も使いやすいとは言えない。
アートワーク表示こそ出来ないけどスピーディにファイルにアクセスできるncmpcppに馴染んでいたら、かなり使いにくいと感じてしまう。
そんなわけで、ncmpcppでアクセスして、なんとか出来ることはないかとか考える。
ncmpcppでvolumio経由でupnpサーバーの状況を表示しようと思えばできるようなんだけど、うちにはメイン用とバックアップ用、2つのNASがあるんだけど、NASによってncmpcppで表示できたりできなかったりして理由がよくわからないし、表示できても全てのファイルを網羅できていなかったりして、いろいろわけが分からなかった。
しかし、片方のNASのupnpサーバーを停止してみたら、他のNASのupnpサーバーが機能し始めて?volumioとも繋がった。
ここで初めて気付いたのが、一つのネットワークにupnpサーバーは一つじゃないといけないのかな?ってことだ。よくわからないけど。
ここで興味本位で、ncmpcppのUPNPブラウザ画面からアップデートをかけてみたら(uキーを押すだけ)うちにあるNAS?があれもこれも表示されてきた。これって全部、upnpサーバー?
うちには音楽用のNAS以外に古くからあるファイルサーバーがいくつか動いている。それらが表示されているし他にもネットワーク上のデバイスがいくつか、、、

このときNASでは何をしてるかというとmysqldというデーモンがCPUの70%を食って大忙しだ。webデータベースを作るMySQLのデーモンらしい。一方でvolumioはといえば、topコマンドを打ってみたら何もしてないようだ。データベースの完成待ちという所か。
これが、えらく時間がかかる。
mpdがデータベースを作るのにも時間がかかるが、多分、数10倍以上かかっている。
あまりに時間がかかるので、ncmpcpp上で唯一表示された[Beethoven]のフォルダの中を見てみたら下のスキャン画像のような状況! 同一ファイルのデータを重複して繰り返し取り込んでいるらしい。。。

とりあえず、volumioをシャットダウン。
速やかにmysqldは仕事を止めて、NASのCPU使用率は通常レベルに戻った。やれやれだ、、、
MinimWatchをインストールしてMinimServerで粘ったほうが良かったかな、、、
volumioでupnpは、うちではハードルが高いかな。
cue sheetも使えないし、操作は手間がいるし、当面は素直にvolumioはNASをマウントして使うことにした。
しかし、あれこれやるうちに新たな発見があった。
うちでは複数のmpdをひとつのノートPCで扱うため、ポートの設定を各々のmpdで変えていた。
ノートPC上に複数のアカウントを作り、各々にmpdサーバーを割り振って、端末のウインドウを開いてアカウントを変えてncmpcppを立ち上げて使う。複数のウィンドウにアカウントを割り振ることで、同時に複数のmpdを操作できる。
mpdとncmpcppのポート設定を合わせて書き換えて使う。デフォルトは6600だが、これを6601、6602、などと変えている。つまり、IPアドレスとport番号をセットにして設定している。
下の図のような感じ。

書き換えていなかったら、以前は上記のような運用は出来なかった。混線するとでもいうのか、ncmpcppとmpdが繋がらなくなるのだ。
つまり、ポート設定を書き換えなければ、ひとつのPCで同時に使えるmpdは1つということで、そういうものなんだと理解をしていた。
ポートを変えるとvolumioはwebブラウザからのアクセスが出来なくなるが仕方ない。大して困らないし。
ところが、いつの間にか、ポートが6600のままで同時に複数のmpdを操作出来るようになっていた。
そもそもIPアドレスが異なるのに、ポートも変えないと繋がらないというのは、何かがおかしいのかもしれない。
気付いたきっかけは、volumioを2台、upnpでつないでみようとしたことだ。
volumioをupnpで継ぐにはUpmpdcliを動かしておく必要があり、mpdのポート6600を変更したら、これが動かなくなるので変えられない。ひとつのネットワークにポート6600のvolumioが2つ存在することになる。
ncmpcppからアクセスできなくなるだろうと思っていたら、問題なく出来てしまった。
以前とは何が変わったかというと、クライアントPCのOSが変わった。以前はVine Linuxだったが現在はFedoraとDebianを使っている。
ポートが6600のままでいいなら、設定などで余分な手間が要らなくなるし、volumioならwebブラウザからのアクセスも可能になる。
新しい知見があったので、やって良かったということかな。
追記。
イラストは下記のサイトのものを加工して使わせていただいています。
GATAG|フリー素材集 壱 http://01.gatag.net/0006178-free-illustraition/
Publicdomainvectors.org http://publicdomainvectors.org/ja/tag/%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2
明けましておめでとうございます。元旦に追記。
なんやかんやでvolumio2つをupnpで繋げてしまった。
音質はノイズが多くピュアオーディオには無理。スキルがないからかもしれないけど。
せっかくなので記録しておく。
1月4日、追記。
エントリの上のほうにも追記したけど、実は意外に音は良かった。イヤホンだと以前よりも悪くなったと思ったんだけどな、、、
次のエントリーにその後の経過を書いた。
まず、ras pi、volumioを2つ用意。両方、/etc/minidlna.confを編集、このエントリーの最初のほうに書いた通り。
1つをサーバーに、もう1つをレンダラーに割り当てる。
サーバーの設定は、UPNP\DLNA IndexingとDLNA Library ServerをONに。実は、UPNP\DLNA IndexingはOFFでもいいのかもしれないけど、十分な確認が出来ていない。
レンダラーの設定は、UPNP ControlとUPNP\DLNA IndexingをONに。


webブラウザにはUPNPは表示されないようなので、これ以上の操作はできない。
ncmpcppからレンダラーのvolumioにアクセスしたらUPNPが表示されるので、そこに入るとUPNPサーバーのvolumioで設定された音源が表示される。

あとは階層をたどって表示される音源を選択し再生を指示したら、レンダラーのvolumioから音が出る。
問題は、前述したとおり音にノイズが多いことと、インデックスの更新に手間がかかること。
本来、ファイルが追加されたら自動的にインデックス(データベース)が更新して欲しいんだけど、そうはいかないらしい。自動じゃないのはいいとして、手順がひどく面倒なのだ。
まず、miniDLNAの更新で以下のコマンドをsshから打ち込み。
$ sudo minidlna -R
$ sudo service minidlna restart
更にncmpcppから、レンダラーのmpdのdatabase更新をかける必要がある。以下を参考にした。
Why is the minidlna database not being refreshed? http://stackoverflow.com/questions/5180409/why-is-the-minidlna-database-not-being-refreshed
日常的に使用するのは無理じゃないかなという感想だ。
writeback message:
Caution!!!
Now, Anyone cannot post a comment.