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. 条件が真の場合は ステートメント1 が実行される。
  2. 偽の場合は ステートメント2 が実行される。

このような流れで実行されます。

また、複数の条件を組み合わせることも可能です。

if ( 条件1 ) {
  ステートメント1
} else if ( 条件2 ) {
  ステートメント2
} else {
  ステートメント3
}

この場合、次のような流れで実行されることになります。

  1. 条件1 が真なら、ステートメント1 が実行される。条件1 が偽なら 2 へ
  2. 条件2 が真なら、ステートメント2 が実行される。条件2 が偽なら 3 へ
  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)
}
x86.png

Windows 8.1 64bit、AvsPmod 32bit で開いたところ。

AvsPmod が 32bit 版のため、32bit 版の AviSynth+ が使われている。

x64.png

Windows 8.1 64bit、VirtualDub 64bit で開いたところ。

参考

最終更新日時: 2014-08-03 (日) 23:21:07 (3547d)