入力した映像のフレームをフィールドに分離し足したり引いたりするtinterlace
フィルタの使い方。1入力1出力なので別ソースの同じ映像を取り込む場合は偶数フレームと奇数フレームをインターリーブしてから1映像にすることで2映像の偶数フィールドと奇数フィールドを混ぜることができる。
関連フィルタ:
複数の映像を1つの映像に合わせるinterleave
ピクチャーをインターリーブ、デインターリーブするil
ちなみに偶数フレーム、奇数フレームそれぞれをドロップさせる(間引く)にselect
フィルタがあり、こちらの方が高速。
特定の映像フレームや音声サンプルを出力する select, aselect
説明で使われるフレーム、フィールド番号は 1 スタートの奇数である。
偶数フレームを出力する:select='mod(n-1,2)' // 出力フレームは 0, 2, 4... 奇数フレームを出力する:select='mod(n,2)' // 出力フレームは 1, 3, 5...
基本コマンド
1フレームをトップに2フレームをボトムに挿入する、縦幅が2倍、fpsが半分。
ffplay -i input -vf tinterlace=0
公式ドキュメント:FFmpeg Filters Documentation : tinterlace
オプション
文章で説明するよりも公式ドキュメントの図を見た方がわかりやすいので引用。
- 0, mergex
奇数フレームの偶数フィールドに次の偶数フレームを挿入する、縦幅が2倍になり、fps半分、既定値------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444
- 1, drop_even
偶数フレームがドロップ、fps半分------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 11111 33333 11111 33333 11111 33333
- 2, drop_odd
奇数フレームがドロップ、fps半分------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 22222 44444 22222 44444 22222 44444 22222 44444
- 3, pad
奇数フレームの偶数フィールドに黒フィールドを差し替え、偶数フレームの奇数フィールドに黒フィールドを差し替え、縦幅が2倍になる------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444
- 4, interleave_top
奇数フレームの奇数フィールドと偶数フレームの偶数フィールドを合わせる、fps半分------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- Output: 11111 33333 22222 44444 11111 33333 22222 44444
- 5, interleave_bottom
奇数フレームの偶数フィールドと偶数フレームの奇数フィールドを合わせる、fps半分------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 Output: 22222 44444 11111 33333 22222 44444 11111 33333
- 6, interlacex2
奇数フレームはオリジナルのフレーム順に、偶数フレームにその前の奇数フレームの偶数フィールドを差し替えてフレーム数を増やす、fps2倍------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444
- 7, mergex2
奇数フレームを奇数フィールドに偶数フレームを偶数フィールドに移動する、縦幅が2倍になる------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444
縦幅と fps の関係性
opt | opt_name | 縦幅 | fps | memo |
0 | merge | 2x | 1/2 | weave |
1 | drop_even | 1x | 1/2 | |
2 | drop_odd | 1x | 1/2 | |
3 | pad | 2x | 1x | 片フィールド |
4 | interleave_top | 1x | 1/2 | |
5 | interleave_bottom | 1x | 1/2 | |
6 | interlacex2 | 1x | 2x | |
7 | mergex2 | 2x | 1x |