個別に QSV のフィルタがあるがvpp_qsvフィルタは輝度、彩度、色相やデノイズ、クロップ、リサイズ、インターレース解除、回転、反転など複数のフィルタが含まれる。

ハードウェア支援フィルタのまとめ

QSV の基本設定は以下を参照。
qsv 対応の ffmpeg をつくる

デコーダとの組み合わせは以下を参照。
ハードウェアデコーダ、フィルタ、エンコーダを組み合わせる

基本コマンド

いろいろな種類のフィルタが含まれるので目的に合わせて使い分けたり複数を組み合わせたりする。コマンド例は2つあり1行目が QSV デコード、フィルタ、エンコードし、2行目が QSV フィルタだけ当てている。

インターレースを解除し30iの映像の場合24pにする。
ffmpeg -hwaccel qsv -c:v mpeg2_qsv -analyzeduration 30M -probesize 30M -fflags +discardcorrupt -i input.ts -vf hwupload=extra_hw_frames=10,vpp_qsv=deinterlace=2,decimate -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -analyzeduration 30M -probesize 30M -fflags +discardcorrupt -i input.ts -vf hwupload=extra_hw_frames=10,vpp_qsv=deinterlace=2,decimate -c:v libx264 -c:a copy output.mp4

unsharpフィルタのように輪郭が鮮鋭化する。
ffmpeg -hwaccel qsv -c:v h264_qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=detail=50 -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=detail=50 -c:v libx264 -c:a copy output.mp4

hueフィルタのように色相を調整する。
ffmpeg -hwaccel qsv -c:v h264_qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:hue=10 -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:hue=10 -c:v libx264 -c:a copy output.mp4

hueフィルタのように彩度を調整する。
ffmpeg -hwaccel qsv -c:v h264_qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:saturation=3 -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:saturation=3 -c:v libx264 -c:a copy output.mp4

eqフィルタのようにコントラストを調整する。
ffmpeg -hwaccel qsv -c:v h264_qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:contrast=3 -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:contrast=3 -c:v libx264 -c:a copy output.mp4

eqフィルタのように輝度を調整する。
ffmpeg -hwaccel qsv -c:v h264_qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:brightness=10 -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=procamp=1:brightness=10 -c:v libx264 -c:a copy output.mp4

cropフィルタのように一部を切り取る。縦横100x100にオフセットは0x0の位置。
ffmpeg -hwaccel qsv -c:v h264_qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=cw=100:ch=100:cx=0:cy=0 -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=cw=100:ch=100:cx=0:cy=0 -c:v libx264 -c:a copy output.mp4

scaleフィルタのようにリサイズする。
ffmpeg -hwaccel qsv -c:v h264_qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=w=320:h=180 -c:v h264_qsv -c:a copy output.mp4
ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -i input -vf hwupload=extra_hw_frames=10,vpp_qsv=w=320:h=180 -c:v libx264 -c:a copy output.mp4

関連記事

公式ドキュメントはまだない。

オプション

ffmpeg -h filter=vpp_qsv > vpp_qsv.txtでテキストで一覧が見られる。

  • deinterlace[int]
    • 0:インターレース解除しない。既定値
    • 1, bob
    • 2, advanced:通常はこちらを使う
  • denoise[int]
    デノイズ強度の指定
    既定値:0
    範囲:0 から 100 まで
  • detail[int]
    輪郭の先鋭レベルの指定
    既定値:0
    範囲:0 から 100 まで
  • framerate[rational]
    出力フレームレートの指定。挙動不明
    既定値:0/1
    範囲:0 から DBL_MAX まで
  • procamp[int]
    hue, saturation, contrast, brightnessを利用する
    既定値:0(利用しない)
    範囲:0 と 1
  • hue[float]
    色相の角度指定
    既定値:0
    範囲:-180 から 180 まで
  • saturation[float]
    彩度の指定
    既定値:1
    範囲:0 から 10 まで
  • contrast[float]
    コントラストの指定
    既定値:1
    範囲:0 から 10 まで
  • brightness[float]
    明度の指定
    既定値:0
    範囲:-100 から 100 まで
  • transpose[int]
    回転反転の指定
    • 0, cclock_hflip
    • 1, clock
    • 2, cclock
    • 3, clock_hflip
    • 4, reversal
    • 5, hflip
    • 6, vflip
  • cw[string]
    クロップする出力解像度の横幅。評価式が使える
    既定値:iw
  • ch[string]
    クロップする出力解像度の縦幅。評価式が使える
    既定値:ih
  • cx[string]
    クロップする場所の横座標の指定。評価式が使える
    既定値:”(in_w-out_w)/2″
  • cy[string]
    クロップする場所の縦座標の指定。評価式が使える
    既定値:”(in_h-out_h)/2″
  • w, width[string]
    出力解像度の横幅。-n が使えない。評価式が使える
    既定値:cw
  • h, height[string]
    出力解像度の縦幅。-n が使えない。評価式が使える
    既定値:”w*ch/cw”
  • format[string]
    出力フォーマットの指定
    既定値:”same”
  • async_depth[int]
    内部の並列化の深度。値が大きいほど遅延が増える
    既定値:0
    範囲:0からINT_MAXまで
  • scale_mode[int]
    スケールモードの指定。3以上は特定のプラットフォームでしか使えない
    • 0, auto:既定値
    • 1, low power
    • 2, high quality
    • 3, compute
    • 4, vd
    • 5, ve
  • rate[int]
    出力フレームレートの指定。deinterlaceが有効のときに使える
    • 0, frame
    • 1, field
  • out_range[int]
    出力のカラーレンジ
    • 1, limited, mpeg, tv
    • 2, full, jpeg, pc
  • out_color_matrix[string]
  • out_color_primaries[string]
  • out_color_transfer[string]
  • tonemap[int]
    HDRメタデータがついているときにトーンマップする。1で有効
    既定値:0

cw, ch, cx, cy, w, h に使える関数

ffmpeg で使える評価式を使って複雑な計算ができる。

  • in_w, iw:入力横幅
  • in_h, ih:入力縦幅
  • out_w, ow:横幅(cw)で指定した値。w, hには使えない
  • out_h, oh:縦幅(ch)で指定した値。w, hには使えない
  • cw:クロップした後の横幅
  • ch:クロップした後の縦幅
  • w:wで指定した値。w=hなどと使うが、w=h:h=wの併用はできない。cw, ch, cx, cyには使えない
  • h:hで指定した値。h=wなどと使うが、w=h:h=wの併用はできない。cw, ch, cx, cyには使えない

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)