サンプルスクリプト/クリップの総時間を算出する

今日の献立

AviSynth には、ビデオクリップの長さ(総時間)を直接取得するような関数はありません。しかし、クリップの総フレーム数を取得する FrameCount とフレームレート*1を取得する FrameRate を組み合わせることによって、クリップの総時間を知ることができます。

今回は、これらの関数を使って算出したビデオクリップの総時間を、Subtitle フィルタで表示させるというスクリプトを作ってみましょう。

なお、単にビデオクリップの総時間を知りたいだけなら、Info フィルタで確認することもできます。

材料

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

作り方

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

関連レシピ

  • サンプルスクリプト/総フレーム数の取得
  • サンプルスクリプト/数値を文字列に変換する

*1 fps = frame per second(1 秒あたりのフレーム数)

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