サンプルスクリプト/クリップの総時間を算出する
今日の献立 †
AviSynth には、ビデオクリップの長さ(総時間)を直接取得するような関数はありません。しかし、クリップの総フレーム数を取得する FrameCount とフレームレート*1を取得する FrameRate を組み合わせることによって、クリップの総時間を知ることができます。
今回は、これらの関数を使って算出したビデオクリップの総時間を、Subtitle フィルタで表示させるというスクリプトを作ってみましょう。
なお、単にビデオクリップの総時間を知りたいだけなら、Info フィルタで確認することもできます。
材料 †
- FrameCount(AviSynth 内蔵関数)
- FrameRate(AviSynth 内蔵関数)
- String(AviSynth 内蔵関数)
- AviSouce(AviSynth 内蔵フィルタ)
- 他のビデオ入力フィルタでもよい。
- Subtitle(AviSynth 内蔵フィルタ)
- FrameCount で取得した総フレーム数の確認に使用。
作り方 †
- ビデオクリップを読み込みます。
AviSource("C:\path\example.avi") # ソース
- FrameCount 関数を使って総フレーム数を取得し、変数 total_frames に代入します。
total_frames = FrameCount() # 総フレーム数を取得して、変数 total_frames に代入
- FrameRate 関数を使ってフレームレートを取得し、変数 frame_rate に代入します。
frame_rate = FrameRate() # フレームレートを取得して、変数 frame_rate に代入
- 総フレーム数をフレームレートで割って総時間を求め、変数 total_time に代入します。
total_time = total_frames / frame_rate # 総フレーム数 / フレームレート => 総時間
- 今回は、Subtitle フィルタで総フレーム数を表示するため、変数 total_time を文字列(String 型)に変換して、変数 str に代入します。String 関数を使えば、整数や小数を文字列に変換することができます。
str = String(total_time) # 文字列に変換して、変数 str に代入
- 最後に、Subtitle フィルタを使って、変数 str をクリップの上に表示します。
Subtitle("Time: " + str) # str をクリップ上に表示
- 完成したスクリプトは、以下のとおりです:
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 をクリップ上に表示
関連レシピ †
- サンプルスクリプト/総フレーム数の取得
- サンプルスクリプト/数値を文字列に変換する
最終更新日時: 2014-03-11 (火) 03:51:08 (3998d)