サンプルスクリプト/総フレーム数の取得

今日の献立

単にビデオクリップの総フレーム数を知りたいだけなら、Info フィルタで確認することができます。しかし、もし総フレーム数の値そのものを利用したいようなときには、FrameCount を使うとよいでしょう。

今回は、FrameCount を使って取得した総フレーム数を、Subtitle フィルタで表示させるというスクリプトを作ってみましょう。

材料

  • FrameCount(AviSynth 内蔵関数)
  • String(AviSynth 内蔵関数)
  • AviSource(AviSynth 内蔵フィルタ)
    • 他のビデオ入力フィルタでもよい。
  • Subtitle(AviSynth 内蔵フィルタ)
    • FrameCount で取得した総フレーム数の確認に使用。

作り方

  1. ビデオクリップを読み込みます。
    AviSource("C:\path\example.avi")
    
  2. FrameCount 関数を使って総フレーム数を取得し、変数 total_frames に代入します。
    total_frames = FrameCount() # 総フレーム数を取得して、変数 total_frames に代入
    
  3. 今回は、Subtitle フィルタで総フレーム数を表示するため、変数 total_frames を文字列(String 型)に変換して、変数 str に代入します。String 関数を使えば、整数や小数を文字列に変換することができます。
    str = String(total_frames) # 文字列に変換して、変数 str に代入
    
  4. 最後に、Subtitle フィルタを使って、変数 str をクリップの上に表示します。
    Subtitle("Length: " + str) # str をクリップ上に表示
    
  5. 完成したスクリプトは、以下のとおりです:
    AviSource("C:\path\example.avi")
    total_frames = FrameCount() # 総フレーム数を取得して、変数 total_frames に代入
    str = String(total_frames) # 文字列に変換して、変数 str に代入
    Subtitle("Length: " + str) # str をクリップ上に表示
    
t.png

ひとくちメモ: 特別な変数 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 (3697d)