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制御用ユーザー定義関数

