フィールドオーダーが予め分かっている場合に、テキストファイルに正しいフィールドオーダーを記載することでどのインターレス解除フィルタよりも高速に逆テレシネ、プログレッシブ化できるfieldhintフィルタの使い方。いわゆる逆テレシネフィルタである。
間引くフレームも分かるのでdecimateフィルタではなくtrimフィルタを使うことでより正確に処理ができる。フィールドを選択できるのがfieldhintフィルタでフレームを選択するのがselectフィルタ。固定周期なら一度の指定で済むが途中で周期が変わると ffmpeg だけでは場所の特定が難しい。weaveフィルタでフィールドをフレームに並べてshuffleframesフィルタで一定周期のフレームを間引ける。
- ffmpeg でインターレース解除
- 指定フレーム毎に順番を入れ換える shuffleframes
- 2つの連続したフィールドを1つのフレームで出力する weave
- 特定の映像フレームや音声サンプルを出力する select, aselect
基本コマンド
単純なプログレッシブ化
ffmpeg -i input -vf fieldhint=hint.txt:relative output
ffmpeg -i input -vf fieldhint=hint.txt:1 output
ffplay -i input -vf fieldhint=hint.txt:1
ntsc 29.976 フレームレートの動画をtrimフィルタを併用して5フレーム中2フレーム目を間引く例(n は 0 スタート)。trimフィルタで間引く場合はfpsフィルタで正しいフレームレートを指定しないと再び重複フレームが作られる
ffmpeg -i input -vf fieldhint=hint.txt:relative,select='mod(n-1,5)',fps=24000/1001 output
ffmpeg – remove sequentially duplicate frames – Stack Overflowよりtrimフィルタを使わずにmpdecimate, decimateフィルタを代わりに使う。
ffmpeg -i input -vf decimate output
ffmpeg -i input -vf mpdecimate,setpts=N/FRAME_RATE/TB output

