フィールドオーダーの確認

はじめに

フィールドオーダーの明示の「フィールドオーダーを明示する理由」に記したように、AviSynth では「ソースクリップ本来のフィールドオーダー」と「AviSynth が仮定するフィールドオーダー」を区別する必要があります。ここでは、その両者について、それぞれ確認する方法を紹介します。

ソースクリップ本来のフィールドオーダーを確認する

ソースクリップ本来のフィールドオーダーはキャプチャカードによって決まるため、キャプチャする毎、エンコードする毎に確認する必要はありません。なお、一般的に、DV キャプチャしたビデオクリップはボトムフィールドファーストであるとされています。

SeparateFieldsを使った判定法

AviSynth に内蔵されている SeparateFields は、フレームベースのビデオクリップをフィールド単位に分離するフィルタです。これを使って、ソースクリップ本来のフィールドオーダーを判定することができます。

手順は、以下のとおりです:

  1. まず、ソースクリップを読み込んだ直後に AssumeTFF または AssumeBFF を使用し、そのクリップのフィールドオーダーがトップフィールドファースト(TFF)またはボトムフィールドファースト(BFF)であると明示的に仮定します(AssumeTFF と AssumeBFF については、フィールドオーダーの明示を参照)。
  2. さらにその直後の行に SeparateFields フィルタを適用してフィールドごとに分離します。
  3. そして、AssumeTFF を使った場合と AssumeBFF を使った場合の両者を比較します。このとき、もし AssumeTFF を使った方がなめらかに再生されればソースクリップのフィールドオーダーは TFF、AssumeBFF を使った方がなめらかに再生されれば BFF であると考えられます。

なお、比較するときは、なるべく動きのあるシーンで行うのがいいでしょう。

使用例

  • ソース
    org.png
    上の画像は、サンプルのビデオクリップ(filefieldorder.avi(Huffyuv、640x480、YUY2、2 フレーム、323KB))から抽出したフレーム画像を縮小して横に並べたものです。左から順に、フレーム 0、フレーム 1 です。
  • トップフィールドファーストと仮定した場合
    • スクリプト
      AviSource("fieldorder.avi")
      AssumeTFF() # TFF と仮定
      SeparateFields() # フィールド分離
      
      AssumeTFF を使って TFF であると仮定。SeparateFields を使ってフィールドを分離しました。
    • 出力画像
      tff.png
      上の画像は、フィールド分離後の各フィールドを順に横に並べたものです。左から順に、フレーム 0 のトップフィールド、フレーム 0 のボトムフィールド、フレーム 1 のトップフィールド、フレーム 1 のボトムフィールドです。
    • 結果
      • 電車が、左から右へなめらかに移動しているのがわかります。このことから、このクリップのフィールドオーダーは TFF であると考えらます。
  • ボトムフィールドファーストと仮定
    • スクリプト
      AviSource("fieldorder.avi")
      AssumeBFF() # BFF と仮定
      SeparateFields() # フィールド分離
      
      AssumeBFF を使って BFF であると仮定。SeparateFields を使ってフィールドを分離しました。
    • 出力画像
      bff.png
      上の画像は、フィールド分離後の各フィールドを順に横に並べたものです。左から順に、フレーム 0 のボトムフィールド、フレーム 0 のトップフィールド、フレーム 1 のボトムフィールド、フレーム 1 のトップフィールドです。
    • 結果
      • 電柱と電車の位置関係に注目してください。電車が電柱に対して、近づいたり遠のいたりしているのがわかります。このことから、このクリップのフィールドオーダーは BFF ではないと考えられます。

AviUtlの60fps読み込みを使った判定法

AviSynth のぺーじ/フィールドオーダーの指定を参照。

その他の判定法

にーやんのアーカイブ: フィールドオーダーの指定方法/フィールドオーダーの判別法の「フィールドオーダーの判別法」を参照。

AviSynthが仮定するフィールドオーダーを確認する

Info

Infoフィルタは、クリップの情報を表示するためのAviSynth内蔵フィルタです。Infoフィルタで取得可能な情報の中には、AviSynthが現在仮定しているフィールドオーダーも含まれています。

  • 使用例
    • スクリプト
      # 使用例
      AviSource("fieldorder.avi") # ソースクリップ
      Info() # この場合、Infoだけでも可
      
      このように、クリップの情報を知りたい行に、「Info」と記述するだけでOKです。
    • 出力画像(赤の下線は後から追加したもの)
      fieldorder_info.png
      「Parity」で始まる行(赤の下線がある行)がフィールドオーダーです。この例では、ボトムフィールドファーストであると AviSynth が仮定しているのがわかります。

GetParity

GetParity は、フィールドオーダーを判別するために作られた、AviSynth 組み込みの関数です。フィールドオーダーに関する情報のみを取得したい場合や、それをスクリプトの中で利用したい場合には、こちらを使うといいでしょう。

詳しくは、GetParity を参照。

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