NVEncに自動フィールドシフトを追加 (NVEnc 3.18)

NVEncにGPU版自動フィールドシフトを追加、そのほかrff対応、インタレ維持フィルタリングなど、インタレ関係の機能強化。

このあたりの機能追加は、去年あたりから更新してきたNVEnc 3.xx系でやりたかったことのうち最も大きなもので、一時期あまり進まなかったりしたものの、やっとたどり着けた感じ。まあ、どの程度需要があるのかよくわからないけど…。

ちなみに、NVEncCからvpp-afs使うと、結構高速に処理できて、fullHDに対してGTX1060でも調子良ければ360fpsぐらい出ている。NVEnc.auoから使うとあまり速度が出ません…。





NVEnc 3.18の変更点



・自動フィールドシフトを追加。(vpp-afs)
・インタレの場合に各種フィルタがフィールドを維持したまま処理できるように。
・rffを適切に反映し、フィールドに展開する機能を追加。(vpp-rff)
・高ビット深度のyuv420からp010に変換するときに異常終了することがあるのを修正。



NVEnc 3.19の変更点



[NVEnc.auo]
HEVCエンコ時にフレームタイプが設定できるように。



詳細



・インタレの場合に各種フィルタがフィールドを維持したまま処理できるように。
vpp-resize, vpp-knn, vpp-pmd, vpp-gauss, vpp-unsharpが対象。これでインタレ保持リサイズなどが可能になった。

vpp-delogo, vpp-debandはもとから対応済みのため、ひとまずすべてのフィルタがインタレを考慮して処理できるようになった。

フィールド分離を行って、フィールドごとにフィルタ処理を行い、再度フレームに戻す、という処理をフィルタごとに行っている。



・rffを適切に反映し、フィールドに展開する機能を追加。(vpp-rff)
avcuvid読み込み時、rff=1の場合専用。またtrim, vpp-deinterlaceとは併用できない。

rffフラグがある入力ファイルの場合、これまではそのままでは音ズレしてしまうため、--avsync forcecfrなどを使う必要があった。ただ、--avsync forcecfrは、音声と同期をとるために単にフレームの水増しを行っているだけなので、rffフラグ本来の効果が得られていなかった。

--vpp-rffを使うと、rff本来の処理である、「最初のフィールドを繰り返す」処理が適切に行われ、特に--avsync forcecfrなどを使用しなくても音ズレが生じなくなると思う。

一応手元では問題ないけど、手元にはrffのサンプルがあまりないので、もしかすると考慮できていない場合が存在するかもしれない…。



・自動フィールドシフトを追加。(vpp-afs)
インタレ解除をする自動フィールドシフトを追加。基本的にはAviutlの自動フィールドシフトをCUDAでGPUに移植したもの。パラメータ等もそのまま使えるようにした。

ただ、やはり画素の精度が異なるのと(YC48 vs YUV420 8bit)、GPUで処理するため若干処理方法が変わっているため、全く同じ結果にはならなくなっている。具体的には、同じ設定値でCPU版と比べると若干だけど縞が検出されにくくなっている。

また、一部機能制限があって、現状Aviutl版にある以下の機能には非対応。
- 解除Lv5
- シーンチェンジ検出(解除Lv1)
- 編集モード
- ログ保存
- ログ再生
- YUY2補間
- シフト・解除なし

パラメータ ... 基本的にはAviutl版のパラメータをそのまま使用する。

top=<int> (上)
bottom=<int> (下)
left=<int> (左)
right=<int> (右)
判定に使用する領域から除外する範囲の指定。

method_switch=<int> (切替点)
切替点が大きいほど、新方式の判定になりやすい(0で常に新方式判定off)

coeff_shift=<int> (判定比)
判定比率が小さいほど、フィールドをシフトしにくい(0で常にシフト判定off)

thre_shift=<int> (縞(シフト))
シフトの判定に使用する縞検出の閾値。値が小さいほど、縞と判定されやすくなる。

thre_deint=<int> (縞(解除))
縞解除用の縞検出の閾値。値が小さいほど、縞と判定されやすくなる。

thre_motion_y=<int> (Y動き)
thre_motion_c=<int> (C動き)
動き検出の閾値。値が小さいほど、動きと判定されやすくなる。

level=<int> (解除Lv)
縞解除の方法の選択。
解除Lv
Lv0 解除なし 横縞模様の解除を行わない。
フィールドシフトで組み合わされた新しいフレームがそのまま出力になる。
Lv1 フィールド三重化 フィールドシフトで組み合わされた新しいフレームに、さらに1つ前の フィールドを残像として足しこむ。
動きによる縞模様は完全に残像に変換される。
Lv2 縞検出二重化 フレーム内で縞模様を検出して、縞の部分を平均化して残像に変える。
フィールド単位の動きが少ない映像向け。
Lv3 動き検出二重化 前のフレームと比較をして、動き(色の変化)があった部分だけ縞の平均化を行う。
解除Lv2だと平均化されてしまう静止した横縞模様を保存できる。
静止したテロップの細かい文字や、アニメなどの枠線付きの静止画の 輪郭をつぶしたくない場合に使用する。
Lv4 動き検出補間 前のフレームと比較をして動きがあった部分は、片方のフィールドを潰して残す方のフィールドの画像で補間する。
残像はなくなりますが、この解除がかかった部分は縦の解像度が半分になる。
Lv5 斜め線補正補間 非対応


shift=<bool> (フィールドシフト)
フィールドシフトを行う。

drop=<bool> (間引き)
フィールドシフトを行うことで生じた表示時間の1フレームより短いフレームを間引く。

smooth=<bool> (スムージング)
24fps=<bool> (24fps化)
24fps化を強制する、映画・アニメ用のオプション。フィールドシフトと間引きをonにする必要がある。

tune=<bool> (調整モード)
縞模様と動きの判定結果の確認用。
意味
動きを検出
縞を検出
水色 動き + 縞を検出


rff=<bool>
入力フレームにrffフラグ付きのプログレフレームがある場合、これをチェックしてインタレ解除処理に反映する。rffフラグ付きのプログレフレームについては、フィールドシフトを行わずに、フレームの表示時間の修正のみを行う。

log=<bool>
フレームごとの判定状況等をcsvファイルで出力。(デバッグ用のログ出力)

一括設定用オプション
たくさんあるパラメータを一括指定するためのオプション。一括設定用オプションは必ず先に読み込まれ、個別オプションの指定があればそちらで上書きされる。

ini=<string> [NVEncCのみ]
指定したini設定ファイルから設定を読み込む。この設定ファイルはAviutl版自動フィールドシフト 高速化 7.5a+20以降のafs.aufで出力できるものを使用する。

iniファイルの例

[AFS_STG]
up=8
bottom=8
left=16
right=16
method_watershed=91
coeff_shift=191
thre_shift=447
thre_deint=44
thre_Ymotion=111
thre_Cmotion=222
mode=4
field_shift=1
drop=1
smooth=1
force24=1
tune_mode=0
rff=0
log=0


preset=<string> [NVEncCのみ]

以下の表のプリセットをロード。


例: アニメプリセットをロード後、"24fps"をonに、"rff"を"on"に
--vpp-afs preset=anime,24fps=true,rff=true

default triple
(動き重視)
double
(二重化)
anime
cinema
(アニメ/
映画)
min_afterimg
(残像
最小化)
24fps
(24fps
固定)
30fps
(30fps
固定)
method_switch 0 0 0 64 0 92 0
coeff_shift 192 192 192 128 192 192 192
thre_shift 128 128 128 128 128 448 128
thre_deint 48 48 48 48 48 48 48
thre_motion_y 112 112 112 112 112 112 112
thre_motion_c 224 224 224 224 224 224 224
level 3 1 2 3 4 3 3
shift on off on on on on off
drop off off on on on on off
smooth off off on on on on off
24fps off off off off off on off
tune off off off off off off off
rff off off off off off off off





ダウンロード>>
ダウンロード (ミラー) >>
OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。

ソースはこちら>>


スポンサーサイト



コメントの投稿

非公開コメント

No title

いつも更新ありがとうございます。
早速自動フィールドシフトを利用してみようとしたのですが
「nvenc [error]: Please set input interlace field order (--interlace tff/bff) for vpp-afs.

と出てしまいエンコード出来ませんでした。
フィールドオーダーの設定が必要って感じのエラーのようですが、どこで設定すればよろしいでしょうか?

Re: No title

設定画面の最初のタブに「フレームタイプ」というのがありますので、そこを「tff」あるいは「bff」に設定してください。

よろしくお願いします。

vpp-unsharpについて

いつもお世話になっております。

この度自動フィールドシフトの移植、大変ありがとうございます。
これでほぼNVEncC単体でFrame serverとして使えるようになりました(QSVEncCにあるraw出力がまだ対応していませんが、NVENCならではのLossless H264出力でなんとかなるかと思います)。

ところで、「vpp-resize, vpp-knn, vpp-pmd, vpp-gauss, vpp-unsharpが対象」としていますが、今ではオプションにないunsharpフィルタの追加も検討されておられるでしょうか。
楽しみにしております。

No title

返信ありがとうございます。
設定画面の最初のタブと言いますと画像の通り「動画エンコード」のタブでよろしいでしょうか?
https://imgur.com/3KEGvnR
フレームタイプという欄が見当たらないのですが…

Re: vpp-unsharpについて

ああ、うっかりしてました。

unsharpはNVIDIAのライブラリであるnppにあるもので、使用できるようにしようとして途中で忘れてしまい、まだうまく行っていないものです。

もし今後うまく行けば追加するかもしれません。

Re: No title

>> かぜ様
すみません、HEVCエンコを選ぶと表示されないようになっていたのを失念していました。

修正版をあげておきましたのでお試しください。(NVEnc 3.19)

No title

3.19確認しました、無事使えるようになりました。
ありがとうございます。

No title

いつも本当にお世話になっております。
動画、アニメどちらも使えて
現在で、最も高速に出力出来ると思われる
NVEncCのコマンドを教えて頂けますでしょうか?

いろいろ選択の幅が広がり、高速なのはなんだろうと試行錯誤しておりますが作った本人が一番詳しいだろうと思い、質問させて頂きました。

Re: No title

基本的には、最も高速化のは
--preset performance
をつけただけのときだと思いますが、そのぶん画質・圧縮率は落ちてしまいます。

結局は画質・圧縮率との相談になるので、そのバランスを見極めていただく必要があるかともいます。

No title

返事ありがとうございます!
-c hevc --vbrhq 2000 --tff --vpp-deinterlace normal -i %1 -o

上記の内容でもっと高速化する方法はございますでしょうか?

Re: No title

上記オプションをもっと高速化というのは難しいかもしれません。というのも、前に申しましたようにNVEncは基本的には「--preset performanceをつけただけ」が最も高速なためです。

高速化するとなると
・--preset performanceをつける
・HEVC→H.264
・vbrhqをやめてvbr
などしかないかもしれません。

あとは読み込みがavsなどであれば、そちらを見直してもよいかもしれません。


No title

ありがとうございました。
では現在の品質で高速化となると現状が良さそうですね。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR