mpegファイルをDivXにエンコードするためにVirtualDubModを使っているけど、読み込みもエンコードもかなり遅い。で調べてみたらAviSynthのフィルタを使って読み込んだりフィルタを掛けたりするとだいぶ早くなるらしい。しかしそのためにはテキストファイルを毎回作成しなければならない。じゃここはいつものphpスクリプトでも、と思ったけどphpの場合、外部ファイルを実行したらそれが終わるまでスクリプトに戻ってこない仕様っぽい(細かい検証はしてないので間違っているかも)。じゃぁたまに使うWinBatchEnhanserかhspかと思ったけど、なんの気の迷いか、なでしこに挑戦。
作ったのが以下のソース。
もし、コマンドライン¥1が「-debug::*」にワイルドカード一致ならば、 コマンドライン¥1は空。 コマンドライン\1を表示。 mpgファイル名はコマンドライン\1 もしmpgファイル名が空ならば 「ファイルが指定されてへんがな」をいう 終わる もしmpgファイル名の拡張子抽出が「.mpg」ならば avsファイル名はmpgファイル名を「.avs」に拡張子変更 strは「LoadAviUtlInputPlugin( "C:\Program Files\AviSynth 2.5\plugins\m2v.vfp","MPEG2VIDEO" ){改行}MPEG2VIDEO( "_____________" ) 」。 strはstrの「_____________」をmpgファイル名に置換 strを表示 strをavsファイル名に保存 「"C:\Program Files\movies\VirtualDubMod\VirtualDubMod.exe" 」&avsファイル名を起動 #入力ファイル本体を表示 違えば 「ファイルタイプがちゃうがな」をいう ここまで 終わる
これをコンパイルして、ショートカットを作って、そこにmpegファイルをドラッグ&ドロップするとavsスクリプトファイルを作って、それを読み込んでVirtualDubが起動するという寸法。
さすがになでしこのシンタクスハイライトは用意されていないようで。