サンプルスクリプト/1フレームのみ選択する
本日のメニュー †
今回は、AviSynth 内蔵の Trim フィルタを使って、クリップから任意の 1 フレームを選択してみましょう。じつは、選択開始フレームと選択終了フレームを指定する方法では、意図したとおりの結果にならない場合もあります。そのあたりについて、とくに注意してお読みください。
なお、AviSynth でカット編集を行う方法は、Trim フィルタを含めていくつか存在します。詳しくは、選択範囲の指定方法を参照してください。
使用するもの †
- Trim
- AviSource
- サンプル動画(example.avi)の読み込みに使用。
- サンプル動画(example.avi)
- その他に、フレーム数の確認のために、以下の関数を使用します。
- Subtitle
- FrameCount: クリップの総フレーム数をカウント(ClipProperties を参照)。
- String: 数値を文字列に変換(ScriptFunctions を参照)。
作り方 †
- まず編集したいファイルを読み込みます。今回は例として、AviSource フィルタを使って、サンプル動画を読み込みます。
# ソースの読み込み AviSource("example.avi")
- 編集に移る前に、総フレーム数がどのように変化したのかを確認するために、以下のスクリプトを追加します。これは確認のためのものですので、実際に編集する際には必要ありません。なお、この部分の内容については、サンプルスクリプト/数値を文字列に変換するを参照してください。
# 以下、デバッグ用(「サンプルスクリプト/数値を文字列に変換する」を参照) num = FrameCount() # 総フレーム数 str = String(num) # num を文字列に変換 Subtitle(str) # str を表示
画像の左上に表示されている 6 が、編集前のクリップの総フレーム数です。 - それでは、Trim フィルタを使って、1 フレームだけを選択してみることにしましょう。まずは、選択開始フレームと選択終了フレームを同じフレーム番号にしてみます。
# カット編集 Trim(1, 1) # 1 〜 1 まで => 第 1 フレームのみ
これを 1 のソースの読み込みと 2 のデバッグ部分の間に挿入してください。 意図したとおり、第 1 フレームだけが選択されています。 - しかし、この方法では、ある場合においてまずいことが起こりえます。それは、第 0 フレーム、つまりクリップの一番先頭のフレームを選択する場合です*1。実際にやってみましょう。
# カット編集 Trim(0, 0) # 0 〜 0 まで?
さきほどと同じように、ソースの読み込みとデバッグ部分の間に挿入します。 しかし、このスクリプトをプレビューしてみると、編集前のクリップと同じフレーム数の 6 が表示されています。じつは Trim フィルタの選択終了フレーム(last_frame パラメータ)を 0 に設定すると、クリップ全体を選択するようになっているのです。 - あらかじめ選択したいフレーム数が決まっている場合は、Trim フィルタのもう 1 つの指定方法を使用すると便利です。それは、さきほど選択終了フレームの番号を指定していた箇所に、負の値で選択したいフレーム数を指定する方法です。1 フレームだけを選択したいなら、-1 と指定します。
# カット編集 Trim(0, -1) # 負の値にするとフレーム数
これで第 0 フレームだけを選択することができました。もちろん、第 0 フレーム以外のフレームを選択したい場合や任意のフレーム数を選択したい場合にも、こちらの負の値を使用する方法を使用することができます。 - 完成したスクリプトは、以下のとおりです(デバッグ部分は省略)。
# ソースの読み込み AVISource("example.avi") # カット編集 Trim(0, -1) # 第 0 フレームのみを選択
関連レシピ †
最終更新日時: 2014-03-11 (火) 03:50:51 (3862d)