簡単動画管理ツールについて
以前作っていた、動画をまとめるスクリプトを色々カスタムしてみました。
というにも、資料の管理が煩雑になってきたので、自宅NASにサーバーとして
管理したいなぁーと思っていたので作りました。
仕事では、引き出し用に使ってたりします。
本当は「WhiteBrowser」とか使いたいんですが、あれインストールがいるんで
正直手を広げにくいです。
なのでブラウザベースで「簡単」「軽い」「分かり易い」を
元にざっくりなものとなります。
用意するのは画像みたいな階層です。
フォルダ名はなんでもOKです。
こんな感じで今回は軽めで用意してみました。
中身はこんな感じ。
数は少なめ。
私が持っている素材【MOV】が圧倒的に多いので、ブラウザ表示に関しては
Movと少しだけ対応しております。
もちろん追加も可能です。後述致します。
んで、まずは動画をコンバートツールにドロップします。
ちなみにコンバートツールの中身はこんな感じ。
ではドロップ。
すると、こんなウィンドウで止まると思います。
文字化けしてますが、今回はスルーで。
特に問題ありません。
これでOK押していただくとOKです。
※FFMEPGについてはググる等でお調べ頂くと
本当に得しますので、おすすめです。
この状態で以下の画像みたいに「.Gif」画像ができていると思います。
これがブラウザで表示する本体になります。
※このGIF化はFFMEPGが対応する全てのフォーマットでコンバート可能となります。
であとは、下記に記載するスクリプト【Make_HTML.wsf】を実行して下さい。
こんな感じになるかと思います。
入力する名前は、【フォルダ名】にして下さい。
ここに記載されたフォルダを見て、HTMLファイルを作る感じになります。
色々入ってますが、今はスルーで。
実行完了すると画像みたいに、フォルダ名のHTMLファイルが出来ていると思います。
でそれをブラウザで確認すると以下のHTMLファイルが立ち上げると思います。
はい。これでほぼ完了です。
あとはTOP画像とか、任意の画像をHTMLファイルにテキストで書き込んであげると完成です。
一応TOP画像はこんな感じにしてます。
※超簡単な感じです。
HTMLは詳しくないのでこんな感じしかできませんでした。
色々フリーのツール使うといいかもですね。
要はサムネイルが欲しかっただけんです笑
なんで作ってみました。
現状だと数は少ないので見た目がスカスカですが
お見せできない資料なども含めると30Pぐらい埋まってます笑
これがiPhoneで見れると一番いいですけどね…
ってことでコード
FFMEPGコンバートツールについては、以前の記事を参考下さい。
ココtommy-on.hatenablog.com
ではコード↓↓↓
<job id="foo"> <script language="VBScript"> 'InputBoxを出して、ユーザから入力された値を返す関数 function vbinput(msg) vbinput = InputBox(msg,"makehtml") end function </script> <script language="JavaScript"> //上で定義した関数を呼び出す var name = vbinput("書き出すIDを記入して下さい"); var objShell = new ActiveXObject("Shell.Application"); var fs = WScript.CreateObject("Scripting.FileSystemObject"); var targetPath = "D:\\動画まとめサイト\\"+name; var enuItems = new Enumerator (objShell.Namespace(objShell.Namespace(targetPath)).Items()); var Array_hako = new Array(); var file = fs.CreateTextFile(targetPath+"\\"+name+".html",true); for (; !enuItems.atEnd(); enuItems.moveNext()) { var item = enuItems.item(); var ntime = item.ExtendedProperty("Duration"); var time_math = ntime / 10000000; var frame = time_math * 30; var time_number = new Number(frame); var time = Math.round(time_number); var type = item.ExtendedProperty("Type"); if(type == "QuickTime ムービー" || type == "ビデオ クリップ" || type == "AVI ファイル") { //WScript.Echo( item.Name ); var Item_Name = item.name; var Out = Item_Name.lastIndexOf("."); var Final_Name = Item_Name.slice(0,Out); Array_hako.push(Final_Name); Array_hako.push(time+"フレーム"); //file.WriteLine( item.Name ); //file.WriteLine( time+"フレーム" ); } } //Array_hako.sort(); //WScript.Echo( Array_hako ); //ここからHTML作成 file.WriteLine( '<?xml version="1.0" encoding="Shift_JIS"?>' ); file.WriteLine( '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' ); file.WriteLine( '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">' ); file.WriteLine( '<head>' ); file.WriteLine( ' <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">' ); file.WriteLine( ' <title>'+name+'</title>' ); file.WriteLine( ' <link rel="stylesheet" type="text/css" href="../layout.css" />' ); file.WriteLine( ' <style type="text/css">' ); file.WriteLine( ' div.imagebox {' ); file.WriteLine( ' border: solid 2px #000000;' ); file.WriteLine( ' background-color: #eeeeff;' ); file.WriteLine( ' width: 350px;' ); file.WriteLine( ' float: left;' ); file.WriteLine( ' margin: 5px;' ); file.WriteLine( ' }' ); file.WriteLine( ' p.image, p.caption {' ); file.WriteLine( ' text-align: center;' ); file.WriteLine( ' margin: 5px;' ); file.WriteLine( ' }' ); file.WriteLine( ' p.caption {' ); file.WriteLine( ' border: solid 1px #000000;' ); file.WriteLine( ' font-size: 80%;' ); file.WriteLine( ' color: darkblue;' ); file.WriteLine( ' }' ); file.WriteLine( ' p.exp {' ); file.WriteLine( ' clear: left;' ); file.WriteLine( ' }' ); file.WriteLine( ' </style>' ); file.WriteLine( '</head>' ); file.WriteLine( '<body>' ); file.WriteLine( ' <!-- ヘッダ -->' ); file.WriteLine( ' <div id="footer"><h1><a href="../top.htm">'+name+' Topへ</a></h1>' ); file.WriteLine( ' </div>' ); for(var i=0; i<Array_hako.length; i++) { //WScript.Echo( Array_hako[i] ); file.WriteLine( ' <div class="imagebox">' ); file.WriteLine( ' <p class="image"><img src="'+Array_hako[i]+'.gif" alt="'+Array_hako[i]+'" ></p>' ); file.WriteLine( ' <p class="caption">'+Array_hako[i]+'</p>' ); file.WriteLine( ' <p class="caption">フレーム数:'+Array_hako[i+1]+'</p>' ); file.WriteLine( ' </div>' ); i = i + 1; } file.WriteLine( '</body>' ); file.WriteLine( '</html>' ); file.Close(); fs = null; objShell = null; </script> </job>
色々なサイトを参考にさせて頂きました。
ありがたやありがたや…
で、最後に上記で記載していたMov、AVI以外の対応ですが、
スクリプト38行目の
「 if(type == "QuickTime ムービー" || type == "ビデオ クリップ")」
この部分に動画ファイルの形式を【||】で追加していって下さい。
とりあえずAVIを足すなら、こんな感じです。
「 if(type == "QuickTime ムービー" || type == "ビデオ クリップ" || type == "AVI ファイル")」
これてAVIがHTMLに追加されると思います。
今後はこれをベースにPythonでもっと高機能な物を
作っていきたいですね。
以上です。