?D::MotionBros このページをアンテナに追加 RSSフィード Twitter

2010-08-26 Thu

avi から wmv にまとめて変換する JScript

| 01:46 |  avi から wmv にまとめて変換する JScriptを含むブックマーク  avi から wmv にまとめて変換する JScriptのブックマークコメント

PowerPoint に埋め込む動画が mp4 うまく動かないので mp4toAvi した後に wmv 化するための avi2wmv.js.bat を書きました。動かすには Windows Media Encoder が必要です。

screenshot

We are sorry, the page you requested cannot be found

avi2wmv.js.bat

@if (1==1) /*
@ECHO OFF
rem ========================================================
rem  MS-DOS 処理
rem ========================================================
CScript //Nologo //E:JScript "%~f0" %*
PAUSE
GOTO :EOF
rem */
@end

// =========================================================
//  JScript 処理
// =========================================================

var owsh    = WScript.CreateObject("WScript.Shell") ;
var ofs     = new ActiveXObject("Scripting.FileSystemObject") ;
var args    = WScript.Arguments ;

var wmcmd   = "C:\\Program Files\\Windows Media Components\\Encoder\\WMCmd.vbs" ;
var v_mode      = 2 ;   // 品質モード
var v_quality   = 100 ; // 品質 100(最高)

if( ! ofs.FileExists(wmcmd) ){
    WScript.Echo("Windows Media Encoder の vbs を " + wmcmd + "にインストールしてください。") ;
    WScript.Quit();
}

if( args.length === 0 ){
    WScript.Echo("Please drag & drop directory or avi file");
    WScript.Quit();
}

var avis    = new Array() ;

for( var i = 0 ; i < args.length ; i++ ){
    if( ofs.FolderExists(args(i)) ){
        findAvi(args(i)) ;
    }else{
        addAvi(args(i)) ;
    }
}

if( avis.length === 0 ){
    WScript.Quit() ;
}
convert() ;
WScript.Quit() ;

// 再帰的に avi ファイルを探す
function findAvi(dir){
    WScript.Echo("find : " + args(i));
    var osa = new ActiveXObject("Shell.Application") ;
    var of  = osa.NameSpace(dir) ;
    var ofi = of.Items() ;
    for( var i = 0 ; i < ofi.Count ; i++ ){
        var oi  = ofi.Item(i) ;
        if( oi.isFolder ){
            findAvi(oi.Path) ;
        }else{
            addAvi(oi.Path) ;
        }
    }
}

// wmv ファイルパス取得
function getWmvFilePath(path) {
    return path.replace(/\.avi$/i,".wmv") ;
}

// avi ファイルならリストに追加
function addAvi(path){
    if( path.search(/\.avi$/i) === -1 ){
        debugPrint("error : " + path);
        return false ;
    }
    if( ofs.FileExists(getWmvFilePath(path)) ){
        debugPrint("error : wmv exist. " + path ) ;
        return false ;
    }
    WScript.Echo("add  : " + path);
    avis.push(path) ;
}

// コンバート
function convert() {
    for( var i = 0 ; i < avis.length ; i++ ){
        // wmv 作成
        var wmvpath = getWmvFilePath( avis[i] ) ;
        var avi2wmvCommand  = "cscript.exe \"" + wmcmd + "\" -v_mode " + v_mode
                + " -v_quality " + v_quality + " -input \"" + avis[i] 
                + "\" -output \"" + wmvpath + "\"" ;
        owsh.Run( avi2wmvCommand, 5, 1 ) ;
    }
}

// デバッグプリント
function debugPrint(str) {
//  WScript.Echo(str) ;
}
トラックバック - http://d.hatena.ne.jp/MotionBros/20100826

2010-08-23 Mon

タランティーノらしさ爆発 【 イングロリアス・バスターズ 】

| 00:54 |  タランティーノらしさ爆発 【 イングロリアス・バスターズ 】 を含むブックマーク  タランティーノらしさ爆発 【 イングロリアス・バスターズ 】 のブックマークコメント

イングロリアス・バスターズ観ました。

タランティーノらしさ爆発で全体的な話よりも細かいディティールにニヤニヤしてしまう映画。

特に気に入ったのはナチスのむごさが表れている最初のエピソード。

助演男優賞をとっただけあってユダヤ人ハンター役の人の演技は凄いです。

あとは密閉された地下の居酒屋でのやりとりでのテンションの移り変わりが面白かった。

イングロリアス・バスターズ [Blu-ray]

イングロリアス・バスターズ [Blu-ray]

イングロリアス・バスターズ [DVD]

イングロリアス・バスターズ [DVD]

トラックバック - http://d.hatena.ne.jp/MotionBros/20100823

2010-08-22 Sun

人との繋がりを考えさせられる【 グラントリノ 】

| 01:01 |  人との繋がりを考えさせられる【 グラントリノ 】を含むブックマーク  人との繋がりを考えさせられる【 グラントリノ 】のブックマークコメント

最初は近所に住むアジア人犬猿の仲だったのにだんだん絆が産まれていき最後は命をかけた展開になっていく流れがとてもスムーズに入ってきていい映画でした。

グラン・トリノ [DVD]

グラン・トリノ [DVD]

グラン・トリノ [Blu-ray]

グラン・トリノ [Blu-ray]

トラックバック - http://d.hatena.ne.jp/MotionBros/20100822

2010-08-17 Tue

Greasemonkey のメニューに再インストールコマンドを仕込んでみる

| 01:14 |  Greasemonkey のメニューに再インストールコマンドを仕込んでみるを含むブックマーク  Greasemonkey のメニューに再インストールコマンドを仕込んでみるのブックマークコメント

アップデートする度に再インストールするサイトまで移動するのが面倒なので

    var sourceurl   = 'http://userscripts.org/scripts/source/81409.user.js' ;
    var scriptname  = 'twitterViewConversation' ;
    GM_registerMenuCommand( scriptname + ' re-install', reinstall ) ;
    function reinstall() {
        if( confirm('do you reinstall ' + scriptname + ' ?') == true ){
            window.location.href = sourceurl ;
        }
    }

というソースを仕込んでみた。

トラックバック - http://d.hatena.ne.jp/MotionBros/20100817

2010-08-11 Wed

編集している Greasemonkey スクリプトを userscript.org にあげる秀丸マクロ

| 03:36 |  編集している Greasemonkey スクリプトを userscript.org にあげる秀丸マクロを含むブックマーク  編集している Greasemonkey スクリプトを userscript.org にあげる秀丸マクロのブックマークコメント

編集したらすぐに userscript.org へアップロードしたいので秀丸マクロと ActivePerl で書いてみた。

save-uploadUserscript.mac

save ;
if( filetype == ".js" ){
    $uploadpl   = "C:/data/perl/script/upload_userscript.pl" ;
    
    // ini ファイルに userscript.org の設定
    $inifile    = hidemarudir + "\\" + currentmacrobasename + ".ini" ;
    if( existfile($inifile) ){
        $userid     = getinistr( $inifile, "userscriptorg", "userid" ) ;
        $password   = getinistr( $inifile, "userscriptorg", "password" );
    }else{
        $userid     = input( "userscript.org のユーザー名:" ) ;
        $password   = input( "userscript.org のユーザー名:" ) ;
        writeinistr $inifile, "userscriptorg", "userid", $userid ;
        writeinistr $inifile, "userscriptorg", "password", $password ;
        message( $inifile + "に設定を保存しました" ) ;
    }
    
    gofiletop ;
    searchdown "@userscriptorg" ;
    if( result == 0 ){
        message( "@userscriptorg が見つかりません" ) ;
        endmacro ;
    }
    searchdown "http://userscripts.org/scripts/show/.*$", regular ;
    if( result == 0 ){
        message( "@userscriptorg が見つかりません" ) ;
        endmacro ;
    }
    $scriptid   = gettext( foundtopx, foundtopy, foundendx, foundendy ) ;
    question( $scriptid + " にアップロードしますか?" ) ;
    if( result == yes ){
        run "cmd /c perl " + $uploadpl
            + " -u " + $userid
            + " -p " + $password
            + " -i " + $scriptid
            + " -f \"" + filename2 + "\" & PAUSE" ;
    }
}
endmacro ;

upload_userscript.pl

# -u : userscript.org login id
# -p : userscript.org password
# -i : userscript url           e.g. http://userscripts.org/scripts/show/80824
# -f : userscript local path    e.g. C:\data\sample.user.js

use strict ;
use warnings ;
use WWW::Mechanize ;
use Getopt::Std ;

my $browser = '"C:\Program Files\Mozilla Firefox\firefox.exe"' ;
my %opts ;
getopt( 'u:p:i:f:', \%opts ) ;

exit if( ! defined( $opts{u} ) ) ;
exit if( ! defined( $opts{p} ) ) ;
exit if( ! defined( $opts{i} ) ) ;
exit if( ! defined( $opts{f} ) ) ;

my $mech    = WWW::Mechanize->new() ;
my $url     = "http://userscripts.org/login" ;
my $uploadurl   = $opts{i} ;
$uploadurl      =~ s|/show/|/upload/| ;
my $editurl     = $opts{i} ;
$editurl        =~ s|/show/|/edit/| ;

$mech->get($url) ;
$mech->form_number(2) ;
$mech->field( 'login', $opts{u} ) ;
$mech->field( 'password', $opts{p} ) ;
$mech->click() ;
$mech->get($uploadurl) ;
$mech->form_number(2) ;
$mech->field( 'src', $opts{f} ) ;
$mech->click() ;

system("$browser $editurl") ;

exit 0 ;
トラックバック - http://d.hatena.ne.jp/MotionBros/20100811

2010-08-09 Mon

avisynth を使って mp4 から avi 変換その2

| 02:36 |  avisynth を使って mp4 から avi 変換その2を含むブックマーク  avisynth を使って mp4 から avi 変換その2のブックマークコメント

Xacti で撮ったHD動画をまとめて低解像度に変換するスクリプト - ?D::MotionBros から

  • 1avs に対して 1job 化
  • ffindex も temp 内に作成
  • DivXインストールして圧縮を下記に設定
    • 動画の圧縮を divx
    • 音声の圧縮を mp3

を対応した wsh に書き直してみました。

@if (1==1) /*
@ECHO OFF
rem ========================================================
rem  MS-DOS 処理
rem ========================================================
CScript //Nologo //E:JScript "%~f0" %*
PAUSE
GOTO :EOF
rem */
@end

// =========================================================
//  JScript 処理
// =========================================================

var fpsnum  = 30 ;
var width   = 512 ;

var vdexe   = "C:\\Program Files\\VirtualDubMod_1_5_10_2_All_inclusive\\VirtualDubMod.exe" ;
var owsh    = WScript.CreateObject("WScript.Shell") ;
var ofs     = new ActiveXObject("Scripting.FileSystemObject") ;
var tempdir = ofs.GetSpecialFolder(2).Path + "\\" + WScript.ScriptName + ofs.getTempName() ;
var args    = WScript.Arguments ;

if( args.length === 0 ){
    WScript.Echo("Please drag & drop directory or mp4 file");
    WScript.Quit();
}

var mp4s    = new Array() ;

for( var i = 0 ; i < args.length ; i++ ){
    if( ofs.FolderExists(args(i)) ){
        findMp4(args(i)) ;
    }else{
        addMp4(args(i)) ;
    }
}

if( mp4s.length === 0 ){
    WScript.Quit() ;
}

makeTempDir() ;
makeJobs() ;
convert() ;
cleanup() ;

// 再帰的に mp4 ファイルを探す
function findMp4(dir){
    WScript.Echo("find : " + args(i));
    var osa = new ActiveXObject("Shell.Application") ;
    var of  = osa.NameSpace(dir) ;
    var ofi = of.Items() ;
    for( var i = 0 ; i < ofi.Count ; i++ ){
        var oi  = ofi.Item(i) ;
        if( oi.isFolder ){
            findMp4(oi.Path) ;
        }else{
            addMp4(oi.Path) ;
        }
    }
}

// avi ファイルパス取得
function getAviFilePath(path) {
    return path.replace(/\.mp4$/i,".avi") ;
}

// mp4 ファイルならリストに追加
function addMp4(path){
    if( path.search(/\.mp4$/i) === -1 ){
        debugPrint("error : " + path);
        return false ;
    }
    if( ofs.FileExists(getAviFilePath(path)) ){
        debugPrint("error : avi exist. " + path ) ;
        return false ;
    }
    
    WScript.Echo("add  : " + path);
    mp4s.push(path) ;
}

// tempdir 作成
function makeTempDir() {
    if( ofs.FolderExists(tempdir) ){
        debugPrint("delete : " + tempdir) ;
        ofs.DeleteFolder(tempdir) ;
    }
    ofs.CreateFolder(tempdir) ;
}

// jobs ファイル作成
function makeJobs() {
    for( var i = 0 ; i < mp4s.length ; i++ ){
        // avs ファイル作成
        debugPrint("makeavs : " + i + ".avs : " + mp4s[i]) ;
        var avs = ofs.createTextFile(tempdir + "\\" + i + ".avs") ;
        /* 
        avs.WriteLine("FFMpegSource2\(\"" + mp4s[i] 
            + "\", fpsnum=" + fpsnum 
            + ", atrack=-1, width=" + width
            + ", height=" + height + "\)") ;
        */
        var ffindex = tempdir + "\\" + i + ".ffindex" ;
        avs.WriteLine("file =\"" + mp4s[i] + "\"") ;
        avs.WriteLine("fps = " + fpsnum ) ;
        avs.WriteLine("a = FFAudioSource(file, cachefile=\"" + ffindex + "\"\)") ;
        avs.WriteLine("v = FFVideoSource(file, cachefile=\"" + ffindex + "\", fpsnum=fps\)") ;
        avs.WriteLine("clip = AudioDubEx(v, a)") ;
        avs.WriteLine("cw = Width(clip)") ;
        avs.WriteLine("ch = Height(clip)") ;
        avs.WriteLine("check = " + width ) ;
        avs.WriteLine("nw = cw > check ? check : cw")
        avs.WriteLine("nh = cw > check ? ch * check / cw : ch") ;
        avs.WriteLine("clip = SWScale(clip,width=nw,height=nh)") ;
        avs.WriteLine("return clip") ;
        avs.Close() ;
        // jobs ファイル作成
        debugPrint("makejobs : " + i + ".jobs") ;
        var jobs = ofs.createTextFile(tempdir + "\\" + i + ".jobs") ;
        var avspath = tempdir + "\\" + i + ".avs" ;
        var avipath = getAviFilePath( mp4s[i] ) ;
        avspath = avspath.replace(/\\/g, "\\\\") ;
        avipath = avipath.replace(/\\/g, "\\\\") ;
        WScript.Echo("make : " + avipath) ;
        jobs.WriteLine("VirtualDub.Open\(\"" + avspath + "\",\"\",0\)\;") ;
        jobs.WriteLine("VirtualDub.video.SetMode\(0\)\;") ;
        jobs.WriteLine("VirtualDub.stream[0].SetMode\(1\)\;") ;
        jobs.WriteLine("VirtualDub.stream[0].SetCompression\(85,24000,2,0,7000,1,12,\"AQACAAAAqAABAHEF\"\)\;") ;
        jobs.WriteLine("VirtualDub.video.SetMode\(3\)\;") ;
        jobs.WriteLine("VirtualDub.video.SetCompression\(0x78766964,0,10000,0\)\;") ;
        jobs.WriteLine("VirtualDub.video.SetCompData\(129,\"LWJ2MSA3ODAwMDAgLXZidiA0ODU0MDAwLDMxNDU3MjgsMzE0NTcyOCAtZGlyICJDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXHRha2VvXEFwcGxpY2F0aW9uIERhdGFcRGl2WFxEaXZYIENvZGVjIiAtYiAxIC1wcm9maWxlPTMA\"\)\;") ;
        jobs.WriteLine("VirtualDub.SaveAVI(\"" + avipath + "\"\)\;") ;
        jobs.WriteLine("VirtualDub.Close\(\)\;") ;
        jobs.Close() ;
    }
}

// コンバート
function convert() {
    for( var i = 0 ; i < mp4s.length ; i++ ){
        var command = "\"" + vdexe + "\" /c /x /s\"" + tempdir + "\\" + i + ".jobs\"" ;
        owsh.Run( command, 5, 1 ) ;
    }
}

// 掃除
function cleanup() {
    // tempdir 削除
    ofs.DeleteFolder(tempdir) ;
}

// デバッグプリント
function debugPrint(str) {
//  WScript.Echo(str) ;
}
トラックバック - http://d.hatena.ne.jp/MotionBros/20100809

2010-08-08 Sun

VirtualDubMod でエラーダイアログを消す .ahk

| 20:13 |  VirtualDubMod でエラーダイアログを消す .ahkを含むブックマーク  VirtualDubMod でエラーダイアログを消す .ahkのブックマークコメント

VirtualDubMod での動画変換バッチ処理中にときどきエラーが出てしまうので書いてみました。

バッチ処理する前にこれを立ち上げておけばエラーダイアログが出た瞬間にOKを押してくれます。

deleteVirtualDubErrorDialog.ahk

SetTitleMatchMode, 3
loop {
    WinGet, VDE,, VirtualDub Error
    ControlSend,, {Enter}, ahk_id %VDE%
}
トラックバック - http://d.hatena.ne.jp/MotionBros/20100808

2010-08-07 Sat

フェイウォンがいい味出してます【恋する惑星】

| 20:27 |  フェイウォンがいい味出してます【恋する惑星】を含むブックマーク  フェイウォンがいい味出してます【恋する惑星】のブックマークコメント

香港の街並みが見たくて借りて観ました。恋する二組のカップルがそれぞれ前編、後編に別れて展開するのですが後編に出てくるショートカットの女の子(フェイウォン)がよかったです。周りには別に気が無いよ、と思わせておきながらだんだん恋に夢中になっている様に何故か見とれてしまいました。「恋する惑星」って邦題もいい味出してます。

恋する惑星 [DVD]

恋する惑星 [DVD]

kireinamizuumikireinamizuumi 2010/09/29 16:59 こんにちは
ブログを拝見しました。
使いやすい変換ソフトと言うと、知っている限りこれが一番いいかな
4Videosoft 動画変換(windows)http://www.4videosoft.jp/video-converter-platinum.html

トラックバック - http://d.hatena.ne.jp/MotionBros/20100807

2010-08-06 Fri

よくわからない事が多い【G.I.ジョー】

| 23:15 |  よくわからない事が多い【G.I.ジョー】を含むブックマーク  よくわからない事が多い【G.I.ジョー】のブックマークコメント

GIジョーって言うとでかいコンバットフィギュアってイメージなのですが映画は近い未来でのハイテク先頭ものなんですね。出てくるキャラクターが多くて展開が細かい割には省略されている事が多くて状況を理解するのに戸惑う事が多かったです。あのキャラ数だともうちょい説明部分やエピソードを足して2部作にしたほうがよかったんじゃないかなぁ。でも単純に楽しめる映画だったので期待通りな感じでもありますね。

G.I.ジョー [DVD]

G.I.ジョー [DVD]

トラックバック - http://d.hatena.ne.jp/MotionBros/20100806

2010-08-05 Thu

秀丸で TortoiseSVN コミットを便利に使う方法

| 22:41 |  秀丸で TortoiseSVN コミットを便利に使う方法を含むブックマーク  秀丸で TortoiseSVN コミットを便利に使う方法のブックマークコメント

編集してOKだったら TortoiseSVNコミットしたい場合は下記のマクロが便利

save-commitTortoiseSVN.mac

save ;
run "C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe /command:commit /path:\"" + filename2 + "\" /notempfile /closeonend" ;
endmacro ;

秀丸で Windows バッチファイルを便利に使う方法

| 22:36 |  秀丸で Windows バッチファイルを便利に使う方法を含むブックマーク  秀丸で Windows バッチファイルを便利に使う方法のブックマークコメント

.bat ファイルを編集しては実行したい場合は下記のマクロが便利

save-runBatch.mac

save ;
if( filetype == ".bat" ){
    run "cmd /c \"" + filename2 + "\" & PAUSE" ;
}
endmacro ;

秀丸で JScript を便利に使う方法

| 22:44 |  秀丸で JScript を便利に使う方法を含むブックマーク  秀丸で JScript を便利に使う方法のブックマークコメント

.js ファイルを編集しては実行したい場合は下記のマクロが便利

save-runJScript.mac

save ;
if( filetype == ".js" ){
    run "cmd /c CScript \"" + filename2 + "\" //Nologo //E:JScript & PAUSE" ;
}
endmacro ;

秀丸で VirtualDubMod を便利に使う方法

| 22:36 |  秀丸で VirtualDubMod を便利に使う方法を含むブックマーク  秀丸で VirtualDubMod を便利に使う方法のブックマークコメント

VitualDubMod の jobs ファイルを編集しては実行する場合は下記のマクロが便利

保存して実行

save-runVirtualDubModJobs.mac

save ;
if( filetype == ".jobs" ){
    $exe    = "C:/Program Files/VirtualDubMod_1_5_10_2_All_inclusive/VirtualDubMod.exe" ;
    message $exe ;
    run "\"" + $exe + "\"/c /x /s\"" + filename2 + "\"" ;
}
endmacro ;

Xacti で撮ったHD動画をまとめて低解像度に変換するスクリプト

| 20:26 |  Xacti で撮ったHD動画をまとめて低解像度に変換するスクリプトを含むブックマーク  Xacti で撮ったHD動画をまとめて低解像度に変換するスクリプトのブックマークコメント

Xacti DMX-HD1010 でとったHDサイズの動画が重くて見づらいのでリサイズ処理をまとめてしたかったのですが、せっかくなのでスクリプト対応しているソフトでやってみる事にしました。

大きな要素は以下の3つ

参照:FrontPage - AviSynth.info

前準備

Avisynthダウンロードインストール

screenshot

no title


Mpeg4/H.264 がそのままだと読み込めないので Avisynth の FFmpegSource ダウンロード

screenshot

no title

7z ファイルを解凍出来ない場合は 7-Zipダウンロードインストール

screenshot

no title

解凍した FFmpegSource を C:\Program Files\AviSynth 2.5\plugins にコピー
  • doc/
  • FFMS2.avis
  • ffms2.dll
  • ffmsindex.exe
VirtualDubMod をダウンロードインストール

screenshot

no title


まずは Avisynth を触ってみる

sample.avs という下記のファイルをつくってみて VirtualDubMod にドラッグ&ドロップしてみる

FFMpegSource2("C:\data\avs\SANY0001.MP4", fpsnum=30, atrack=-1, width=400, height=225)

C:\data\avs\SANY0001.MP4 というファイルを

  • フレームレート : 30fps
  • 幅 : 400px
  • 高さ : 225px

にして読み込むという感じです。


次に VirtualDubMod のコマンドラインを試してみる

VirtualDubMod.exe /c /x /s"convert.jobs"

という感じで jobs ファイルを作っておけばコマンドラインで処理できるっぽいので avs ファイルをドラッグ&ドロップした後に GUI 上で job 登録してからjobs ファイルで保存してみました。

VirtualDub.Open("C:\\data\\avs\\sample.avs","",0);
VirtualDub.video.SetMode(0);
VirtualDub.SaveAVI("C:\\data\\avs\\SANY0001.avi");
VirtualDub.Close();

必要な要素だけ切り抜くと以下の4行があればいいようです。SetMode は 0 にすると DivX 方式になったのでこれにしてみましたがもっといい方法がありそうな気がします。


あとは wsh でまとめて処理できるようにしてみる。

ディレクトリもしくはファイルをドラッグ&ドロップしたら変換された avi がまだ無いものだけまとめて変換する仕組みをつくってみました。

mp4toAvi.js.bat

@if (1==1) /*
@ECHO OFF
rem ========================================================
rem  MS-DOS 処理
rem ========================================================
CScript //Nologo //E:JScript "%~f0" %*
PAUSE
GOTO :EOF
rem */
@end

// =========================================================
//  JScript 処理
// =========================================================

var fpsnum	= 30 ;
var width	= 480 ;
var height	= 270 ;

var vdexe   = "C:\\Program Files\\VirtualDubMod_1_5_10_2_All_inclusive\\VirtualDubMod.exe" ;
var owsh	= WScript.CreateObject("WScript.Shell") ;
var ofs     = new ActiveXObject("Scripting.FileSystemObject") ;
var tempdir = ofs.GetSpecialFolder(2).Path + WScript.ScriptName ;
var args    = WScript.Arguments ;

if( args.length === 0 ){
    WScript.Echo("Please drag & drop directory or mp4 file");
    WScript.Quit();
}

var mp4s    = new Array() ;
var jobfile	= tempdir + "\\temp.jobs" ;

for( var i = 0 ; i < args.length ; i++ ){
    if( ofs.FolderExists(args(i)) ){
        findMp4(args(i)) ;
    }else{
    	addMp4(args(i)) ;
    }
}

if( mp4s.length === 0 ){
	WScript.Quit() ;
}

makeTempDir() ;
makeAvs() ;
makeJobs() ;
convert() ;
cleanup() ;

// 再帰的に mp4 ファイルを探す
function findMp4(dir){
    WScript.Echo("find : " + args(i));
    var osa	= new ActiveXObject("Shell.Application") ;
    var of	= osa.NameSpace(dir) ;
    var ofi	= of.Items() ;
    for( var i = 0 ; i < ofi.Count ; i++ ){
    	var oi	= ofi.Item(i) ;
    	if( oi.isFolder ){
    		findMp4(oi.Path) ;
    	}else{
    		addMp4(oi.Path) ;
    	}
    }
}

// avi ファイルパス取得
function getAviFilePath(path) {
	return path.replace(/\.mp4$/i,".avi") ;
}

// mp4 ファイルならリストに追加
function addMp4(path){
    if( path.search(/\.mp4$/i) === -1 ){
        debugPrint("error : " + path);
        return false ;
    }
    if( ofs.FileExists(getAviFilePath(path)) ){
    	debugPrint("error : avi exist. " + path ) ;
    	return false ;
    }
    
    WScript.Echo("add  : " + path);
    mp4s.push(path) ;
}

// tempdir 作成
function makeTempDir() {
	if( ofs.FolderExists(tempdir) ){
		debugPrint("delete : " + tempdir) ;
		ofs.DeleteFolder(tempdir) ;
	}
	ofs.CreateFolder(tempdir) ;
}

// avs ファイル作成
function makeAvs() {
	for( var i = 0 ; i < mp4s.length ; i++ ){
		debugPrint("makeavs : " + i + ".avs : " + mp4s[i]) ;
		var avs = ofs.createTextFile(tempdir + "\\" + i + ".avs") ;
		avs.WriteLine("FFMpegSource2\(\"" + mp4s[i] 
			+ "\", fpsnum=" + fpsnum 
			+ ", atrack=-1, width=" + width
			+ ", height=" + height + "\)") ;
		avs.Close() ;
	}
}

// jobs ファイル作成
function makeJobs() {
	debugPrint("makejobs : tempjobs") ;
	var jobs = ofs.createTextFile(jobfile) ;
	for( var i = 0 ; i < mp4s.length ; i++ ){
		var avspath	= tempdir + "\\" + i + ".avs" ;
		var avipath	= getAviFilePath( mp4s[i] ) ;
		avspath	= avspath.replace(/\\/g, "\\\\") ;
		avipath	= avipath.replace(/\\/g, "\\\\") ;
		WScript.Echo("make : " + avipath) ;
		jobs.WriteLine("VirtualDub.Open\(\"" + avspath + "\",\"\",0\)\;") ;
		jobs.WriteLine("VirtualDub.video.SetMode\(0\)\;") ;
		jobs.WriteLine("VirtualDub.SaveAVI(\"" + avipath + "\"\)\;") ;
		jobs.WriteLine("VirtualDub.Close\(\)\;") ;
	}
	jobs.Close() ;
}

// コンバート
function convert() {
	var command = "\"" + vdexe + "\" /c /x /s" + jobfile ;
	owsh.Run( command, 5, 1 ) ;
}

// 掃除
function cleanup() {
	// tempdir 削除
	ofs.DeleteFolder(tempdir) ;
	
	// ffindex ファイル削除
	for( var i = 0 ; i < mp4s.length ; i++ ){
		index	= mp4s[i] + ".ffindex" ;
		if( ofs.FileExists(index) ){
			debugPrint( "delete : " + index ) ;
			ofs.DeleteFile(index) ;
		}
	}
}

// デバッグプリント
function debugPrint(str) {
//	WScript.Echo(str) ;
}
トラックバック - http://d.hatena.ne.jp/MotionBros/20100805

2010-08-04 Wed

楽天証券にて株や FX について始めてみました。

| 21:44 |  楽天証券にて株や FX について始めてみました。を含むブックマーク  楽天証券にて株や FX について始めてみました。のブックマークコメント

いままでほとんど投資には興味なかったのですが経済の事を知るいいきっかけにもなるし投資というものを始めてみました。とりあえず楽天証券で特定口座を開設して株と FX とはどういうものなのか体験してみたいと思います。

トラックバック - http://d.hatena.ne.jp/MotionBros/20100804

2010-08-03 Tue

ダーリンは外国人

| 01:51 |  ダーリンは外国人を含むブックマーク  ダーリンは外国人のブックマークコメント

なかなか面白かったですが國村隼さんがまたもやいい味出してますね〜

アウトレイジもそうでしたがこういう味がある役者さんがいるだけで観てよかったなと思えます。

トラックバック - http://d.hatena.ne.jp/MotionBros/20100803
Error : RSSが取得できませんでした。
最新言及ISBN/ASIN 20 件
  • ワイヤレスサラウンドヘッドセット  (CUHJ-15001)
  • アンチャーテッド 海賊王と最後の秘宝 デラックスエディション 【早期購入特典】オリジナルPlayStation4テーマ同梱&【Amazon.co.jp限定】武器カスタムスキン「雪原用武器」が入手できるプロダクトコード付
  • BUFFALO Giga 11n/a&11n/g AOSS2対応 無線LAN親機 【Wii U動作確認済み、iPhone5・Android端末対応】 WZR-600DHP
  • FUJITSU ScanSnap S1500 FI-S1500
  • カール事務器 裁断機 ペーパーカッター A4対応 40枚裁断 DC-210N
  • 月に囚われた男 コレクターズ・エディション [DVD]
  • 月に囚(とら)われた男 [Blu-ray]
  • エスター [Blu-ray]
  • エスター [DVD]
  • ドロップ スペシャル・エディション [DVD]
  • ドロップ スタンダード・エディション [DVD]
  • アヒルと鴨のコインロッカー [DVD]
  • Sucker Punch
  • アマルフィ 女神の報酬 スタンダード・エディション [DVD]
  • アマルフィ 女神の報酬 ビギンズ・セット ブルーレイディスク (本編BD+特典DVD)2枚組 [Blu-ray]
  • ロード・トゥ・パーディション <特別編> [DVD]
  • ロード・トゥ・パーディション [Blu-ray]
  • 海がきこえる [DVD]
  • なくもんか 豪華版 <初回生産限定> [DVD]
  • なくもんか [Blu-ray]
レビューまとめはこちら
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |