検証記録: 記事の主張を、実機でどう確かめたかの記録です。
実機検証: OBSのインターレース解除モードとフィールド順序(2026-10-22)
対象記事: posts/articles/obs-interlace.md
環境: Windows 11、OBS Studio 32.2.2 と 33.0.0-rc3(公式zipのポータブル版、専用の設定。日本語UI)。キャンバス・出力 1920×1080、60fps、録画は無劣化(Lossless)
方法: tools/capture/verify_deinterlace.py、tools/capture/walk_deinterlace.py
素材
白い縦棒(幅60px)が毎秒600pxで右へ動く 1920×1080 の映像を、60fps で作ってからインターレース化した(1080i、30フレーム/60フィールド、トップフィールドが先)。1つのフレームの中で、偶数行と奇数行の棒の位置が10pxずれる(test-clip-frame.png)。
これをメディアソースで再生し、モードとフィールド順序の組み合わせごとに4秒録画した。録画の各フレームで、棒の位置を偶数行・奇数行ごとに求めた。
- 縞: 1フレーム内の偶数行と奇数行の棒の位置のずれ(中央値, px)。0なら縞なし
- 動きの更新: フレームごとの棒の移動量。0の回数が約半分なら、動きの更新は毎秒30回(2フレームに1回止まる)
- 逆戻り: 棒が左へ戻った回数。多ければ、動きが前後にガタつく
結果(32.2.2・33.0.0-rc3 で同じ傾向)
| モード | フィールド順序 | 縞 | 動きの更新 | 逆戻り |
|---|---|---|---|---|
| 無効 | — | 10px(縞あり) | 毎秒30回 | 0 |
| 破棄・Blend・Linear・Yadif | トップ/ボトム | 0 | 毎秒30回 | 0 |
| Blend 2x | トップ/ボトム | 0 | 毎秒60回 | 0 |
| Linear 2x・Yadif 2x・Retro | トップ(素材と一致) | 0 | 毎秒60回 | 0 |
| Linear 2x・Yadif 2x・Retro | ボトム(素材と逆) | 0 | 毎秒60回 | 約半分のフレームで逆戻り(約103/208) |
数値の全件: verify-deinterlace-32.json、verify-deinterlace-33.json
読み取り
- 「無効」では1フレームの中に2つの時点の絵が混ざり、動く物の縁に横縞が出る(closeup-disabled.png)。どのモードでも縞は消えた(closeup-yadif2x.png)
- 名前に「2x」が付かないモード(破棄・Blend・Linear・Yadif)は、動きの更新が毎秒30回になった。「2x」のモードと Retro は毎秒60回
- フィールド順序を素材と逆にすると、Linear 2x・Yadif 2x・Retro は動きが前後にガタつく。Blend 2x は影響を受けなかった
- 2x が付かないモードでは、フィールド順序を逆にしても、縞・逆戻りの測定値に差は出なかった
自動検出は無い
OBSのソースでは、ソース作成時にフィールド順序を「トップが先」にしている(libobs/obs-source.c の deinterlace_top_first = true、32.2.2)。映像から順序を判定する処理は見当たらない。旧記事の「通常は自動検出されます」は根拠がない。
メニューの場所(両版で実機確認)
ソース一覧でソースを右クリック → 「インターレース解除」→ 無効/破棄/Retro/Blend/Blend 2x/Linear/Linear 2x/Yadif/Yadif 2x、その下に「トップフィールドが先」「ボトムフィールドが先」(deinterlace-menu-33.png、walk-deinterlace-32.json/walk-deinterlace-33.json)。フィルタではなく、右クリックメニューの項目。
測っていないこと
- 画質(細部のぼけ方)の違い。素材が単純な白い棒なので、Blend・Linear・Yadif の画質差は測れていない
- CPU・GPU の負荷
- キャプチャーボード経由の実際の1080i信号(素材はファイル)
- ボトムフィールドが先の素材