ffmpeg-deinterlacing-telecine について
インターレース映像やテレシネ映像を扱う映像編集者・開発者向けの FFmpeg スキルガイドです。検出、デインターレース、フィールド処理、ハードウェア対応、逆テレシネの手順を扱います。
主な機能
- 01idet によるインターレース検出
- 02yadif、bwdif、w3fdif の比較
- 03CUDA、Vulkan、VAAPI、QSV フィルターの利用
- 04pullup または fieldmatch によるテレシネ除去
- 05フィールド順序の補正と処理
活用シーン
- 01放送映像をプログレッシブ映像に変換
- 02DVD または Blu-ray 素材の処理
- 03旧式のインターレース映像のデジタル化
- 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 / 6 | 2 倍レートでインターレース |
mergex2 / 7 | 2 倍レートでフィールドを結合 |
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 |
ベストプラクティス
- 必ず最初に検出する -
idetを使用してコンテンツの種類を判定します - フレームレートを維持する - 同じ fps にはモード 0、2 倍にはモード 1 を使用します
- フィールド順序を合わせる - 自動検出を使用するか、正しいパリティを指定します
- 利用可能な場合は GPU を使用する - CUDA/VAAPI フィルターは大幅に高速です
- フィルムコンテンツには IVTC を使用する - テレシネされたフィルムをデインターレースせず、pullup/fieldmatch を使用します
- サンプルでテストする - 動画全体を処理する前に短い区間を確認します
このガイドでは、2025 年時点のデインターレースとテレシネについて説明しています。ハードウェアアクセラレーションの詳細については、ffmpeg-hardware-acceleration を参照してください。動画解析については、ffmpeg-video-analysis を参照してください。