バッチファイルで AviSynthスクリプト を生成したい
なぜバッチファイルで AviSynthスクリプト(AviSynthファイル) を生成したいのかといいますと、たとえは自動で x264 等のエンコーダーにデータを渡して変換したいからなんですよね。
バッチファイルにドラッグ&ドロップしたファイルのパスや名前を代入する方法自体は一般的なんですが、ドロップしたファイル情報を含むテキストファイルを生成する方法は検索してもあまり出てこないので、作ってみました。
スクリプト
例1(DirectShowSource)
早速ですがスクリプトです。下のスクリプトをコピーしてテキストファイルに貼り付け、拡張子を .bat にて保存してください。
なおDirectShowSourceはAvisynth標準の入力関数ですが、環境にスプリッターやデコーダーがインストールされていないと再生出来ない事に注意してください。またConvertToYV12() は x264 向けに追加してますが、単純に動画を開きたいだけなら削除しても大丈夫です。
SET InFile=%~dpnx1
ECHO DirectShowSource("%InFile%") > "%InFile%.avs"
ECHO ConvertToYV12() >> "%InFile%.avs"
ECHO return last >> "%InFile%.avs"
そうすると、以下のようになります。なおここではバッチファイルを DirectShowSource.bat というファイル名にしています。
次に、先程作成したバッチファイルに動画ファイルをドラッグ&ドロップします。
AviSynthスクリプトが生成されました。これでAviSynthスクリプトの完成です。
一応メモ帳で中身を確認した例です。きちんとドロップしたファイル名を含むスクリプトになっています。
例2(FFmpegSource)
例1ではDirectShowSourceを使てますが、当然他の入力方法でも使えます。例えば以下の例はFFmpegSourceをつかってます。
なおFFmpegSourceはAvisynth標準の入力関数では無い事から、別途プラグインを導入する必要がある事に注意してください。ただこのプラグインはFFmpegで読めこめるフォーマット全てに対応しており、非常に便利でありますので導入しておくと幸せになれます。
SET InFile=%~dpnx1
ECHO FFIndex("%InFile%") > "%InFile%.avs"
ECHO AudioDubEX(FFVideoSource("%InFile%"),FFAudioSource("%InFile%")) >> "%InFile%.avs"
ECHO ConvertToYV12() >> "%InFile%.avs"
ECHO return last >> "%InFile%.avs"
解説
SET InFile=%~dpnx1
「SET InFile」で「InFile」という変数を設定ます。また「%~dpnx1」は、ドラッグ&ドロップしたファイルのフルパスを取得するコマンドです。よって2つを組み合わせることで、「InFile」という変数にドロップしたファイルのフルパスを代入します。
ECHO DirectShowSource("%InFile%") > "%InFile%.avs"
「ECHO」はコマンドプロンプト上にコメントを表示するコマンドです。また「>」はコマンドプロンプトの情報をテキストファイルに書き出すコマンドです。よって上記コマンドで、ドロップしたファイル名のテキストファイル(AviSynthファイル)を生成する事が出来ます。
なお「>」はテキストファイルを上書き、「>>」は追記というコマンドになるので、一つ目のみ「>」にしてあります。
所感
これで簡単にバッチファイルからAviSynthスクリプトを生成できます!
今回はAviSynthスクリプトを生成しましたが、他の事にも流用できるので、覚えておくとできる事が広がりますよ~
コメント
[…] 先日このブログで、「Avisynthスクリプトを生成するバッチファイル」を書いてみたんですが、それを発展させて、動画をドラッグ&ドロップするだけで「H264+AAC」に変換できるバッチファ […]