FFmpegで動画を高画質化: スケーリング、ノイズ除去、手ぶれ補正

INEZA Felin-Michel

INEZA Felin-Michel

10 4月 2026

FFmpegで動画を高画質化: スケーリング、ノイズ除去、手ぶれ補正

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

結論

FFmpegは-vf "scale=1920:1080:flags=lanczos"を使ってビデオをアップスケールします。Lanczosはアップスケーリングに最適なスケーリングアルゴリズムです。デノイズには、hqdn3dがエッジを保持しながらノイズを低減します。手ぶれ補正には、vidstabが2パス処理でカメラの揺れに対応します。これら3つすべてを単一のフィルターチェーンに結合して、品質向上パイプラインを構築します。

はじめに

FFmpegを使ったビデオ品質向上は、解像度変更だけにとどまりません。真の強化は、解像度アップスケーリングとインテリジェントなデノイズ、オプションの手ぶれ補正を組み合わせることで実現します。各ステップは、ソフトまたはピクセル化した映像、粒子の粗いまたはノイズの多いフレーム、不安定なカメラの動きといった異なる品質問題に対処します。

このガイドでは、各技術を個別に説明し、それらを組み合わせる方法を示します。

ボタン

スケーリングアルゴリズム

スケーリングアルゴリズムは、FFmpegがアップスケーリング時に新しいピクセルをどのように埋めるかを決定します。その選択は出力品質に目に見える影響を与えます。

アルゴリズム 速度 品質 最適な用途
neighbor 最速 最低 ピクセルアート
bilinear 速い 低い 速度が重要な場合
bicubic 中程度 良い 一般的なダウンサイジング
lanczos 遅い 最高 アップスケーリング

Lanczosで1080pにアップスケール:

ffmpeg -i input_720p.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 20 output_1080p.mp4

アスペクト比を維持:

ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4

-2は、アスペクト比を維持しつつ、結果が2で割り切れるように高さを自動計算します。

4Kにスケール:

ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4

-preset slowは、x264に圧縮最適化により多くの時間をかけるように指示します。これは高解像度でより重要になります。

hqdn3dによるデノイズ

hqdn3dフィルターは、高品質な3Dデノイズです。これは、エッジの詳細を保持しながら粒状性とノイズを除去します。

ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4

4つのパラメータ: luma_spatial:chroma_spatial:luma_temporal:chroma_temporal

より強力なデノイズ:

ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4

値が大きいほどより多くのノイズを除去しますが、細かいディテールがぼやける可能性があります。ビデオ全体を処理する前に、異なる設定でテストしてください。

軽いデノイズ(ディテールを保持):

ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4

vidstabによる手ぶれ補正

vidstabフィルターは2パスのアプローチを必要とします。まず動きを分析し、次いで手ぶれ補正を適用します。

インストール: vidstabのサポートは、FFmpegのビルドに依存します。ffmpeg -filters | grep vidstabで確認してください。macOSでは、brew install ffmpegに含まれています。

パス1: 動きを分析

ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -

shakiness=8 (1-10): 予想されるカメラの揺れの程度。accuracy=9 (1-15): 検出精度。-f null -は出力を破棄します。必要なのは.trfファイルのみです。

パス2: 手ぶれ補正を適用

ffmpeg -i shaky_video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=1:smoothing=10" -c:v libx264 -crf 20 stabilized.mp4

zoom=1は、手ぶれ補正によって生じるエッジのクロッピングを補償するために1%のズームを追加します。黒い縁が表示される場合は値を増やしてください。smoothing=10は、カメラのパスがどれだけ滑らかになるかを制御します(値が大きいほど滑らかになります)。

より積極的な手ぶれ補正:

ffmpeg -i video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=3:smoothing=30:optzoom=1" -c:v libx264 -crf 20 stable.mp4

optzoom=1は、縁を避けるためにズームを自動的に最適化します。

品質向上パイプラインの結合

3つの操作すべてを単一のフィルターチェーンで一緒に実行します:

ffmpeg -i source.mp4 \
  -vf "hqdn3d=4:3:6:4.5,scale=1920:-2:flags=lanczos,vidstabtransform=input=transform.trf:zoom=1:smoothing=10" \
  -c:v libx264 -crf 18 -preset slow \
  -c:a copy \
  enhanced.mp4

この順序で適用します: まずデノイズ(スケーリングに影響を与える可能性のあるアーティファクトを除去)、次にスケール、そして手ぶれ補正。これにより、ノイズが高解像度に拡大されるのを防ぎます。

注: この結合パイプラインを使用する前に、vidstabdetectパスを先に実行してください。

シャープネスフィルター

映像がノイズというよりソフトに見える場合は、シャープネスが役立ちます:

ffmpeg -i video.mp4 -vf "unsharp=5:5:1.5:5:5:0.5" -c:v libx264 -crf 20 sharpened.mp4

パラメータ: lx:ly:la:cx:cy:ca (輝度/色差のサイズと量)
lx:ly — 輝度マトリックスサイズ(ピクセル)
la — 輝度量(正の値 = シャープ、負の値 = ぼかし)
cx:cy:ca — 色差の同等値

軽いシャープネスの場合: unsharp=3:3:0.5:3:3:0.0
強力なシャープネスの場合: unsharp=5:5:2.5:5:5:0.0

パフォーマンスに関する考慮事項

強化操作は計算負荷が高いです。10分の1080pビデオの処理時間見積もり:

-presetを使用してエンコード速度とファイルサイズのバランスを取ります:

バッチ処理の場合は、複数のファイルを同時に実行するか、parallelを使用します:

ls *.mp4 | parallel ffmpeg -i {} -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 enhanced_{/}

AIビデオアップスケーリングAPIへの接続

AI駆動のアップスケーリング(低品質または損傷した映像に対してFFmpegのフィルターよりも優れた結果を生み出す)には、FFmpegのツールとは別に、専門のAPIが存在します。

WaveSpeedAIは、アルゴリズムフィルターではなくニューラルアップスケーリングを使用するAIアップスケーリングモデルを提供しています:

POST https://api.wavespeed.ai/api/v2/wavespeed-ai/video-enhance
Authorization: Bearer {{WAVESPEED_API_KEY}}
Content-Type: application/json

{
  "video_url": "https://storage.example.com/source-video.mp4",
  "scale": 2,
  "enhance": true
}

統合する前にApidogでこれをテストしてください:

アサーションを追加:

Status code is 200
Response body has field id

完了のためにステータスエンドポイントをポーリングし、AIでアップスケールされた出力をFFmpegのLanczos出力と比較します。AIアップスケーリングは、アルゴリズム的手法よりもテクスチャや細かいディテールをより良く処理します。FFmpegは高速で無料です。

標準品質の作業にはFFmpegを、品質が最も重要となる映像にはAPIベースのAIアップスケーリングを使用してください。

よくある質問

Lanczosはあらゆるケースでバイキュービックよりも優れていますか?
アップスケーリングでははい。ダウンサイジングでは、バイキュービックは同等の品質でしばしば高速です。Lanczosは計算コストが高くなります。

vidstabはスマートフォンの映像でも機能しますか?
はい。スマートフォンの映像は手ぶれ補正の恩恵を最も受けることが多いです。手持ちのスマートフォンのビデオには、shakinessパラメーターを高く(8-10)設定する必要があります。

手ぶれ補正の縁を隠すにはどのくらいのズームが必要ですか?
ソースの揺れの程度によりますが、通常3-8%です。optzoom=1を設定すると、FFmpegが自動的に計算します。

FFmpegは低解像度の歴史的映像を強化できますか?
FFmpegのフィルターは役立ちますが限界があります。AIベースのアップスケーリングツール(ESRGANや専門のビデオ強化APIなど)は、著しく劣化し​​た映像に対してはるかに優れた結果を生み出します。

デノイズは再生を遅くしますか?
いいえ。デノイズは変換中の処理ステップであり、リアルタイムのエフェクトではありません。出力ビデオは通常通り再生されます。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる