サンプルスクリプト/総フレーム数の取得
今日の献立 †
単にビデオクリップの総フレーム数を知りたいだけなら、Info フィルタで確認することができます。しかし、もし総フレーム数の値そのものを利用したいようなときには、FrameCount を使うとよいでしょう。
今回は、FrameCount を使って取得した総フレーム数を、Subtitle フィルタで表示させるというスクリプトを作ってみましょう。
材料 †
- FrameCount(AviSynth 内蔵関数)
- String(AviSynth 内蔵関数)
- AviSource(AviSynth 内蔵フィルタ)
- 他のビデオ入力フィルタでもよい。
- Subtitle(AviSynth 内蔵フィルタ)
- FrameCount で取得した総フレーム数の確認に使用。
作り方 †
- ビデオクリップを読み込みます。
AviSource("C:\path\example.avi")
- FrameCount 関数を使って総フレーム数を取得し、変数 total_frames に代入します。
total_frames = FrameCount() # 総フレーム数を取得して、変数 total_frames に代入
- 今回は、Subtitle フィルタで総フレーム数を表示するため、変数 total_frames を文字列(String 型)に変換して、変数 str に代入します。String 関数を使えば、整数や小数を文字列に変換することができます。
str = String(total_frames) # 文字列に変換して、変数 str に代入
- 最後に、Subtitle フィルタを使って、変数 str をクリップの上に表示します。
Subtitle("Length: " + str) # str をクリップ上に表示
- 完成したスクリプトは、以下のとおりです:
AviSource("C:\path\example.avi") total_frames = FrameCount() # 総フレーム数を取得して、変数 total_frames に代入 str = String(total_frames) # 文字列に変換して、変数 str に代入 Subtitle("Length: " + str) # str をクリップ上に表示
ひとくちメモ: 特別な変数 last †
AviSource("C:\path\example.avi") total_frames = FrameCount() # 総フレーム数を取得して、変数 total_frames に代入 # 以下略
クリップを変数に代入しなかった場合、最後に処理したクリップに割り当てられる特別な変数 last に代入されます。このため、上の例では、一見、FrameCount 関数には何の引数も指定していないように見えますが、じつは、
total_frames = FrameCount(last)
または、
total_frames = last.FrameCount()
と指定した場合と同じことになります。
clip = AviSource("C:\path\example.avi") total_frames = FrameCount(clip) # 総フレーム数を取得して、変数 total_frames に代入 # 以下略 # なお、この場合、Subtitle でも、入力として変数 clip を指定する必要がある。
あらかじめクリップを変数(上の例では clip)に代入しているときは、FrameCount 関数の引数として、その変数を明示する必要があります。
関連レシピ †
- サンプルスクリプト/クリップの情報を表示する
- サンプルスクリプト/数値を文字列に変換する
最終更新日時: 2014-03-11 (火) 03:51:22 (3997d)