ConditionalReader で文字列を返す方法が上記の AviSynth オフィシャルサイト内のページに追記されています。
ConditionalReader では、int/float/bool のいずれかの型しか扱うことができないため、そのままでは string 型の値を返すことができません。
上記のページで紹介されている方法では、以下のような手順を踏むことで文字列を返しています:
1.string 型の変数をあらかじめ用意する(例では別のファイル(strings.txt )に分けられているがメインの AVS に記述してもよい)。この時、変数の名前を「接頭辞文字列+整数」という風にする(例では「n + 整数」):
n0=""
n1="Intro"
n2="Main"
n3="Credits"
2.ConditionalReader に渡すファイル(range_string.txt)では int 型の値を返す(1, 2, 3, etc.)
3.ConditionalReader からは int 型の値が戻されるので、string を使って文字列に変換して、Eval で 1 で指定した接頭辞(n)と組み合わせて変数名を生成する:
import("strings.txt")
ScriptClip("""subtitle(Eval("n"+string(mystringindex)))""")
ConditionalReader("range_string.txt", "mystringindex")
詳しくは、上記の ConditionalReader のページ、および、下記の関連リンクを参照してください。
関連リンク
- ConditionalReader - Avisynth
- Cue Points / Frames - Doom9’s Forum
- 今回の方法が追記される元になったスレッド。
- AviSynth Wiki - ConditionalReader
- 日本語訳。今回の件については未訳。
【Tipsの最新記事】

