これによりAvsPmodやVirtualDub等でプレビューできるようになったので、この前書いたプレビュー用スクリプトは(Windowsでは)早くも用済みとなった次第です。いや、大変喜ばしい。
この記事はVapourSynth r18までを対象としています。
r19以降では使い方が一部変更されたので、この記事のとおりではうまくいきません。
VFWモジュールの使い方
1.スクリプトを書く
#sample.vpy import vapoursynth as vs core = vs.Core() core.std.LoadPlugin('C:/foo/bar/ffms2.dll') clip = core.ffms2.Source('D:/hoge/fuga/video.mp4') clip = core.resize.Bicubic(clip, clip.width. clip.height, vs.YUV420P8) last = clip
注意する点
・スクリプト名は普通のPythonのように拡張子".py"ではなく、".vpy"として保存すること。・VFWモジュールを使う場合、出力先に渡すクリップのインスタンス名は必ず'last'とすること。
'last'以外の名前のクリップは渡せません。
・プラグインやソースファイルの読み込みは、ファイルパスを必ずフルパスで記述すること。
相対パスで扱うのは失敗のもとです。
これはVideo for Windowsが8bit以上のものを扱うことを想定していないことによる制限です。
なお、RGBでもVSのRGB24はplanarフォーマットなので、これも使えません。RGBの場合はCOMPATBGR32に変換する必要があります。
・VFWモジュールを使う際は、クリップのoutputメソッドは使えません。
2.読み込ませる
・AviSynthの場合
AviSynthにvpyを読みこませる場合はAVIFileSource(又はAVISource)を使います。・VirtualDubの場合
通常のaviやavsと違ってVirtualDubではvpyをD&Dで読み込ませることはできません(拡張子vpyがVirtualDubには登録されていないため)。VirtualDubのメニューから
File -> Open video file
-> 読み込ませるファイルをダイアログで指定 -> 'ファイルの種類'を'AVIFile input driver(compat)(*.avs,*vdr)'に変更 -> '開く’
と、現時点ではちょっと面倒な手順が必要になります。
追記:
こちらの最新テスト版から、vpyを直で開けるようになりました。
・AviUtlの場合
AviUtl0.99k以降であれば、内蔵の'AVI File Reader(Video for Windows)'、または'DirectShow File Reader'でvpyを読み込むことができます。ただし、AviUtlですので、クリップのフォーマットはCOMPATYUY2に変換しておきましょう。
なお、vpyになんらかの誤りがあった場合(ファイルパスを相対パスで書いたため、読み込みで不備がおこったとか)、AviUtlが固まってエクスプローラごと落ちて一旦Ctrl+Alt+Delでログオフしなければならなくなったりますので、くれぐれも注意しましょう。
・avconv/ffmpegの場合
avconv/ffmpegはAVIの読み込みにはVFWを使用しませんが、avsの読み込みはVFWを使用します。よって、これを利用すればvpyをpipeを使わずに渡すことができます。
avconv.exe -f avs -i "d:/herp/derp/sample.vpy" -c:v utvideo out.aviもっとも、こういったコマンドラインツールはPythonスクリプトから操作するなりしたほうがラクだと思います。
10bitYUVとかの入力にも対応してるし。
追記:
2013年3月以降、ffmpeg.exeではこの方法は使えなくなりました(avs読み込みにVFWを使わなくなったため)。
avconv.exeならばまだ使えます。