タグ別アーカイブ: Interlace

2つの連続したフィールドを1つのフレームで出力する weave

ffmpeg 3.2 でリリース予定のビデオフィルタ。フィールドを合わせてフレームにする weave フィルタの使い方。縦解像度が2倍になり、フレームレートとフレーム数は2分の1になる。3.4(予定)の追加フィルタで doubleweave フィルタも追加された。こちらは縦解像度が2倍になるが、フレームレートとフレーム数は変わらない。

基本コマンド

separatefields でフィールド分解したのをフレームに戻す。つまり何も変わらない
ffmpeg -i input -vf separatefields,weave output
ffplay -i input -vf separatefields,weave

tinterlace フィルタの tinterlace=0 と同じことができる

2フレームに1フレーム、フィールドがずれたフレームが追加される。解像度はそのままにフレーム数とフレームレートは元映像の倍になる
ffmpeg -i input -vf separatefields,doubleweave output
ffplay -i input -vf separatefields,doubleweave

公式ドキュメント:FFmpeg Filters Documentation : weave, doubleweave
続きを読む 2つの連続したフィールドを1つのフレームで出力する weave

デノイズとインターレース解除ができる pp

pp(postprocessing)フィルタとは、デコード段階でフィルタを当てるフィルタを意味するが、フィルタチェーンでの pp の位置によってフィルタが当たる順番も変わる。用途に合わせてたくさん種類があるので使いこなすのは難しい。ビルドオプションに --enable-gpl が付いてないと使えない。

同様のフィルタに fspp, pp7, spp, uspp があるが、順番に負荷が大きくなり fspp 以降は負荷を考えると実用性は低い。

速くて単純なポストプロセッシングフィルタ fspp

基本コマンド

ffmpeg -i input -vf pp=de output
ffplay -i input -vf pp=de

公式ドキュメント:FFmpeg Filters Documentation : pp
公式wiki:Postprocessing – FFmpeg
続きを読む デノイズとインターレース解除ができる pp

フィールドを足したり引いたりする tinterlace

入力した映像のフレームをフィールドに分離し足したり引いたりする tinterlace フィルタの使い方。1入力1出力なので別ソースの同じ映像を取り込む場合は偶数フレームと奇数フレームを interleave してから1映像にすることで2映像の偶数フィールドと奇数フィールドを混ぜることができる。

ちなみに偶数フレーム、奇数フレームそれぞれをドロップさせる(間引く)フィルタに select があり、こちらの方が高速。

偶数フレームを出力する:select=(mod(n-1\,2)) // 出力フレームは 0, 2, 4...
奇数フレームを出力する:select=(mod(n\,2)) // 出力フレームは 1, 3, 5...

select の使い方:ffmpeg で重複フレームを間引く方法

説明で使われるフレーム、フィールド番号は 1 スタートの奇数である。

基本コマンド

1フレームをトップに2フレームをボトムに挿入する、縦幅が2倍、fpsが半分
ffplay -i input -vf tinterlace=0

公式ドキュメント:FFmpeg Filters Documentation : tinterlace
続きを読む フィールドを足したり引いたりする tinterlace

高速で万能な逆テレシネフィルタ pullup

pullup は逆テレシネフィルタで、ハードテレシネや 24000/1001 fps プログレッシブや 30000/1001 fps プログレッシブの映像に対応している。未来フレームを参照するように設計されていてパターン周期が不定期でも正しく逆テレシネし、重複フレームは自動で間引く。片フィールド補間は行わないのでその部分の映像はなめらかにはならない。最後に出力フレームレートが偶数の時は、正しいフレームレートを指定する。

関連記事
ffmpeg でインターレース解除

基本コマンド

日本で一般的な NTSC を 24000/1001 fps プログレッシブに変換する
2016年4月8日 ffplay は出力オプションに -r が使えなかったので直した
ffplay -i input -vf pullup,fps=24000/1001
ffmpeg -i input -vf pullup -r 24000/1001 output

公式ドキュメント:FFmpeg Filters Documentation : pullup
続きを読む 高速で万能な逆テレシネフィルタ pullup

テレシネ処理ができる telecine

テレシネしてフレーム数を増やすことができる telecine の使い方。日本で一般的なテレシネからヨーロッパ形式のテレシネまでいろいろなタイプを指定できる。

関連記事
ffmpeg でインターレース解除

基本コマンド

インターレース具合がわかりやすいようにフレーム番号を振っている
ffplay -f lavfi -i color=white:s=200x200:r=24000/1001:d=10,drawtext=fontfile="'C\://Windows/Fonts/msgothic.ttc':text='%{n\}':fontsize=64",telecine=pattern=23

公式ドキュメント:FFmpeg Filters Documentation : telecine
続きを読む テレシネ処理ができる telecine

インターレースを解除する bwdif

bwdif(Bob Weaver Deinterlacing Filter)は yadif とキュービック補完アルゴリズムが使われている w3fdif を元とする動きに対応したインターレース解除フィルタである。

修正 2016年6月27日
deint オプションの初期値が最初のコミットからメジャーアップデートの 3.1 に変わるときに 0, all に変更。

関連記事
ffmpeg でインターレース解除

基本コマンド

ffplay input -vf bwdif=mode=0:parity=-1:deint=1
ffplay input -vf bwdif=0:-1:0

オプション

  • mode
    インターレースの種類

    • 0, send_frame
      2枚のフィールドから1枚のフレームを作る
    • 1, send_field
      1枚のフィールドから1枚のフレームを作る
      いわゆる片フィールド補間でフレーム数が2倍になる。既定値
  • parity
    トップボトムどちらが先かを指定する

    • 0, tff
      トップフィールドファースト
    • 1, bff
      ボトムフィールドファースト
    • -1, auto
      自動設定。既定値
  • deint
    どのフレームをインターレース解除するか

    • 0, all
      全てのフレーム。既定値
    • 1, interlaced
      インターレースフラグが立っているフレームだけ

インターレース解除フィルタ w3fdif

w3fdif とは BBC R&D の Martin Weston氏を元とし、BBC R&D の Jim Easterbrook氏がインターレース解除の機能を実装した片フィールド補間のインターレース解除フィルタである。w3fdif とは stands for “Weston 3 Field Deinterlacing Filter”。

関連記事
ffmpeg でインターレース解除

基本コマンド

ffplay input -vf w3fdif:filter=1:deint=0
ffplay input -vf w3fdif=1:0

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

オプション

  • filter
    インターレースの係数指定
    既定値:1[int]

    • 0, simple
      単純。低負荷
    • 1, complex
      複雑。高負荷。既定値
  • deint
    どのフレームを処理するか
    既定値:0[int]

    • 0, all
      すべて。既定値
    • 1, interlaced
      インターレースフラグがあるのだけ

一番メジャーなインターレース解除フィルタ yadif

インターレース解除といえばとりあえずこのフィルタの名前が挙がるほど有名なフィルタ。yadif とは yet another deinterlacing filter。

関連記事
ffmpeg でインターレース解除

基本コマンド

ffplay input -vf yadif:mode=0:parity=-1:deint=1
ffplay input -vf yadif=0:-1:1

公式ドキュメント:FFmpeg Filters Documentation : yadif
続きを読む 一番メジャーなインターレース解除フィルタ yadif

手動でフィールド処理を行う fieldhint

フィールドオーダーが予め分かっている場合に、テキストファイルに正しいフィールドオーダーを記載することでどのインターレス解除フィルタよりも高速にプログレッシブ化できる fieldhint の使い方。いわゆる手動インターレース解除フィルタである。間引くフレームも分かるので decimate ではなく trim を使うことでより正確に処理ができる。フィールドを選択できるのが fieldhint でフレームを選択するのが select。固定周期なら一度の指定で済むが途中で周期が変わると ffmpeg だけでは場所の特定が難しい。

関連記事
ffmpeg でインターレース解除

基本コマンド

単純なプログレッシブ化
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

trim フィルタの使い方
ffmpeg で使える計算書式

公式ドキュメント:FFmpeg Filters Documentation : fieldhint
続きを読む 手動でフィールド処理を行う fieldhint

ニューラルネットワーク予測を使ってインターレース解除する nnedi

ニューラルネットワーク予測のエッジ補正からインターレースを解除するフィルタ nnedi の使い方。既存のインターレース解除フィルタ yadifw3fdif、現時点では master の bwdif に比べてかなり処理速度の遅いフィルタである。今までは AviSynth や Vapoursynth で使われているフィルタなのでそちらで検索すると使い方を調べることができる。rpow は組み込まれていないのでアップスケールには使えない。

関連記事
ffmpeg でインターレース解除

基本コマンド

プレビューがもたつくかもしれない
ffplay input -vf nnedi=deint=all:field=a:planes=7:nsize=s32x4:nns=n32:qual=fast:etype=a:pscrn=new

公式ドキュメント:FFmpeg Filters Documentation : nnedi
続きを読む ニューラルネットワーク予測を使ってインターレース解除する nnedi