mcpField
F
ffmpeg-deinterlacing-telecine

ffmpeg-deinterlacing-telecine

github.com/josiahsiegelクリエイティブ・メディア5974 回インストール19 週間前に更新
リポジトリ

ffmpeg-deinterlacing-telecine について

インターレース映像やテレシネ映像を扱う映像編集者・開発者向けの FFmpeg スキルガイドです。検出、デインターレース、フィールド処理、ハードウェア対応、逆テレシネの手順を扱います。

主な機能

  1. 01idet によるインターレース検出
  2. 02yadif、bwdif、w3fdif の比較
  3. 03CUDA、Vulkan、VAAPI、QSV フィルターの利用
  4. 04pullup または fieldmatch によるテレシネ除去
  5. 05フィールド順序の補正と処理

活用シーン

  1. 01放送映像をプログレッシブ映像に変換
  2. 02DVD または Blu-ray 素材の処理
  3. 03旧式のインターレース映像のデジタル化
  4. 04フィルム映像から 3:2 プルダウンを除去

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill ffmpeg-deinterlacing-telecine

インストール後、Claude Code で/ffmpeg-deinterlacing-telecineを入力して読み込まれたか確認します。

詳細

重要なガイドライン

Windows のファイルパス要件

必須:Windows ではファイルパスに必ずバックスラッシュを使用してください

Windows で Edit または Write ツールを使用する場合、ファイルパスにはスラッシュ(/)ではなく、バックスラッシュ(\)を必ず使用してください。


クイックリファレンス

タスクフィルターコマンドパターン
基本的なデインターレースyadif-vf yadif
高品質なデインターレースbwdif-vf bwdif
CUDA デインターレースyadif_cuda-vf yadif_cuda
逆テレシネpullup-vf pullup
フィールド順fieldorder-vf fieldorder=tff
インターレースの検出idet-vf idet

このスキルを使用する場面

インターレースおよびテレシネされたコンテンツに使用します:

  • 放送/テレビコンテンツをプログレッシブに変換する
  • DVD および Blu-ray の処理
  • 古い映像のデジタル化
  • プロフェッショナルな映像制作
  • フィールド順の修正
  • テレシネの除去(3:2 プルダウン)

FFmpeg のデインターレースとテレシネ(2025)

デインターレース、フィールド処理、テレシネ除去に関する包括的なガイドです。

インターレース映像について

インターレースとは?

インターレース映像では、各フレームに半解像度のフィールドが 2 つ格納されます:

  • トップフィールド(TFF):奇数ライン(1、3、5、...)
  • ボトムフィールド(BFF):偶数ライン(2、4、6、...)

一般的なインターレース形式:

  • 1080i(1920x1080、50i または 60i)
  • 576i(720x576、50i - PAL)
  • 480i(720x480、60i - NTSC)
インターレースコンテンツの検出
# Use idet filter to detect interlacing
ffmpeg -i input.mp4 -vf "idet" -frames:v 500 -f null -

# Output shows field types:
# TFF = Top Field First
# BFF = Bottom Field First
# Progressive = Not interlaced
# Undetermined = Mixed or uncertain

デインターレースフィルター

yadif - Yet Another DeInterlacing Filter

最も広く使われているデインターレースフィルターです。速度と品質のバランスに優れています。

# Basic deinterlacing (output same frame rate)
ffmpeg -i interlaced.mp4 -vf "yadif" output.mp4

# Double frame rate (output both fields as frames)
ffmpeg -i interlaced.mp4 -vf "yadif=1" output.mp4

# Specify field parity (auto-detect by default)
ffmpeg -i interlaced.mp4 -vf "yadif=0:0:0" output.mp4  # TFF
ffmpeg -i interlaced.mp4 -vf "yadif=0:1:0" output.mp4  # BFF

# Only deinterlace if detected as interlaced
ffmpeg -i input.mp4 -vf "yadif=deint=interlaced" output.mp4

パラメーター:

パラメーター説明値
mode出力モード0=同じ fps、1=fps を倍にする
parityフィールドのパリティ-1=自動、0=TFF、1=BFF
deintデインターレースするフレーム0=すべて、1=インターレースのみ

モードのオプション:

  • 0 / send_frame - 入力フレームごとに 1 フレームを出力します
  • 1 / send_field - フィールドごとに 1 フレームを出力します(fps を倍にする)
  • 2 / send_frame_nospatial - 0 と同様ですが、空間的なインターレース判定を行いません
  • 3 / send_field_nospatial - 1 と同様ですが、空間的なインターレース判定を行いません
bwdif - Bob Weaver Deinterlacing Filter

yadif より高品質で、補間により多くのフレームを使用します。

# Basic bwdif
ffmpeg -i interlaced.mp4 -vf "bwdif" output.mp4

# Double frame rate
ffmpeg -i interlaced.mp4 -vf "bwdif=1" output.mp4

# Specify parity
ffmpeg -i interlaced.mp4 -vf "bwdif=0:-1:1" output.mp4

パラメーター: yadif と同じです

w3fdif - Martin Weston 3-Field Deinterlacing

3 つのフィールドを使用し、さらに高品質な補間を行います。

# Simple filter (faster)
ffmpeg -i interlaced.mp4 -vf "w3fdif=filter=simple" output.mp4

# Complex filter (better quality)
ffmpeg -i interlaced.mp4 -vf "w3fdif=filter=complex" output.mp4

パラメーター:

パラメーター説明値
filterフィルター係数simple、complex
deintデインターレースするフレームall、interlaced
kerndeint - Kernel Deinterlacing

カーネルベースの適応型デインターレースです。

# Basic kerndeint
ffmpeg -i interlaced.mp4 -vf "kerndeint" output.mp4

# With threshold adjustment
ffmpeg -i interlaced.mp4 -vf "kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0" output.mp4

ハードウェアアクセラレーションによるデインターレース

yadif_cuda - NVIDIA CUDA
# Full GPU pipeline with CUDA deinterlacing
ffmpeg -hwaccel cuda -hwaccel_output_format cuda \
  -i interlaced.mp4 \
  -vf "yadif_cuda=0:-1:0" \
  -c:v h264_nvenc output.mp4

# Double framerate with CUDA
ffmpeg -hwaccel cuda -hwaccel_output_format cuda \
  -i interlaced.mp4 \
  -vf "yadif_cuda=1" \
  -c:v h264_nvenc output.mp4
bwdif_cuda - NVIDIA CUDA(FFmpeg 7.0+)
# Higher quality CUDA deinterlacing
ffmpeg -hwaccel cuda -hwaccel_output_format cuda \
  -i interlaced.mp4 \
  -vf "bwdif_cuda" \
  -c:v h264_nvenc output.mp4
bwdif_vulkan - Vulkan(FFmpeg 8.0+)

クロスプラットフォームの GPU デインターレースです。

# Vulkan deinterlacing (works on AMD, Intel, NVIDIA)
ffmpeg -init_hw_device vulkan \
  -hwaccel vulkan -hwaccel_output_format vulkan \
  -i interlaced.mp4 \
  -vf "bwdif_vulkan" \
  -c:v h264_vulkan output.mp4
deinterlace_vaapi - VAAPI(Linux)
# VAAPI deinterlacing
ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \
  -hwaccel_output_format vaapi \
  -i interlaced.mp4 \
  -vf "deinterlace_vaapi" \
  -c:v h264_vaapi output.mp4

# Specify deinterlace mode
ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \
  -hwaccel_output_format vaapi \
  -i interlaced.mp4 \
  -vf "deinterlace_vaapi=mode=motion_adaptive:rate=frame" \
  -c:v h264_vaapi output.mp4

VAAPI のデインターレースモード:

  • default - ドライバーのデフォルトを使用します
  • bob - シンプルなボブ(レートを倍にする)
  • weave - フィールドを織り合わせます
  • motion_adaptive - 動き適応型(最高の品質)
  • motion_compensated - 動き補償型(最高品質)
deinterlace_qsv - Intel QSV
# QSV deinterlacing
ffmpeg -hwaccel qsv -hwaccel_output_format qsv \
  -i interlaced.mp4 \
  -vf "vpp_qsv=deinterlace=2" \
  -c:v h264_qsv output.mp4

VPP_QSV のデインターレースモード:

  • 0 - オフ
  • 1 - ボブ
  • 2 - 高度な方式(動き適応型)

逆テレシネ(IVTC)

テレシネ(3:2 プルダウン)について

テレシネでは、フィールドを複製して 24fps のフィルムを 30fps の映像に変換します:

Film:   A  B  C  D
Video:  AA AB BB BC CC CD DD DA
pullup - Pullup Filter

重複したフィールドを検出して除去することで、3:2 テレシネを除去します。

# Basic IVTC
ffmpeg -i telecined.mp4 -vf "pullup" -r 24000/1001 output.mp4

# With metric output
ffmpeg -i telecined.mp4 -vf "pullup=mp=y" -r 24000/1001 output.mp4

パラメーター:

パラメーター説明値
jl、jr左右の不要なピクセル1-width
jt、jb上下の不要なピクセル1-height
sb厳密なブレーク0 または 1
mpメトリックプレーンy、u、v
fieldmatch - フィールドマッチング

フィールドマッチングを使用する、より高度なテレシネ除去です。

# Basic field matching
ffmpeg -i telecined.mp4 -vf "fieldmatch" output.mp4

# Full IVTC pipeline with decimation
ffmpeg -i telecined.mp4 -vf "fieldmatch,decimate" output.mp4

# Specify field order
ffmpeg -i telecined.mp4 -vf "fieldmatch=order=tff,decimate" output.mp4

IVTC を組み合わせたワークフロー:

# Complete telecine removal pipeline
ffmpeg -i telecined.mp4 \
  -vf "fieldmatch=order=auto:combmatch=full,decimate" \
  -r 24000/1001 \
  output.mp4
decimate - フレーム間引き

重複フレームを削除します(fieldmatch の後に使用します)。

# Remove every 5th frame (30->24 fps)
ffmpeg -i input.mp4 -vf "decimate=cycle=5" output.mp4

# Detect duplicates
ffmpeg -i input.mp4 -vf "decimate=cycle=5:ppsrc=1" output.mp4

フィールド処理

fieldorder - フィールド順序の変更

フィールド順序を TFF と BFF の間で変換します。

# Convert BFF to TFF
ffmpeg -i bff_input.mp4 -vf "fieldorder=tff" output.mp4

# Convert TFF to BFF
ffmpeg -i tff_input.mp4 -vf "fieldorder=bff" output.mp4
separatefields - フィールドの分離

各フレームを 2 つのフィールドに分割します。

# Separate fields (doubles frame count, halves height)
ffmpeg -i interlaced.mp4 -vf "separatefields" output.mp4
weave - フィールドの結合

連続する 2 つのフレームを 1 つのインターレースフレームに結合します。

# Weave fields (opposite of separatefields)
ffmpeg -i progressive.mp4 -vf "weave" interlaced.mp4

# Specify first field
ffmpeg -i progressive.mp4 -vf "weave=first_field=top" interlaced.mp4
tinterlace - 時間方向のインターレース

プログレッシブ映像からインターレース出力を作成するか、インターレース映像を変換します。

# Create interlaced from progressive (merge adjacent frames)
ffmpeg -i progressive.mp4 -vf "tinterlace=merge" interlaced.mp4

# Bob deinterlace (simple doubling)
ffmpeg -i interlaced.mp4 -vf "tinterlace=4" bobbed.mp4

# Create interlaced at half frame rate
ffmpeg -i progressive.mp4 -vf "tinterlace=interleave_top" interlaced.mp4

モード:

モード説明
merge / 0連続するフレームのフィールドを結合
drop_even / 1偶数フレームを削除し、残りをインターレース
drop_odd / 2奇数フレームを削除し、残りをインターレース
pad / 3交互のラインを黒で埋める
interleave_top / 4インターレースし、TFF に設定
interleave_bottom / 5インターレースし、BFF に設定
interlacex2 / 62 倍レートでインターレース
mergex2 / 72 倍レートでフィールドを結合
il - ラインのインターリーブ/デインターリーブ

低レベルのラインインターリーブを行います。

# Swap luma and chroma lines
ffmpeg -i input.mp4 -vf "il=l=s:c=s" output.mp4

一般的なワークフロー

DVD からプログレッシブ MP4 への変換
# Step 1: Detect interlacing
ffmpeg -i dvd_rip.vob -vf "idet" -frames:v 500 -f null -

# Step 2: Deinterlace (if interlaced)
ffmpeg -i dvd_rip.vob \
  -vf "yadif=1:-1:1" \
  -c:v libx264 -crf 18 \
  -c:a aac -b:a 192k \
  output.mp4

# For telecined content (film-based DVDs):
ffmpeg -i dvd_rip.vob \
  -vf "fieldmatch,decimate" \
  -r 24000/1001 \
  -c:v libx264 -crf 18 \
  output.mp4
放送用 1080i から 1080p への変換
# High quality deinterlacing
ffmpeg -i broadcast_1080i.ts \
  -vf "bwdif=1:-1:0" \
  -c:v libx264 -crf 18 -preset slow \
  -c:a copy \
  output_1080p.mp4

# With GPU acceleration
ffmpeg -hwaccel cuda -hwaccel_output_format cuda \
  -i broadcast_1080i.ts \
  -vf "bwdif_cuda=1" \
  -c:v h264_nvenc -preset p4 \
  -c:a copy \
  output_1080p.mp4
混在コンテンツの検出と処理
#!/bin/bash
# Detect and process based on content type

INPUT="$1"

# Detect interlacing type
result=$(ffmpeg -i "$INPUT" -vf "idet" -frames:v 1000 -f null - 2>&1)

if echo "$result" | grep -q "Multi.*[1-9]"; then
  echo "Interlaced content detected - applying bwdif"
  ffmpeg -i "$INPUT" -vf "bwdif" -c:v libx264 -crf 18 output.mp4
elif echo "$result" | grep -q "Repeated.*[1-9]"; then
  echo "Telecined content detected - applying IVTC"
  ffmpeg -i "$INPUT" -vf "fieldmatch,decimate" -c:v libx264 -crf 18 output.mp4
else
  echo "Progressive content - no deinterlacing needed"
  ffmpeg -i "$INPUT" -c:v libx264 -crf 18 output.mp4
fi

品質の比較

フィルター品質速度最適な用途
yadif良好高速一般用途
bwdifより良好中速品質重視
w3fdif最高低速重要な作業
yadif_cuda良好非常に高速GPU システム
bwdif_cudaより良好高速GPU システム
deinterlace_vaapi良好非常に高速Linux/VAAPI

ベストプラクティス

  1. 必ず最初に検出する - idet を使用してコンテンツの種類を判定します
  2. フレームレートを維持する - 同じ fps にはモード 0、2 倍にはモード 1 を使用します
  3. フィールド順序を合わせる - 自動検出を使用するか、正しいパリティを指定します
  4. 利用可能な場合は GPU を使用する - CUDA/VAAPI フィルターは大幅に高速です
  5. フィルムコンテンツには IVTC を使用する - テレシネされたフィルムをデインターレースせず、pullup/fieldmatch を使用します
  6. サンプルでテストする - 動画全体を処理する前に短い区間を確認します

このガイドでは、2025 年時点のデインターレースとテレシネについて説明しています。ハードウェアアクセラレーションの詳細については、ffmpeg-hardware-acceleration を参照してください。動画解析については、ffmpeg-video-analysis を参照してください。

コメント