NetBSD 7.0では、NetBSDとUPnP/DLNAクライアントとしてXBMC 10.1、Banshee 2.6.1、Rhythmbox 3.0.1、Totem 2.32.0、VLC 1.1.13を使って視聴確認してみることにしました。
ただ、XBMCやBansheeのバイナリはなく、xbmc 10.1、banshee 2.6.1がwipにはあるものの、コンパイルしても素直には通らず、深追いもしていないので未検証です。
Rhythmbox 3.0.1においては、別途、リポジトリからGriloパッケージやGriloプラグインをインストールの上、Griloメディアブラウザープラグインを有効にしたところ、MiniDLNAは認識でき、中身も表示されるものの、視聴できず、コーデック類が揃っていれば、再生・視聴でき、[MediaTomb]は項目としては表示されているものの、中身が表示されず、視聴不可。(Fedoraでクライアントとして起動させていたKodiさえもUPnP/DLNAサーバとして認識されました。。。が、サーバとしてファイルを用意していたわけでもない為、あれば認識するのかどうかは未確認。)
Totem 2.32.0は、別途、net/coherenceパッケージをmake installの上、coherence DLNA/UPnP clientプラグインを有効に(しようとするとエラーが表示され)できず、視聴不可。
困ったときは、開発元を辿るのが筋かとThe Totem DLNA/UPnP pluginを見るとTotemのcoherenceプラグインは、DBusを使う模様でDBus用のサービスファイルを作成する必要があると書いてあります。
NetBSDだと/usr/pkg/share/dbus-1/servicesの下に"org.Coherence.service"といったようなファイルをこのような内容で作成すればよさそう。
再度、Totemを起動、"D-Busサービス"と"コヒーレンスDLNA/UPnPクライアント"プラグインを有効にしようとすると、まだ、後者を有効にすることができません。(が、後述のパッケージの追加で後に有効にすることが出来ることになる。)
そうこうしている中、後述のようにSamba共有パス上のメディアファイルならどうかとTotemでも試してみたところ、.oggは再生できるが、.mp3はコーデックがないといわれ、.mp4(AAC,h.264)ファイルは、音声は出力されるが映像が再生できず、Totemのスクリーンショット機能で撮影すると正常に写っているといった状況に。
ということは、コーデック含むパッケージ不足かと確認中、ほぼ入っているように見える中、FedoraのケースとしてVideo Codecs~DVD and Video PlayersあたりにGstreamer、FFMpeg、DVD再生のそれぞれに必要なパッケージがわかりやすく書かれていて、CentOSのケースでは、例えば、このようなページが結構あって、見ると他のNetBSDマシンには入っていたffmpegthumbsと何れのマシンにも入っていなかったlsdvdパッケージの2つがなかったのでインストール。。。
なんてやりつつ、ふとTotemの[編集]から[プラグイン]を確認してみると、これまで入っていたコーデック類含むパッケージに加えて、先の2つの何れか、または両方のパッケージで条件が満たされ、先に作成したDBusサービスファイルも機能するようになったようで、これまでエラーでチェックできなかった[コヒーレンスDLNA/UPnP クライアント]オプションのチェックが、ONになっていました。。。
そこで"プロパティ"や"YouTube"などを選択できるセレクトボックスを確認すると"コヒーレンス DLNA/UPnPクライアント"が選択肢として表示されており、選択するとMediaTomb、MiniDLNA共に認識、音源も動画も表示、選択、再生可能となっていました、が、その一方で、まだ、.oggは再生できるも.mp3は再生できず、動画も音声のみで映像は出ない。。。
先の"DVD and Video Players"にあったlibdvdcssが必要なんだろうか?バイナリはないのでmultimedia/libdvdcssをmake installしてみるとLIBDVDCSS_MASTER_SITE変数を/etc/mk.confに追記しろよといわれるので今回はvideolanからダウンロードさせて頂くべく設定後、改めてmake install、NetBSDマシン2台の内、1台は、libdvdcssを入れる前はmp4の再生で映像だけでなく音声も出ませんでしたが、入れたら音声は出るように。。。ただ、先の1台はlibdvdcssは入っていませんが同じ状況。。。
更にリポジトリを眺めていると。。。meta-pkgs/gstreamer0.10-pluginsなるものを発見。。。コンパイルしてみると。。。意外と時間がかかる。。。途中、インストール済みパッケージとの干渉により削除したものもありますが、完了。。。
Totem起動、mp4再生。。。おお、映像出た!やっとだよ。。。メタパッケージだもん、必要なの全部入れてくれる為にあるんだよね。。。それだよ求めていたのは。。。(最初から気づけ?。。。というか今度は逆に.oggファイルが認識されず再生できなくなっている気がする。。。しかもDLNAクライアントとしてのみ、Samba共有上は.ogg/.mp3/.mp4とも可。。。なんで?)
ちょっと端折ってますが、pkg_tarupしてみるとmeta-pkgs/gstreamer0.10-pluginsには、なんと117個ものパッケージが依存関係にありました。
別のNetBSDマシンでも試してみましたが、やはり、Totem 2.32.0、net/coherenceパッケージ、meta-pkgs/gstreamer0.10-pluginsパッケージのインストール、DBusサービスファイルを作成、Totemの[編集(E)] > [プラグイン]で"D-Busサービス"と"コヒーレンスDLNA/UPnPクライアント"プラグインを有効にすれば、NetBSD上のTotem 2.32.0でもDLNAクライアントとして機能することがわかりました。(なぜか、.oggはダメだけど.mp3/.mp4はいける。)
と思ったら、検証した2台のマシンのNetBSDでは、たまたま条件が整ったようで、DNLAクライアントとしてTotemで視聴するには、他にも必要なパッケージがあるようです。
と言うのも、ノートのNetBSDを上書きクリーンインストールして再設定することにした関係で、この手順を試したところ、この条件だけでは、Totemの[編集(E)] > [プラグイン]で"コヒーレンスDLNA/UPnPクライアント"プラグインを有効にできませんでした。("D-Busサービス"はDBusファイルを作成、dbusを起動した時点で有効にできる模様でチェック可能、また、DLNAサーバ内の音楽・動画ファイルをSamba共有としてマウントした場合は、先の条件だけで音声・映像ともに再生可能にはなっています。)
特定はできそうにないですし、有効にできている他のマシンと比較してみたところで数も多いのでコーデック類を中心に片っ端からインストールしてみています。
特定とまで言えるかどうかですが、後にgst-plugins1-good、gst-plugins1-ugly、lsdvd、py27-dbus、dbus-python-common、eggdbusをインストールしたところ、Totemのプラグイン画面で[D-Busサービス]、[コヒーレンスDLNA/UPnPクライアント]を選択することができ、DLNAサーバを検出するところまではいきました。(再生・視聴についてはコーデック類次第)
参照したサイトの情報などからもlsdvd、gstreamerのgood、bad、uglyプラグイン(NetBSDにはgst-plugins0.10-?*とgst-plugins1-?*があって内、先の2つがなかった)、libdvdnav、libdvdread、libdvdplayは必要なことはわかっており、完全なインストール漏れ、更にTotemはPythonに依存、NetBSDでも複数バージョンがある中、py27系に、また、dbusにも依存していたことからpy27-dbus、dbus-python-commonあたりに察しをつけましたが、eggdbusは要らないかもしれません。
まだ、コーデック類が不足していますが、NetBSD 7.0においてTotem 2.32.0はDLNAクライアントとして使えることを再確認・再現できました。
その後、いよいよHDDから以前クローニング済みだったSSDに換装、今日になってNetBSDでTotemを起動したところ、[コヒーレンスDLNA/UPnPクライアント]プラグインは表示されるものの、有効にできない旨のポップアップが表示され、チェックできなかったので対処することに。
原因がわからなかった為、共にあらゆるキーワードでgrepしつつ、pkgin avでリポジトリ上、pkgin lsでインストール済みパッケージを見比べながら、ないものをインストールしまくりましたが、相変わらず。
もちろん、本家のWiki通り、/usr/pkg/share/dbus-1/services/org.Coherence.serviceファイルは作ってあります。
試しにコマンドを端末(ターミナル)上で、org.Coherence.serviceファイルの[Exec]部のコマンドを実行してみると一連の表示の中に[service_identity]や[pyOpenSSL]がどうのこうのと書いてあり、必須というわけでもなさげも、それってもしや?と思い、pkgin av | grep -i service_identityとしてみるとpy??-service_identityパッケージがある。。。その内、当該環境で使っているらしきpy27系のpy27-service_identityパッケージをインストール。
その後、いろいろやってみた結果、気づけば、なんと、これの[Exec]部のコマンドを端末上で、しかも(バックグラウンドだとダメだったので)フォアグラウンドで実行、dbusを再起動(/etc/rc.d/dbus restart)、Totemも起動済みならTotemも再起動すれば、[編集] > [プラグイン]を開いて[コヒーレンスDLNA/UPnPクライアント]にチェックでき、DLNAクライアントとして機能することが判明。。。ということは、org.Coherence.service内のコマンドが実行されていない。。。(それもそのはず。。。後述の誤記が原因。。。)
このままだと毎回、Totemを起動する度に「コヒーレンスDLNA/UPnPクライアントプラグインを有効にできない」旨のポップアップが表示され、端末からコマンドをフォアグラウンドで実行してdbus再起動。。。しなくてはなりませんが、以前できていたのに、なんで?と思いつつ、/etc/rc.confに書いてできたとしてもdbusより先に実行されるのかについては半ば運まかせ感があるし、cronに登録するとしたら、dbusもそこで起動すればよいのでしょうが、それもなんとなく邪道な気もするし。。。
そこで/usr/pkg/share/dbus-1/sevices/にある他のファイルと比較してみたところ。。。なんと[D-BUS Service]の部分が、[D-Bus Service]と一部小文字になっていて修正したらエラーも出ることなく、[コヒーレンスDLNA/UPnPクライアント]プラグインにチェックを入れることができるようになりました。
この原因は、自身で書いたこのページ上で当初、プラグイン名と混同し、ページ編集時、本家からコピーではなく、手入力してしまったか何かで/usr/pkg/share/dbus-1/sevices/org.Coherence.serviceでこの大文字・小文字の記載ミスがあり、これを含め、コピペしたからでした。。。これまで参照し、ハマった方がいらしたらすみませんでした。。。
尚、Rhythmboxも同様に以前できていたはずのDLNAクライアントとして、うまく機能しませんでしたが、Totemの対処をする内、気づけば機能するようになっていました。
VLCは、比較的最近までNetBSDの公式リポジトリ上には、バージョン1.1.13、2.0.9、2.2.1があり、後に1.1.13が削除されたものの、検証環境では、なぜか、1.1.13以外は、バイナリもmake installしたものもクラッシュして落ちるので使えずじまい、1.1.13には、[ユニバーサルプラグ & プレイ]の表示がなく、少なくとも2.2.1には、あるのですが、2.2.1は、これを選択した途端、クラッシュして落ちるので未検証です。
ただ、過去に作成したNetBSD 6.1.5をインストールした仮想マシンがあり、それで試してみたところインストールされていたVLCは、2.0.9で[ローカルネットワーク] > [ユニバーサルプラグ&プレイ]を選択したところ、MediaTomb、MiniDLNAともに認識され、再生されました(というか、なぜか音声出力は確認できなったものの、再生するとプログレスバーの進捗は表示されました)。
よって今のところ、NetBSDでは、VLC 2.0.9であれば。。。と思いきや、別のマシンに入っているNetBSD 7.0でVLC 2.0.9をmake installしてみたらプロセスは起動しているもののVLCの管理画面が表示されず、VLC 2.2.1 Terry Pratchett(Weathermax)をmake installの上、試したところ、同様にしてMediaTomb、MiniDLNAともに認識され、音楽・動画ファイル何れも表示されますが、再生ボタンを押しても再生されず、ファイルをダブルクリックするとクラッシュしてしまい、機能するとは言えない状況に。
(DebianのVLC 2.2.1やFedoraのVLC 2.2.2では問題ないので自身のシステム環境保全不備含めNetBSD固有と思われる。)
ちなみに当然と言えば、当然ですが、別途インストールしてみたGUPnP AVコントロールポイント(gupnp-av-cp 0.8.9)という開発用のソフトウェアでも[再生]ボタンをクリックしても再生はできないものの、MediaTomb、MiniDLNA共にRaspberry Piで公開しているものが中身まで含めてちゃんと表示されました。
というわけでNetBSD 7.0でNetBSDとUPnP/DLNAクライアントを使うなら今のところ、Totem 2.32.0 Rhythmbox 3.0.1か、Totem 2.32.0、動画を観るならTotem一択(VLC 2.0.9か2.2.1が正常に使える環境なら2択)かな、音楽だけならTotemよりRhythmboxがよいかと。
NetBSDにおいてUPnP/DLNAサーバ・クライアントとは別にそれらのオーディオファイルがUPnP/DLNAサーバ指定ディレクトリ上を含めSamba共有パス上にあった場合の再生・視聴可能性を探ってみました。
Samba共有パス上のメディアファイルについては、NetBSD 7では、マウント後パスを指定する方法でTotem 2.32.0、VLC 1.1.13、Rhythmbox 3.0.1、LXMusic 0.4.6、Exaile 0.2.14、GQmpeg 0.91.1を使って視聴確認してみることにしました。
NetBSD 7.0上のマルチメディアプレイヤーTotem 2.32.0では、Samba共有パス上にある音楽・映像といったオーディオファイルの再生は可能なものの、.oggは再生できる一方、.mp3はコーデックがないといわれ、.mp4(AAC,h.264)ファイルは、コーデックが足りないのか音声は出力されますが映像が再生できない、他方、Totemのスクリーンショット機能で撮影するとちゃんと写るという状況でしたが、前述のUPnP/DLNAサーバのファイル同様、gsteamer0.10-pluginsのインストールにより動画の映像・音声と音楽ファイル共に再生・視聴できるようになりました。
NetBSD 7.0上のミュージックプレイヤーLXMusic 0.4.6、GQmpeg 0.91.1では、Samba共有パス上にある音楽ファイル、Exaile 0.2.14では、音楽・動画の音声の再生が可能です。
尚、NetBSDにおいてGQmpeg 0.91.1では、日本語を含むディレクトリ・ファイル名の場合、ファイル選択時には文字化けしているものの、プレイリストに追加、再生時は正常に日本語が表示され、再生もできる一方、Exaile 0.2.14とLXMusic 0.4.6ではディレクトリやファイル名が日本語だとファイルリストにすら表示されないので選択できず、日本語表記だったものを英語表記にリネームした場合、Exaile 0.2.14ではそのまま表示されますが、LXMusic 0.4.6については再生には影響ないものの、文字コードが異なっていたということなのか、スペースを入れるとURLエンコード・デコード、Javascriptのencode/decodeのように空白が+記号に変換されてしまいます。(CajaやPCManFMなどのファイルマネージャ上は、何事もなく正常に表示される。)
ただ、LXMusic 0.4.6、GQmpeg 0.91.1、Exaile 0.2.14何れのプレイヤーも(サーバにはローカルのファイル群をrsyncしているので)ローカルにある同じファイルを指定してみると日本語タイトルのファイルでも文字化けすることなく正常に表示され、プレイリストにも追加でき、再生もできるのでローカルではOSに合わせるが、参照するシステム設定のない?ネットワーク上では、ソフトウェア内部で保持している?文字コードと異なる?、それともネットワークかSamba?でもFedoraやDebian上では問題ない為、Sambaではなさげ、ネットワークだとしても自身の環境不備含め、NetBSDのシステム環境に起因するのか?
試しにNetBSD上のLXMusic 0.4.6において[File] > [Preferences]の[Misc]タブで"Default ID3 V1 Encoding:"の文字コードを"ISO8859-1"から"UTF-8"に変更してみたところ、全く表示されなかった日本語文字を含むファイルリストが、文字化けしつつも表示されるようになり、追加するとプレイリスト上は文字化けも解消、逆に英語表記にリネームしたものは、ファイル選択時のリスト上は空白は空白のまま表示されていますが、プレイリスト上は空白がプラス記号に変換されて表示されるものの、追加、再生することができました。
一応、FedoraのLXMusic 0.4.7とDebianのLXMusic 0.4.6の"Default ID3 V1 Encoding:"値を確認してみると前者が"未設定(カラ)"で後者はNetBSD上のLXMusic 0.4.6同様、"ISO8859-1"でしたが、UTF-8にする必要すらなく何れも問題なく表示、追加、再生されています。
ちなみにNetBSD上のExaile 0.2.14でも[ファイル(F)]メニューから[ファイルを開く(O)]ではなく、[フォルダのインポート(I)]を選び、フォルダを選択すると文字化けはしているもののファイルリストは表示されますが、[インポート終了後、現在のプレイリストに追加する]にチェックを入れてもプレイリストには表示されません。
一方、FedoraのExaile 3.4.5では、指定時のファイルリスト内もプレイリスト追加後も文字化けもなく、正常に機能しています。
NetBSD上のExaileに関しては、初期の頃のExaile 0.2.14は、周辺の標準化技術含め、文字コードをうまく解消できておらず、内部での実装上、時が経過した今でも古いバージョンでは、これを解消できない可能性がある?
しかし、少なくともLXMusicの方は、NetBSDもDebianも同じバージョン、Fedoraもマイナーバージョンの枝番が1つしか違わないことからしてソフトウェア自体の問題ではなさそう、Debian/FedoraのLXMusicの"Default ID3 V1 Encoding:"値を見ると、この値とは関係ないところで文字コードの相違が解消されている模様であることからするとOS・ディストロ側で対処している?何れもコンパイルオプションはないみたいだし。。。環境変数とかネットワークの設定でなんとかなるとか?それが解決したとするとバージョンの古いExaileでも解消される可能性もある?
更にNetBSD 7.0上のVLCメディアプレイヤー1.1.13では、マウントポイントを指定しようとするとフリーズ、マシンを再起動せざるを得ない状況となり、Samba共有パス上にある音楽・動画ファイルともに再生・視聴できませんでした。
というわけでNetBSD 7.0においてSamba共有パス上の動画(映像&音声)再生・視聴についてはTotem 2.32.0、音楽再生は、Rhythmbox 3.0.1、更にファイルリストもしくは、プレイリスト上で多バイト文字を含むファイル名は文字化けするものの、GQmpeg 0.91.1、LXMusic 0.4.6なら再生可能、多バイト文字を使わない基本英語名のディレクトリ・ファイル名に限っては、Exaile 0.2.14でも再生できました。
ちなみにLXMusicは、LXDE共々pkgsrc-wipに収録されていたものをコンパイル(ちなみにPCManFMは本家からダウンロード・コンパイル)したものです。
NetBSD 7.0、Samba共有パス上の動画については、MPlayer/MPlayer2ベースのmpv-0.16.1、音楽再生については、GNOME2用軽量音楽プレイヤーliteamp-0.2.4.2nb50でも再生・視聴できました。