サンプルスクリプト/条件分岐 のバックアップの現在との差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#contents

* 今日の献立 [#q846a1e6]

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

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

* 材料 [#r78bb153]

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

* 作り方 [#fe6cea45]

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

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

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

''使用例:''

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

#ref(version_string_257a3.png)
#ref(v.png)

* 関連レシピ [#m372a791]

-サンプルスクリプト/AviSynthのバージョンを確認する
-サンプルスクリプト/クリップの情報を表示する
-[[サンプルスクリプト/バージョンの確認]]
-[[サンプルスクリプト/クリップの情報を表示する]]