4月
16
2013

DAEMON Tools LiteとXAMPPでHTMLからISOを再生させるテスト。

MOVIE-LOG自宅環境変更に伴って、居間のTVにPCを繋ぐことになりまして。
HTMLでメニューつくっておいてポチっとやると、NASにあげてある
ISOをひっぱってきて再生できないかな?と考え、ちょっと試してみました。
 

 
【目標】
予め作っておいたメニュー用HTMLファイルをブラウザから閲覧し、
観たいISOファイルのところの「再生」なりのボタンを押下すると、
NASのISOファイルをDAEMON Tools LiteにマウントしてPower DVD等で起動させる。
 
DAEMON Tools LiteとXAMPPでHTMLからISOを再生させるテスト。
 
 
【前提条件】
説明の便宜上、以下の前提条件を設けます。
尚、DAEMON Tools LiteやXAMPPのインストールや設定等まで
記述すると長くなるため、今回は省いています。

DAEMON Tools Liteがインストール済みである事。(仮想ドライブはDTで追加してある事)
 また、DAEMON Tools Liteをインストールしたディレクトリ(DTLite.exeがあるディレクトリ)に
 パスを通して置くこと。(普通にインストールした場合、「C:\Program Files\DAEMON Tools Lite\」)

・DAEMON Tools LiteでマウントされたISOファイルは、常にPower DVD等の決まったプレイヤーで
 再生する様、予め設定しておくこと。
 
XAMPPがインストール&設定済みである事。
 (今回はC:\xamppにインストールしてあるものとして説明します。)

・NASはPC起動時にネットワークドライブとしてマウントする事。
 ネットワークドライブとしてマウントするNASのディレクトリは「\\NAS-001\movies」とし、
 ユーザは「admin」・パスワードは「9999」とする。
 また、リンク先は「Z:」にマウントするものとする。

・HTMLで作るメニューは、ローカルIP:192.168.0.10の端末の
 「C:\xampp\htdocs\localmenu\」に作る事とする。
 
 
【下ごしらえ】

1.NASの自動ログイン&マウント
パスワード制限してあるNASディレクトリをネットワークドライブとして接続したかったので、
以下のファイルを新規作成し、スタートアップに放り込んでおく。
 
作成ファイル:NasLogin.bat (ファイル名は何でも良いです)

@echo off
net use z: \\NAS-001\movies 9999 /user:admin

【参考サイト】
》あんだあどらいぶ – windowsXPでネットワークドライブに自動的にログインする方法

 
 
2.apacheの自動起動
LAN上の他端末から閲覧したり、HTMLからISOを再生する際にPHPを使うため、apacheを
起動しておく必要があります。今回は既に環境構築してあったXAMPPを使ったのですが、
XAMPPとapacheをサービスに登録しておけば済むと安易に考えていたところ、
僕の環境ではXAMPP Control Panelからapacheをサービスとして登録して起動すると、
HTML等は見れるのだがPHP部分が正常に動かず。

XAMPP Control Panelをよく見てみたら、apacheのステータスは「起動」になっているものの、
おとなりのボタンが「停止中」に。試しにサービスをアンインストールして手動起動した場合は、
「停止」になる。別にPC起動時に手動でポチって押しても良いのだけど、極力自動化させたかったので、
バッチから起動する方針にしました。(XAMPP及びapacheのサービス登録でうまく動く方は
以下の記述は読み飛ばしてください。)

以下のファイルを作成してXAMPPをインストールしたディレクトリ(C:\xampp等)の直下に
放り込み、ショートカットを作ってスタートアップに入れておく。
 
作成ファイル:apacheStart.vbs (ファイル名は何でも良いです)

CreateObject("WScript.Shell").Run "C:\xampp\apache_start.bat",0

【参考サイト】
》人力検索はてな – Windowsのバッチプログラム(.bat)を実行する際、ウィンドウを表示しない方法をお教えください。

 
 
【作り方】

「C:\xampp\htdocs\localmenu\」の下に、以下のファイルを作成してください。
(NASから持ってきてDAEMON Toolsをキックするまで少し時間がかかるので、
 echoでメッセージを出しています。)
 
作成ファイル:moviePlay.php

<?php
	if(isset($_GET['fname'])) {
		$inFname = mb_convert_encoding($_GET['fname'],"SJIS","auto");
		$inFname = str_replace("\\\\", "\\" , $inFname);
		$command = 'DTLite.exe -mount dt, 0, "' . $inFname . '"';

		$execCommand = "cmd.exe /c " . $command;
		exec("$execCommand");
		echo "再生には時間がかかりますので、しばらくお待ちください。";
	}
?>

【参考サイト】
》daemon-help.com – Command line parameters
》ISOファイルを一発で再生するバッチ

 
あとは、メニュー用のHTMLの「再生」のリンクを以下の様に記述します。
Aタグのリンク先をmoviePlay.phpにして、引数fnameに再生したいISOの
パス+ファイル名を指定する感じです。上述の通り、ちょっとまってね
メッセージを出してるので、target=”_blank”を指定してます。

【例】「Z:\anime\宇宙巡洋艦モガミ.ISO」を再生させたい場合の基本例

<a href="./moviePlay.php?fname=Z:\anime\宇宙巡洋艦モガミ.ISO" target="_blank">再生</a>

 
LocalMenu今回は、Twitter Bootstrapを使って無駄にレスポンシブに
メニューを作ってみたので、iPhoneからでも見栄え良く閲覧できたり。
xamppなんで、軽めのCMS等を選んで運用したら、データ管理が
便利かもしれませんね。
 
 
【使い方】
LAN上の他の端末からローカルサイトへアクセスする場合、
apacheの設定をいじってあげる必要があります。

D:\xampp\apache\conf\httpd.confの「Listen 127.0.0.1:80」
という記述を探し、「127.0.0.1」の部分をメニューHTMLを
作った端末のローカルIP(今回の例では192.168.0.10)に
変えてapacheを再起動してください。各端末のブラウザからは、
「https://192.168.0.10/localmenu」でアクセスできます。
 
 
【問題点】
目的は「何観ようかな~♪」と気軽にメニューを閲覧して、決めたらその場でポチっと
再生できたら良いな…という事だったので、再生後の早送りや音量調整等の操作は
考えていません。この辺りは、リモコン導入したり手動で運用するしかないですかねぇ。
 
 
【今後の課題】
ISOだけでなくaviやmp4なんかもポチって押したらプレイヤーで再生できたら良いですね。
「moviePlay.php」でpathinfo使って拡張子を取得して処理を振り分られそうなのだけど、
ちらっと調べてみたらGOM Playerはコマンドラインに対応してないので、コマンドラインで
動かせるVLCかなと考えてはいるのですが、ちょっとやってみたら動かなかったんだよねぇ;
もっとちゃんと調べないとダメみたい…という訳で、今後の課題。
 

 


2024年4月
1234567
891011121314
15161718192021
22232425262728
2930  

Archives

Recommended