AviSynthPlus/if
このページについて †
このページでは、if 文を使った条件分岐について説明します。AviSynth+ で利用可能です。
なお、AviSynth+ 公式のヘルプで if 文に関する説明を確認できなかったため、以下の説明は元になった GScript プラグインの説明を参考に作成しました。
オリジナル版 AviSynth では ... †
なお、オリジナル版の AviSynth では if 文を使った条件分岐はできませんが、GScript プラグインを使うことによって、同等のことが実現可能となります。その際、以下のように for 文全体を GScript() の中に入れてやる必要があります。
GScript(""" # if 文 """)
また、条件演算子(?:)を使っても、条件分岐を行うことは可能です。
if 文の書き方 †
if ( 条件 ) { ステートメント }
- 条件: この条件が真なら、以下のステートメントが実行される。
- ステートメント: 条件が真の場合にのみ実行したいスクリプトを書く。複数行可。
if ~ else を使った複数の分岐 †
条件が偽の場合にも何かを実行したい場合は、else 節を使います。
if ( 条件 ) { ステートメント1 } else { ステートメント2 }
- 条件が真の場合は ステートメント1 が実行される。
- 偽の場合は ステートメント2 が実行される。
このような流れで実行されます。
また、複数の条件を組み合わせることも可能です。
if ( 条件1 ) { ステートメント1 } else if ( 条件2 ) { ステートメント2 } else { ステートメント3 }
この場合、次のような流れで実行されることになります。
- 条件1 が真なら、ステートメント1 が実行される。条件1 が偽なら 2 へ
- 条件2 が真なら、ステートメント2 が実行される。条件2 が偽なら 3 へ
- ステートメント3 が実行される。
使用例 †
nukadoko: AviSynth: 32bit/64bit 使い分け の is_x86_64() 関数を使った例を紹介します。
/* 参考: nukadoko: AviSynth: 32bit/64bit 使い分け http://otsukemono.blogspot.jp/2014/04/avisynth-32bit-64bit.html */ function is_x86_64() { # バージョン番号を文字列として取得 ver_str = VersionString() # 32/64bitを表す情報を切り出す ver_str = LeftStr( RightStr( ver_str, 4 ), 3 ) # 文字列を比較して x64 と等しいなら、true を返す return StrCmpi( ver_str, "x64" ) == 0 ? true : false } # プラグインディレクトリの設定 if (is_x86_64) { # is_x86_64 が true なら、こちらのブロックが実行される Plugin_Dir = "C:\foo\bar\plugins64" # 64bit 用プラグインのディレクトリ } else { # さもなければ、こちらのブロックが実行される Plugin_Dir = "C:\foo\bar\plugins" # 32bit 用プラグインのディレクトリ } # ここからは動作確認用 BlankClip(width=320, height=240) # 空のクリップを生成 if (is_x86_64) { # is_x86_64 が true なら、こちらのブロックが実行される Subtitle("64bit version installed.\nPlugins directory is: " + Plugin_Dir, lsp=1) } else { # さもなければ、こちらのブロックが実行される Subtitle("32bit version installed.\nPlugins directory is: " + Plugin_Dir, lsp=1) }
Windows 8.1 64bit、AvsPmod 32bit で開いたところ。
AvsPmod が 32bit 版のため、32bit 版の AviSynth+ が使われている。
Windows 8.1 64bit、VirtualDub 64bit で開いたところ。
参考 †
- GScript - language extensions for Avisynth - Doom9's Forum
- サンプルスクリプト
- nukadoko: AviSynth: 32bit/64bit 使い分け
- nukadoko: avs制御用ユーザー定義関数