個別に 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
関連記事
- リサイズする scale
- 色相を動的に変更できる hue
- ffmpeg でインターレース解除
- 映像を指定座標に切り取る crop
- Windows の ffmpeg で生放送する方法 – eq(明暗調整)
- 輪郭を保護しながらシャープにしたりぼかしたりする unsharp
公式ドキュメントはまだない。
オプション
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には使えない