分離フィールドを交互に挟んだフレームにするseparatefieldsフィルタ。フレーム数とフレームレートを2倍に、出力映像の縦解像度を半分にする。トップ、ボトムどちらのフィールドを先に出力するかは動画情報による。もし間違っているのならsetfieldフィルタを先に指定する。

基本コマンド

ffmpeg -i input -vf separatefields output
ffplay -i input -vf separatefields

分離フィールドを元の映像に戻すにはweaveフィルタを使う。
ffmpeg -i input -vf separatefields,weave output
ffplay -i input -vf separatefields,weave

各フィールドを縦に並べるにはselectフィルタで偶数奇数に分割して、hstackフィルタで縦に並べる。上のフレームが先に動けばトップフィールドファースト。下のフレームが先に動けばボトムフィールドファーストになる。
ffplay -i input -vf separatefields,select='1*mod(n-1\,2)+2*mod(n\,2)':n=2,vstack

上のままだとPTSが一致してないので揃えるならsetptsフィルタを使う。
ffplay -i input -vf separatefields,select='1*mod(n-1\,2)+2*mod(n\,2)':n=2[1],setpts=PTS-STARTPTS[0v];[1]setpts=PTS-STARTPTS,[0v]vstack

ilフィルタでも同じことができる。PTSリセットが不要なのでこちらの方が扱いやすい。
ffplay -i input -vf il=l=d:c=d

元の映像を左に、フィールドを積み重ねた映像を右に並べる。
ffplay -i input -vf split[0],separatefields,select='1*mod(n-1\,2)+2*mod(n\,2)':n=2,vstack,[0]hstack

23プルダウンを逆テレシネする。
-vf "separatefields,shuffleframes=0 1 4 3 6 5 8 9 -1 -1,setfield=tff,weave,setpts=(N*1001)/(24000*TB),setparams=field_mode=prog" -r 24000/1001 -fps_mode vfr

末尾フレーム抜けを抑えるためにtpadフィルタで末尾フレームをコピーして増やす。
-vf "tpad=stop=2:stop_mode=1,separatefields,shuffleframes=0 1 4 3 6 5 8 9 -1 -1,setfield=tff,weave,setpts=(N*1001)/(24000*TB),setparams=field_mode=prog" -r 24000/1001 -fps_mode vfr

公式ドキュメント:FFmpeg Filters Documentation : separatefields

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)