プライバシーポリシーとサポート情報 - UPnP音楽再生指示2018年04月28日 08:15

本アプリについて (About this app)

このアプリは、UPnP(若しくはDLNA)の仕組みを利用して、楽曲を管理するサーバ(コンテンツのディレクトリ)上のプレイリストについて、音楽を再生する機器(メディアレンダラー)に再生を指示するアプリです。これにより、Windows10が動作する機器(主にmobileを想定)を一種のリモコンのように利用することができます。

※2018年4月28日更新
・楽曲を管理するサーバのCODECの判別処理で、MP3以外が判別できていないことがあったので、修正。Twonkyの更新に伴い、返却される曲属性の変更に追随できていませんでした。

※Windows10のデスクトップ版のエクスプローラでは、楽曲を管理するサーバのブラウジングや、楽曲ファイルの「デバイスキャスト」が利用できますが、これに相当する機能を提供します。
※なお、利用には制約が多く、実際に活用できるのは、foobar2000にUPnPコンポーネントを導入した環境があり、音楽フォーマットに主にFLACかMP3を利用する方に限られると思います。

システム構成例

利用環境)Windows10 mobile機器およびタブレットで利用する場合、Wifiを用い、UPnP機器が接続されているネットワークに接続する必要があります。

使い方)最初に、UPnPサーバの検索で、楽曲を管理するサーバと音楽を再生するサーバを選びます。次に、プレイリストを選びます。ランダム再生(初期状態はオフ)と連続再生(初期状態はオン)の設定をした後、再生ボタンを押して再生を始めます。

軽めのスペックのWindows10 mobileの機器での動作を想定し、本アプリの機能は限定的です。

1)プレイリストの再生しかしません。アルバムやフォルダを選んで再生することは出来ません。あらかじめ、プレイリストを用意してください。
2)プレイリストは、コンテンツのディレクトリの最上位(ルート)か、ルート直下のMusicの下のものしか検索しません。
3)プレイリスト内の楽曲は、再生中のものしか表示しません。

楽曲を管理するサーバには、以下のものなどがあります。ただし、TwonkyMediaサーバのプレイリストは、自由に編集が出来ません。実際の使用では、TwonkyMediaサーバ上の楽曲を参照して、foobar2000にプレイリストを作成する等になります。

・PCで稼働するfoobar2000に「UPnP/DLNA Renderer,Server,Control Point」のコンポーネントを追加設定したもの
・NASなどにセットアップされたTwonkyMediaサーバ

音楽を再生する機器には、以下のものなどがあります。

・PCで稼働するfoobar2000に「UPnP/DLNA Renderer,Server,Control Point」のコンポーネントを追加設定したもの(楽曲を管理するサーバと兼ねる)
・ネットワーク上の楽曲を再生する機能を持ったAVアンプ

楽曲のフォーマットは、MP3とFLACでの動作を確認していますが、楽曲を管理するサーバと音楽を再生する機器の組み合わせによって、再生の可否は変わります。

プライバシーポリシー (Privacy statement)

UPnP音楽再生指示
対象アプリ:UPnP音楽再生指示

本アプリの製作者であるThe Fourteenth Lab (第十四工房)は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

あらかじめのおことわり (FAQ)

1)アプリの説明で「一種のリモコンのように」と記しましたが、本アプリでは、1曲の再生が終わる都度、次の曲の再生を指示するので、再生中はアプリがずっと動作している必要があります。iOSやAndroidでは、foobar2000などに専用のアドオンを入れて完全にリモコンのように使えるアプリもあるようですが、それとは異なります。

2)動作確認で使用したfoobar2000のバージョンは以下の通りです。
foobar2000 v1.3.9 + UPnP/DLNA Renderer, Server, Control Point 0.99.49
foobar2000上のMP3とFLACを収めたfoobar2000のプレイリストの再生:○
TwonkyMedia上のMP3とFLACを収めたfoobar2000のプレイリストの再生:○

3)動作確認で使用したAVアンプは、以下の通りです。
YAMAHA製 RX-V2067
foobar2000上のMP3とWMAを収めたfoobar2000のプレイリストの再生:○

4)動作確認で試用したTwonkyMediaサーバは、以下の通りです。
TwonkyServer 8.1.1
QNAP 4.2.0上で稼働

5)UPnPサーバの検索ボタンを押したとき、サーバの情報の一部が空白のままの時は、もう一度、検索ボタンを押してください。

6)音楽を再生する機器を選んだとき、左下に緑色のスピーカーボタンが表示されます。ミュートボタンを押すとミュート表示に変わります。その隣の緑の数字は、ボリューム値です。

7)プレイリストを選んだとき、タイトルの左に緑色の音符が表示されます。下段の左側の数字は曲(トラック)数、右側は合計の再生時間を示します。曲によっては、再生時間が0になっている場合があるので、実際の再生時間はこの数字より長い場合があります。

8)プレイリストに収容する曲は、楽曲を管理するサーバに問い合わせて得られた曲のうち、ProtocolInfo属性に「DLNA,ORG_PN」を含む「res」エントリ(リソース)からの情報をもとにしています。曲によっては、複数のresエントリを含む場合があり、本条件で絞り込みます。

9)楽曲を管理するサーバが曲の長さを把握していない場合、曲の長さは0で表示されます。この曲を再生すると、本アプリは5秒おきに再生状態を問い合わせ、再生終了を確認すると次の曲に移ります。タイミングの問題によっては、確認がうまくいかず、再生が始まってすぐに次の曲に移ることがあります。

10)初期状態では、連続再生はオン、シャッフル再生はオフです。現在の状態は、画面一番下の、再生曲の情報欄に緑色で表示されます。

11)音楽を再生していないときにシャッフル再生をオンにすると、プレイリスト内の曲を並び替えます。シャッフル再生では、ランダム順に全曲を再生します。音楽を再生しているときにシャッフル再生をオンにすると、次の曲から、再生前に設定したランダム順に従い再生します。

12)連続再生がオン、シャッフル再生がオンの時、全曲の再生が終わると、プレイリスト内の曲を並び替えます。

13)再生中に、別の再生機器を選んだり、別のプレイリストを選ぶと、再生を止めます。

14)プレイリスト中に、再生機器が再生できない曲がある場合、エラーにはならず、次の曲に移ります。

15)UPnPサーバ一覧の各サーバの一番上の英数字の並びは、機器のIDです。

16)プレイリスト一覧の各プレイリストの一番上の英数字の並びは、楽曲を管理するサーバ内部で割り振られたプレイリストのIDです。

17)(削除)「試用」として、バックグラウンド再生を用意していますが、利用する意味はあまりありません。サスペンド時の挙動や、再生時の負荷を確認しましたが、通常再生と変わりません。
※本機能は、2017年10月の更新で廃止しました。

18)「試用」として、UPnP機器の機能確認を用意しました。UPnP仕様書記載の機能のうち、実装したものの使わないものも多くありましたが、後学のため、機器の状態変更を伴わないものを一覧で確認できるようにしたものです。

19)アプリ使用中にサーバを再起動すると、内部的にはサーバの識別情報が更新され、サーバとの接続がエラーになります。接続エラーのダイアログが表示されたら、サーバの検索からやり直してください。※2017年10月更新。

無線ルータ(Aterm)をつなぐとUPnP(DLNA)サーバが見えなくなる2017年09月02日 12:03

LANスイッチにAterm WG1200HP(WiFiルータ)をブリッジモードでつなぐと、同じスイッチに接続しているTwonkyやfoobar2000などのUPnP(DLNA)サーバが検出できない事象が頻繁に発生する。更改前のバッファローのWiFiルータでは、発生していなかった。

こうなると、自作の「UPnP音楽再生指示」などが用をなさない。foobar2000のUPnP BrowserからもTwonkyなどが見えなくなる。

※ブリッジモードにするのは、LANスイッチとWiFiネットワークを同一ネットワークにして、UPnP(DLNA)サーバをWiFi経由で利用できるようにするため。

原因切り分けのために、試しにAtermをLANスイッチから外してみると、サーバ検出ができるようになる。やはり、Atermに何らかの問題がある様子。

Aterm UPnP設定

疑わしい設定を探してみると、基本設定では、UPnP機能が標準でオンになっている。ブリッジモードでは、用をなさない機能だが、オフにしてみる。一時的に改善したように思われたが、しばらくすると検出できない状況が再発する。

Aterm LAN設定

WANは使用していないので、LAN側設定をみてみる。標準でオンになっているのは、DHCPサーバとLAN側Pause機能。DHCPサーバは、ブリッジモードでは動かないので、関わりがあるとすれば後者。802.3xのフロー制御であろうか。念のため、オフにしてみる。あわせて、スイッチ側でも、Atermを接続しているポートを再起動(Ciscoのshutdown, no shutdownコマンド)してみる。

どうも、これで、UPnP(DLNA)サーバが検出できない状況が改善された様子。UPnPのマルチキャストパケットをAtermのLANスイッチが受信すると、バッファオーバーフローの合図を出してしまうのだろうか。少し様子を見る。

P.S.
LAN側Pause機能をオフにしてしばらく様子を見たが、数日でUPnP(DLNA)サーバが見つからない事象が再発。Atermを接続しているLANポートを閉じると症状が治まる点は変わらない。いろいろ試行錯誤したところ、Atermの動作モードをローカルルータモードにすると、症状が治まる。理由はすぐには思いつかないが、内部の実装の相違ということだろうか。

UPnP音楽再生指示、更新2016年08月09日 20:09


UPnP音楽再生指示

Windowsストアアプリの「UPnP音楽再生指示」を更新しました。UPnP(ないしはDLNA)の仕組みを用いて、再生機能のあるサーバに対して、楽曲管理サーバにある楽曲の再生を指示するアプリです。更新内容を示します。

・「一時停止」まわりの不具合を修正しました。

・音量調整が、ボタンでは操作しにくかったので、スライダーに変更しました。

・楽曲を管理するサーバと、楽曲を再生するサーバを選択し、プレイリストを選択しない状態で、「再生」、「一時停止」、「停止」、「音量調整」のUPnPのコマンドを送信するようにしました。

これにより、裏技になりますが、例えば、foobar2000自身で再生中のプレイリストについて、これらの機能による制御ができるようになります。ただし、一度、「停止」をしてしまうと、停止前と同じプレイリストを本アプリから再開することはできなくなります。

・上記の副作用として、例えばfoobar2000の再生が「一時停止」の状態であるとき、本アプリで接続して、「再生」を指示すると、アプリで選んだ楽曲ではなく、一時停止されている楽曲が再生されます。この場合は、一度、「停止」を指示してから、改めて「再生」してください。

UPnP音楽再生指示 - アプリリリース2016年03月28日 12:37


UPnP音楽再生指示

「UPnP音楽再生指示」の名称で、ユニバーサルWindowsアプリをリリース。Windows10 mobileの機器をfoobar2000のリモコンとして使えないか試みてみたもの。

iOSやAndroidでは、MonkeyMateなど、スマートフォンをリモコン風に使うアプリがあるが、調べてみると、専用のアドオンを用いている。標準的な機能で、と考えてみると、UPnP(またはDLNA)となる。

仕様の中に、Playlistを扱うものがあり、これが使えればリモコンに近くなるが、手元の機器では未サポート。サポートされている機能を調べていくと、ほぼ最小限のところでとなり、再生中はアプリを起動したままにしなくてはならなくなった。PCを立ち上げなくても再生できる、軽いアプリで済む、とは言えるが、リモコンには、まだ、ちょっと距離がある。

また、UPnP対応機器とはいっても、それぞれの差異が大きい。手元の3機種だけでも、違いを吸収するのにそこそこ苦労。foobar2000以外の環境では、なかなか使いどころが難しいかも。

※アプリのページ

開発時間は、130時間ほど。最初、DeviceInformationクラスを活用しようと試行錯誤に20時間ほど。デスクトップとモバイルの実装の相違から、それが利用できないとわかり、UPnPの仕様を実装しようと、機器検出のSSDPまわりに10時間ほど。検出した機器とのSOAP通信とXML操作まわりに20時間ほど。UPnPの各種コマンドの実装に30時間ほど。機器ごとに実装状況が異なり、差異を確認しながらの作業。バックグラウンドまわりに10時間ほど。結局、30~40時間は回り道。

SOAPまわりは、HttpClientとXDocumentのクラスが用意されていて、思いのほか便利。UPnPの機器は比較的手近に用意しやすいので、SOAPの練習台としてはなかなか便利と気づく。

バックグラウンド処理は、バックグラウンドの音楽再生の要領で、mobile機器の電源をオフにしても動かし続けられるかと期待するも、そうはいかず。バックグラウンド音楽再生は、OS組み込みのBackgroundMusicPlayerだからできること(もう一つは、Downloader)。自前のアプリでは、そうはいかないと、作ってから気づく。自由に作れると、バッテリ消耗のアプリが乱立することを危惧してのことと思うが、将来に期待。