「DLNA」タグアーカイブ

MiniDLNAデータベース情報変更PHP

MiniDLNAのタイトル変更を行うのに、DBを直接編集するのはあまりにも面倒なので
PHPでタイトル変更が出来るものを作ってみました。
UTF8環境でしかテストしていません。
他の文字コード環境にて正しく動作するかは分かりません。

まず以下のファイルをDLして解凍してください。
MiniMiniDLNAデータベース情報変更PHP

tree.php、list.php、editor.phpの最初にある以下の行を、MiniDLNAのDB保存先に変更してください。
$DB_FILE=’/var/cache/minidlna/files.db’;

あとは解凍した全ファイルを、PHPが動作可能なフォルダにコピーしてください。
index.htmlにアクセスすればページが表示されます。
files.dbやfiles.dbがあるフォルダには適切な権限を与えてください。
また、PHP用のSQLiteライブラリも必要となります。
debianであれば以下のコマンドでパッケージを導入してください。

# apt-get install php5-sqlite
apache2ctlの再起動
# /usr/sbin/apache2ctl restart

MiniDLNA Editor画面
minidlna

左側にフォルダの階層が表示されますので
エクスプローラーと同じようにフォルダを展開し選択してください。

選択したフォルダにファイルが存在すれば、画面右側にファイルの一覧が表示されます。
一覧から編集をクリックすると、ファイルの詳細情報が表示され
同じ画面からタイトル等の変更が可能となります。
一覧からファイル名をクリックすると、ファイルをダウンロードできます。
ファイルの一覧にはページングの機能がありません。
多量のファイルが表示されるフォルダの場合ですと
サーバー、ブラウザ共に負荷が非常に高くなりますのでご注意ください。

2010/03/19 追記
Version1.1にアップデートしました。
ファイル一覧にページング機能を追加しました。
その他のバグを修正しました。

2010/03/20 追記
Version1.2にアップデートしました。
ファイル一覧からファイルをダウンロードできるようにしました。
その他

WoooでDLNA再生する

テレビをRegzaから日立のプラズマWooo(XP03)に買い換えました。

Woooからmediatombが見え、ファイルの一覧までは表示出来るものの
mpeg2すら再生出来ません・・・
色々と調べてみるとmediatombはDLNA規格に準じていないらしく
BraviaやWoooでは正常に動かないらしいです。

Twonkyは有償なので入れたくありませんし、フリーのDNLAサーバーがないか調べてみました。
するとMiniDLNAというソフトがありました。

インストールはコンパイルからやる必要があるようで、以下を参考にインストールしました。
MiniDLNA | KURO-BOXの館 ZQwoonetSNS-CoDE-
※既にリンク先のサイトはなくなっているようです

ますソースの取得です。
# cvs -d:pserver:anonymous@minidlna.cvs.sourceforge.net:/cvsroot/minidlna login

パスワードの入力が求められるので、そのままエンターキーで。
# cvs -z3 -d:pserver:anonymous@minidlna.cvs.sourceforge.net:/cvsroot/minidlna co minidlna

KazHatよりバグ情報がありました。
tagutils/tagutils.cに一行追加することで、タイトル、アーティスト、ALBUMなどが正しく表示されるようです。

#include “../config.h”    ←この1行を追加
#ifdef HAVE_ICONV_H
#include
#endif

参考URL
http://kazhat.at.webry.info/201007/article_5.html

コンパイルを行います。
# cd minidlna
# make

この時に必要なパッケージが足りないと、エラーと共に必要なライブラリが表示されます。
足りないパッケージは、お使いの環境で変わってきます。
殆どのパッケージは出てるライブラリの後ろに「-dev」を付けてapt-getすればいけると思います。
libid3tagは「0-dev」を付けてlibid3tag0-devで取得できました。

コンパイルが終わったらインストールします。
# make install

実行スクリプトを/etc/init.dにコピー
# cd linux
# cp minidlna.init.d.script /etc/init.d/minidlna

コピーした実行スクリプトをrc.dに登録し、OS起動時にデーモンとして起動するようにします。
# update-rc.d minidlna defaults
※OS起動時の自動実行を無効にするには、update-rc.dコマンドに「-f」オプションを付けて実行します。

/etc/minidlna.confにて設定を行い起動します。(OS再起動でもOK)
# /etc/init.d/minidlna start
設定ファイルの設定内容は、下の方に書いています。

MiniDLNAを動かすと無事Woooにてmpeg2を再生可能に!
ただMiniDLNAはmediatombのように使い勝手は良くありません。
※WoooのDLNAクライアント機能は、mpeg2しか再生できません。
confファイルもさわってあげないとDaemonをrestartしてもファイルの更新もしません。
(/tmpにDBファイル「/tmp/minidlna/files.db」があるので、OSをRebootすれば更新されます)

MiniDLNA version 1.0.17では、正常に更新されます。

ちなみにmediatombとの共存も可能なので、Woooで再生する可能性がある動画のみ
MiniDLNA用の動画ディレクトリに保存するようにしました。
通常はmediatombでWoooからのみMiniDLNAという感じで運用しています。

設定ファイルについて
/etc/minidlna.confの内容を少し書いておきます。(MiniDLNA version 1.0.17)

port
minidlnaが使用するポートを設定します。(通常は変更の必要はありません)
HTTPを利用したDLNAの提供時に利用?

network_interface
LANが複数ある場合に使用するLANを指定出来ます。
デフォルトではコメントアウトされているので、必要な場合は設定を行ってください。

media_dir
初期設定では/optとなっています。
ここで指定されているフォルダが、minidlnaが管理するフォルダとなります。
設定は「audio」「video」「images」と、それぞれ個別にフォルダを設定することも可能です。
分ける場合の例です。
media_dir=A,/mnt/disk1/share/minidlna/Music
media_dir=V,/mnt/disk1/share/minidlna/Movie
media_dir=P,/mnt/disk1/share/minidlna/Photo

friendly_name
DLNAクライアントに表示する名称を設定できます。
デフォルトはコメントアウトされていますので、DLNAサーバーを変更したい場合は設定してください。

db_dir
minidlnaはデータベースにSQLLiteを使用しています。
データベースファイルの保存先を変更したい場合は、設定を変更してください。
デフォルトはコメントアウトされており、/tmp/minidlnaに保存されます。
/tmp以下はOSを再起動するとファイルが消えてしまい、サービス起動でデータベースファイルが再作成されます。
当然ながら初期設定ですと、OS起動時の負荷も増えます。
コメントアウトを外し保存先の設定を変更した方が良いと思います。
保存されるDBファイル名は「files.db」です。

inotify
カーネルからのファイル変更通知を受け取り、自動的にデータを更新するかの設定です。
デフォルトはyesになっており、ファイルの更新があると自動的にデータが更新されます。
実際にファイルを更新しfiles.dbを確認したところ、データベース上のデータは更新されていました。
もちろんクライアント上の表示も更新されていました。

strict_dlna
yes指定で、サイズが大きいJPGをサーバー側でダウンスケーリングするみたいです。
特に支障がなければ変更の必要は無いと思います。
コメントを見る限りではSonyのDLNAでは必要?

presentation_url
HTTPを利用したDLNAの提供時に利用?

notify_interval
データの更新間隔ですが、inotify=yesであれば基本的に長間隔で良いと思います。
サービス停止時にファイルが更新されれば、データは更新されませんので
定期的に更新チェックをさせるための機能と思われます。

files.dbについて
files.dbを開いて見てみました。
ALBUM_ART、CAPTIONSというテーブルがありIDとパス項目があるので、このテーブルにイメージのパスをセットすれば、クライアントでのアルバムや動画のイメージ表示に使えるかもしれません。
DETAILSというテーブルに基本的なファイル情報が保存されています。
このテーブルのTITLE項目を変更すれば、クライアント上でのファイル名の表示が変更可能です。

これらの情報を変更するGUIをphpで作ろうかと思いましたが、なんとなく作成意欲が湧かないので作りません(笑)
作っちゃいました(笑)