DLNA/uPnP を満喫する :: miniDLNA編 家庭内オンデマンドサーバー
ReadyMedia(旧姓minidlna) 改定版 2020年秋改稿
 |
android/Nexus6から、ネットワーク上のDLNAサーバー/レンダラーをブラウズしてみるの図。debianロゴふたつがminiDLNAです。青がUMSです。
|
以下の過去稿ですがほぼそのまま現在も使えます。 Version 1.2.1を加味して一部加筆修正しました。特に大きな変更はありません。最近当方では、
archLinux系(antergos/manjaro)でも使い始めました。ubuntu18.04(beta1)でも同じように設定しています。旧姓といったところでコマンドはminidlnad なので旧姓を覚えておいたほうがむしろ便利ですね。
ディストロによる特段の違いはないです。manjaro /Archlinux/antergosでは次のファイルを上のリンクの指示通りにしたぐらいです。
2020年夏現在::ディストロ別運用方針
- arch系は個別ユーザー(ログインユーザー)で自動実行。
- ubuntu系は、ここで示す正統的な方法で利用しています。
円滑なファイルDB更新のために::あえて順不同で説明します。
/etc/sysctl.d/90-inotify.conf
#gedit /etc/sysctl.d/90-inotify.conf
#このファイルの中身、以下貼り付け
# Increase inotify max watchs per user for local minidlna
fs.inotify.max_user_watches = 100000
これは、media ディレクトリ配下ファイルを更新に関わります。指定しておいて損はないので、忘れないようにしたほうがいいかと思います。
ファイル数が少ない場合は問題がでないでしょうが、ファイル数が増えてくると微妙または全く更新されない等トラブルになるかと思います。これで足りなければ増やしてみるといいかもしれません。
メディアフォルダーにシンボリックリンクがある場合は
#
/etc/minidlna.conf
#set this to yes to allow symlinks that point outside user-defined wide_links=yes
を有効にします。最近のバージョンで増えた項目です。多分。
archのドキュメントでは以下
friendly_name
を最初から設定しておく手順が指示されていますが、ちゃんと動いてから書き換えてもだいじょうぶです。
またドキュメント後半の個別ユーザー単位での起動の場合は、ユーザーグループを調整しておかないとドキュメント通りでは動きませんでした。
また個別ユーザー単位で起動する必要性は当方にはありませんので、試してみただけです。
friendly_name=Media Server #いつでも設定できるししなくてもいいです。
動作確認はリブートしてから、スマホのDLNAクライアントなりVLCなりで確認するのが速いです。
ところでFedora/CentOSだったのを切り替え、ubuntuを登場以来メインにしてきましたが、ローリング・リリースが性分にあっているみたいなので、 現在、mint18.3/ubuntu18.04b1/antergos/manjaro を並行してつかいつつ評価中です。どれかをメインにしていくつもりです。ちょっとした違いに慣れるとどれも同じかな。^^; 仮想マシンではいまいちわかりづらいので、SSDにLinux 4ディストロとWindows10でマルチブートさせています。
ローリング・リリースはなんといっても最新版ががんがん降ってくるのは気持ちいいかも。自分で個別にコンパイルするケースもほとんどないです。いずれも追加でCinnamon Desktop を導入、同じテーマ、アイコンデザインにして、見た目も等価、デスクトップのオブジェクトなども統一して評価中です。
覚えておくと便利なコマンド ubuntu/mint などの場合
sudo service minidlna stattus #サービスが動いているかどうか。
sudo service minidlna force-reload #サービスをリロード
/etc/init.d/minidlna {start|stop|status|restart|force-reload|rotate}
以下、過去稿. とりたてて重要な機能が増えたりしていませんから、minidlna.conf の最新に新しい機能がないか、リリースなどで確認しておくといいかと思います。
はじめに::minidlnaを使うにあたって
miniDLNA レジュメ・家庭内オンデマンド
まずはインストーラーまかせで導入します。14.04LTSはだめ。 [
ダーティなインストール]
インストールします。
sudo apt-get install minidlna
次いで、エディターで定義ファイルを書き換えます。
sudo gedit /etc/minidlna.conf を確認。次の行を探します。
media_dir=/var/lib/minidlna
こんなふうに書き換える。たとえば、メディアファイルを配置しているとして。
media_dir=V,/home/username/Video
media_dir=A,/home/username/Music
media_dir=P,/home/username/Pictures
V,A,P は必須ではありませんが、ファイル種別を絞り込めるため、DB作成時間は減少すると思います。きれいなディレクトリ構造で整理されている方は指定したほうがいいでしょう。なんでもごっちゃにしている方は、無指定が便利かもしれません。
media_dirを書き換えるか、そこに*.mp4/mkv/m4v/wmv/avi,*.jpg/png,*.mp3/flac/wavなどのテストファイルを放り込む。先ずはテストのためです。
sudo reboot
以下、うまくいっていれば特に後述については確認程度でとどめておけます。実際のところ、当方では、miniDLNAと
UniversalMediaServerを同時に起動しています。それぞれ特徴がありますね。
このようにサーバーが見えていればまず問題なくストリーム再生できるはずです。
後者はここ1年でずいぶんブラッシュアップされています。音楽配信サーバーなどNAS的に使うには、両方動かしていて、捗っているなと感じています。
片方でうまくいかない場合など、もう一方のサーバーに接続して再生してみるとかできますので便利です。クライアントでの写真の表示の仕方やサムネイルの表示などサーバーソフトウェア側に依存する違いがあります。
流行りなのでしょうが、メディアサーバー用に特段NASを買う必要はありません。たとえばこのマシンは有線LANケーブルで無線ルーターに接続しています。よって、Wi-Fi経由でスマホのPnP/DLNAクライアントで、音楽を再生したりできます(音楽の場合は、miniDLNAに接続するほうが当方の好みです)。
Windowsで音楽配信なら、MediaGO(SONY)がおすすめです(かつてはそうでした。ディスコンです)。
言わずもがなですが、デスクトップのLinuxマシンが無線LANを装備している必要はないんです。(このページを見ている大半の方には当たり前でしょうが、世間的にはそうでないみたいなので付記しました。)
ちゃんと動作していれば下記はもう読む必要はないかもしれません。
第1部 miniDLNAについて最低限知っておくべきこと
できること、できないこと:: 要するに「家庭内オンデマンド」サーバーを立てるってこと。今、造語しました。
- 楽曲(音声ファイル)、イメージファイル(絵)、動画をストリーム再生できます。
- ローカルエリアネットワークのクライアント、アイフォンなり、アンドロイドなり、ネットワーク対応TV(最近のはほとんどそうだと思います)なりで、母艦サーバーのファイルが再生できます。SONYのテレビでもいけます。
- クライアントに依拠しますが、H.265/HEVCなどのフォーマットにも対応しています。(垂れ流し、トランスコードなし) 換言すればクライアントのアンドロイド端末がここ1年ぐらいのそこそこ速い機種であれば、FHD/HEVCがほぼストレスなく再生できるはずです(ないわけではありません)。SONY XPERIA Z1クラスでは重いです。2年前の最上位機種です。
- (ウィークポイント)特にTV側 など、コーデックをユーザーが変更、追加できないなどの場合に困ります。mpeg2やh.264にトランスコードしてやればいいわけです。SONYの古いBRAVIO(2008年製位)はそうだった気がします。今は使っていない。
- これは、minidlnaに期待するのではなく、Universal Media Server と併用すればわりと簡単に解決します。つまり、W-DLNAサーバーです。深く考えるよりインストールしたほうが速いです。javaベースで、起動するだけで200MB位、トランスコード用キャッシュを250MB程度仮に与えると0.5GB位はメモリーが必要ということになりますが、デフォルトでけっこういけるかなと思います。「ほぼリアルタイム」トランスコードですから、負荷もそれなりです。いまどきのi7マシンならそもそも議論の必要すらないでしょう。古い機体を再利用したいケースではご注意ください。
miniDLNAがそもそも動いているかの確認方法
http://localhost:8200/
http://そのマシンのIPアドレス:8200/
クライアント(TVなり、アンドロイドなり、アイフォンなり)から、DLNAクライアントを起動して、サーバーが見えているかチェック、再生。
かなり古いアンドロイド端末でも、DLNAクライアントが標準装備だったりします。XPERIAでは動画の機能に含まれていますが、お約束のように少しタコです。
Android でおすすめは、
BubbleUPnPです。全てのPnPクライアントを試してきましたが、自分の中ではこれがベストチョイスです。アンドロイドの話はいずれまた。
再生プレイヤーの選択もありますしね。往々にしてSONYのPnPアプリはタコです(Z4・2016-04-12時点ではそうでもないです)。
だいじなことなので2回いいました。どうだいじかというと動作確認には使わないほうがいいということです。だめな子に何をさせてもだめです。時間が盗まれます。
ストリームするファイルが格納されたディレクトリを定義ファイルで指定する。
基本は1行書き換えです。そこからスタートしましょう。
sudo gedit /etc/minidlna.conf
media_dir=/media/etcs/ikuji-kiroku
この media_dir=以下で配信メディアを指定します。
media_dir=/media/etcs/ikuji-kiroku APV全部、A=オーディオ、P写真、Vビデオ
media_dir=PV,/media/etcs/ikuji-kiroku 写真と動画のみ
カンマの前の文字列でDBにするファイル種別を指定できるようになりました(1.1.5)。以前のバージョンでは、複数種指定がなかったと思います。
メディアDBは放置プレイで更新
メディアファイルDBの更新は自動です。不都合がある場合は、テンポラリー指定して、起動毎に再作成するようにすればよいです。人間は考えるべきではありません。と思う。
実際のDB作成所要時間は、合計24時間程度の動画で200ファイルなら、
たぶん数秒です。ビデオ撮影したものなど数秒のものもあったりしますが。ヘッダみているだけでしょうから。
DBファイルが壊れたりして変!ってことになったりはまったりすることを考えるとこの運用は潔いかなと思います。古いバージョン時は、高頻度でDB更新がうまくいかなかったりしました。最近でもだめな場合があります。tmpfs指定のディレクトリに変更して様子をみてみましょう。大量ファイルでなければ全DB作り直しでもものの数分です。
さほどファイル数がないのであれば、起動毎にDB作りなおすというのも簡単な解決かも。minidlna.confを次のように書き換えて再起動してください。これは tmpdir ですから起動時毎にゼロから作成します。いうなればRAMディスク上なので、ファイル数が少ない場合はこれでもいいでしょう。
#db_dir=/var/cache/minidlna
db_dir=/run/minidlna
サーバー稼働とクライアントでの再生確認、XBMC/kodi、VLCなど。
クライアントで再生確認テスト。
XBMC/kodi はDLNAクライアントとしても優秀ですが、図のようにyoutube動画も再生できます。一定マシンスペックは必要です。xbmcやVLC、もっともいいのは、利用シーンから考えて、androidではないかと思います。
XPERIAなら、標準のミュージックや動画がDLNA対応ですね。まぁ、最近では常識なのかも。
BubbleUPnPがアンドロイドのおすすめです。無料でも使えますが、私は買いました。その価値は十分あります。SONYのより多機能というか、おそらく競合製品含めてもいちばん使いやすいです。
なお、kodiは、レンダラーにもなりますから、また活用の範囲は広がります。とはいえ、自分の場合、chromecastに戻しました。デスクトップ機でレンダラーとしては電気消費なども含めてちょっとおおげさなので。
以上
14.04LTSでインストールでつまづく人が世界的に多いみたいなので、[
ダーティなインストール]方法を記載しました。インストール候補がないので。こだわりがなければ、16.04LTSを使うべきです(たぶん)。
以下、かなり昔、過去の記録です。うまく動いていればもう読む必要ありません。5年前時点なので。
第2部 トラブルシューティングガイド::うまくいかない場合など詳細
ubuntu、mint、debianでは、mediatombが定番のようです。
が、個人的な超お勧めDLNAサーバーは、minidlnaです。定期的なアップデートもありますし、mediatombのメンテナーも参加されているようです。なおテストと運用は、mint/ubuntu 12.04/12.10 32bit 64bitと8環境をサーバー側とし、iOS6及びmint13 をクライアントとして行なっています。最終運用は、mint14シナモンをサーバーに固定しました。minidlnaの特徴は、
- 軽量、バイナリもびっくりするほど小さい。軽いのは当たり前。
- テキストファイルで定義指定できるのでシンプルで確実。簡単。
なお、同機体で、Windows7標準搭載DLNA/WMP12での運用テストをしてみましたが、遅延の発生、DB更新の遅れや勝手にサボることによるユーザー負担(むかつく)で、使う気になれません。再構築方法はわかりましたが、どうしてWindowsは、自動的にDB更新しないのか不思議でたまりません。ま、とにかく圧倒的に速い!! minidlnaはおすすめです。MSは改善する気がないのかな?!
以下、mint13でやりながら
インストール
sudo apt-get minidlna
ヴァージョン確認(Vは大文字)
minidlnad -V
起稿段階で、1.0.25で、ソースからビルドしましたので、通常インストールですとそれ以下の版になります。さほど気にすることはないと思います。GUIなソフトウェア導入ももちろん使えます。ちなみに、.24と.25ではバイナリサイズが大きく違いますが、特に差は感じませんでしたので、メンテナ推奨パッケージに戻しました。/etc/minidlna.confも順序が違うだけで基本的には同じです
導入し、起動確認
$ /etc/init.d/minidlna status
* minidlna is running
起動していなければ次で起動してみる。
$ sudo service minidlna start
1.1.4でのSTATUSに差し替えました。以前はテキスト1行だけでした。 左上は加工です。 STATUS確認はsudoは不要です。
この段階で起動していなければ念のため、再起動して確認しなおしてください。
サービスが起動しないことには使えません。再起動して自動起動していないのは当方の調査によれば、NetworkManagerがらみの問題じゃないでしょうか。はまる前に後述分[自動起動しない場合の対策]を読んでみてください。これは過去の話です。現在では問題はでないと思います。
定義ファイル編集(最小:まず1行だけ書き換える)
ストリーミングしたいディレクトリを、まずは指定してください。それだけでたいていは動きます。ハマる前に最小のことだけしましょう。誤字がないか注意しましょう
sudo gedit /etc/minidlna.conf
#media_dir=/opt ここを書き換える例
#media_dir=V,/media/etcs/ikuji-kiroku
media_dir=/media/etcs/ikuji-kiroku
media_dir=/media/friends/nomikai
※NTFSをマウントして必要動画Directoryを指定しています。
#friendly_name=My DLNA Serverの行を書き換えるのは環境が確定した最後にしてください。
書き換える必要もまったくありませんし。Deamonオーナーがわからなくなります。
定義ファイル書き換え後、リロードするか、マシンを再起動
再起動がおすすめ。ここでいろいろすべきではないです。
ちなみに、リロードは、
sudo /etc/init.d/minidlna force-reload
* Restarting DLNA/UPnP-AV media server minidlna [ OK ]
DLNAクライアントをアンドロイドなりiPhoneで起動してください。別のクライアント、ubuntu機(VLC、BANSHEEがおすすめ)でももちろんOK。それでサーバが見えていて再生できればOK。
machine:minidlna が見え、ファイル再生できれば丸ということです。
一旦、再起動すると良いです。でないとrootで実行されているはずです。再起動後minidlnaユーザーで起動していれば完璧です。今後は、DB再構築コマンド一行だけを覚えておくだけでいいですし、仮に忘れても自動でやってくれます。
DB再構築についての考え方
順当に起動すれば、hostname:minidlna で
uPnP/DLNAサーバー見えているはずです。この状態で、もし
media_dir=/media/etcs/ikuji-kiroku に放り込んである動画、音楽、写真が見えてないなら(空なら見えませんよ)、
DB再構築を強制する
コマンドが以前と変わっています。minidlnad です。
sudo minidlna -R
sudo minidlnad -R
を発行してください。HDDを読み込みにいってしばらく音がしています(DBを再構成している)。正常に起動するようになれば、sudo minidlna -R コマンドぐらいしか使うことはありませんし、新しいファイルも自動
DB構築してくれます
。もう1年以上このコマンドは発行していいません。必要にならないので。放置でもいけるかと思います。
(以下はさらに4年前の話で現在/平成27年/は発生しないはずです?!) 自動起動しない場合の対策:レアケースなので、ここまで読んでいただけれればけっこうです。
固定プライベートアドレスを割り当てている場合に多く発生するようです。ただし、固定している方の大半は理由があって固定しているわけで、DHCPまかせにはできないと思います。(また実験した結果では、12.04と12.10では挙動が違います)。DHCPでMACアドレス指定、固定IPの場合は問題がおそらくでないと思いますので、ここを読む必要はありません(すでに使えているはずですしね)。
そういうわけで、絶対的に正しいとはいいませんが、起動するようにしてみました。2013年当時のワークアラウンドです。
まず、/etc/network/interfaces
これが通常、
auto lo
iface lo inet loopback
の2行のみになっているはずです。
その下に次を書き加えてください。
sudo gedit /etc/network/interfaces
auto eth0:0
iface eth0:0 inet static
address 192.168.xxx.yyy
netmask 255.255.255.0
gateway 192.168.xxx.1
eth0:0という仮想インターフェイスに割り当てるという例です。
これでNetworkManagerと共存できており、特に問題は発生していません。
再起動して、Internetに問題なく接続できるなら、あるいは、
ifconfig
eth0:0 Link encap:イーサネット ハードウェアアドレス d4:dd:e9:29:d2:9a
inetアドレス:192.168.1.xxx ブロードキャスト:192.168.1.255 マスク:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
割り込み:60 ベースアドレス:0xc000
このように、nicが仮想であれ実体であれ使えることを確認してみましょう。
ここまで来れば、あとはなんとでもなります。まちがっても、起動scriptをいじろうとかまだ考える必要はありません。あなたがそれなりのユーザーならやってしまうかもしれませんがそれは(できますが)無駄です。ばかげています。仕様変更に伴って、NetworkManagerによるNICの初期化タイミングが遅いため、minidlnaが起動できていないのだと結論づけています。12.04と12.10で確認。mintも同様。そして、一時的なものでした。
あるいは、
NetworkManagerを自動起動しないようにして、従前の /etc/network/interfaces だけを用いたnic初期化でもうまくいきました。そっちのほうがいいのかもしれませんが、ubuntu系は新しいNetworkManager方式が今後も採用されつづける
はずみたい
なので、それに敬意を払うことにします。ですが、やはり「管理外」なのでサービス停止、自動起動停止にします。
sudo service network-manager stop
sudo update-rc.d -f network-manager remove
これでうまくいかない。Beginner時代は、Webminで起動スクリプト調整をしていたので、Webminをインストール。システム-起動及びShutdownで、
network connection manager を停止して、自動起動しない設定にして保存、リブート。
今度は起動していないようです。/etc/init.d/を見るとあれこれシンボリックリンクになっていますね。
プロセス確認方法
$ ps ax | grep NetworkM
4491 ? Ssl 0:00 NetworkManager <--- font="font">--->
4495 pts/0 S+ 0:00 grep NetworkManager
仮に筆者と同じ仮想NIC方式の構成にされた場合は、
sudo gedit /etc/minidlna.conf
で定義ファイルを一行だけ書き換えてください。
この行を有効にして
network_interface=eth0:0
これで、リブート。うまくいくといいね!!
それでもボクはうまく行かない(T_T)場合
log_dir=/var/log
のログをみてみましょう。minidlna はminidlnaユーザーで実行されることを前提にしていますので、いくつかのエラー表示があるはずですよね。
最終的に、ただしく起動したら、
ホスト名:minidlna
というDLNAサーバーが見えます。あとは使い放題。これが
ホスト名:root
になっていてももちろん使えますが、root起動は不適切な使い方ではないかと思います(それにいじり倒しましたね?!)ので、いじり倒さないほうが得策です。一旦再起動してみましょう。
補足:自分でBuild
Compileした場合、/usr/sbin と/usr/binのいずれにminidlnaが配置されたか確認してみてください。見つからない場合、
後者に移動する、か、起動scriptを
1文字だけ修正してください。
sです。コンパイルオプションをさわってももちろんおけ。
追加例:固定アドレス運用の場合
現在すべてのmint/ubuntu機/etc/network/interfacesは以下の考えに基づく設定にしました。(2015年現在は違います。ネットワークの仕組みが変わる過渡期だったためです)
12.04/12.10で、staticにしている/etc/network/interfacesの例
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
gateway 192.168.1.1
当方でパッチをあて transcode 機能のある minidlna は配布終了しました。
1.1.4 1.1.5パッケージ、試験的に置いてみました。不要な方は入れる必要はありません。使命を終えたので削除しました。
ファイルパーミッションの問題を解決する。
端的に。ふたつ方法があります。
facl で解決する方法。
minidlna ,emby などのストレージパーミッションで グループ追加しているのになぜかうまくいかない場合、の設定 [3分クッキング]
(たぶんこれが王道) facl で設定します。最近emby を使い始めたので、長年の付き合いのminidlnaの場合も含めて記述します。...
そして、ログインユーザーで起動する方法です。前者は比較的コンテンツ格納ディレクトリを固定的に扱う人、後者はめんどくさいことが嫌いな人向けです。
ここ数年の当方は、ディストロ毎にあえて、ふたつの設定を使っています。結論は後者が楽でよいということですね。上記リンクをご欄ください。