サンプルスクリプト/条件分岐

今日の献立

インストールされている AviSynth のバージョンによって、使用する関数を振り分けます。バージョン番号の取得には VersionNumber 関数を、条件による振り分け処理には三項演算子を使用します。

今回は例として Info フィルタを取り上げます。Info は AviSynth 2.5 から追加されたフィルタで、これよりも古いバージョンの AviSynth では利用することができません。そこで、AviSynth 2.5 以降なら Info を、AviSynth 2.5 よりも古いバージョンでは info_modoki 関数(AviSynth 2.0.x でも利用可能なユーザー定義関数)を使用するようなスクリプトを作ってみましょう。

材料

  • VersionNumber(AviSynth 内蔵のスクリプト関数)
  • 三項演算子(?:)
  • 振り分けられるフィルタ(この 2 つは別のフィルタでもよい。)
    • Info(AviSynth 内蔵フィルタ)
    • info_modoki(ユーザー定義関数)
  • AviSource(AviSynth 内蔵フィルタ)
    • ソースとなるビデオクリップの読み込みに使用。他のビデオ入力フィルタでもよい。

作り方

  1. クリップの情報を取得したい行に、三項演算子を使った式を記述します。下の例では、「VersionNumber が 2.5 より小さいなら info_modoki、さもなければ Info」が使用されます:
    AviSource("example.avi") # ソース
    (VersionNumber < 2.5) ? info_modoki() : Info() # VersionNumber が 2.5 より小さいなら info_modoki、さもなければ Info
    
  2. AVS ファイルの任意の行に info_modoki 関数を記述するか、info_modoki 関数を含む関数定義ファイルを Import するのを忘れないでください。
    # 関数定義ファイルのインポート
    Import("info_modoki.avs")
    
    または、
    # info_modoki 関数
    function info_modoki(clip clip) {
    #(中略)
    }
    

ひとくちメモ: その他のバージョンを調べる関数

バージョン番号を確認できる関数には、Version と VersionNumber 以外にも、バージョン番号を文字列で返す VersionString という関数があります。

使用例:

BlankClip(width=360, height=20) # 360x20 の空のクリップを生成
ver_str = VersionString() # バージョン番号(文字列)を変数 ver_str に代入
Subtitle(ver_str) # Subtitle で ver_str を表示
v.png

関連レシピ

最終更新日時: 2014-03-11 (火) 03:51:21 (3862d)