NVEncを使ってみた

NVIDIAのKepler以降のGPUに載っているNVEncを使ってみるはなし。

NVEncLog

こんなかんじのログが出る。

最近は、GPUに動画のハードウェアデコード・エンコード機能を載っけるのが流行っているらしく、IntelのQSV、AMDのVCE同様、NVIDIAのKepler以降のGPUにもNVEncと呼ばれるハードウェアエンコード機能がついている。GPUの有効活用、という点ではこういう機能もぜひ使っていきたいところ。


GTX660_GPUZs
↑あまり有効利用してないこいつを有効に活用するのだ…。

しかし、これまでGeforceではこの機能がロックされていて、自由に使うことができなかった。(Tesla買えということですね、わかります)

が、少し前、グラフィックドライバの更新によりやっとGeforceでも使えるようになった、ということを教えていただいたので、早速NVEncを使ってみることにした。

いつもどおり、配布されているサンプルプログラムをAviutlの出力プラグインとして改造して、実験してみる。




拡張 NVEnc 出力



NVIDIAのハードウェアエンコーダ、NVEncによる出力プラグインです。

必須動作環境
Windows Vista,7,8,8.1 (x86/x64)
Aviutl 0.99g4 以降
NVEncが載ったハードウェア
NVIDIA製 GPU GeForce Kepler世代以降 (GT/GTX 6xx 以降)
※GT 63x, 62x等はFermi世代のリネームであるため非対応なものがあります。
GPU-Zでみて、GPU: GK1xx ならば問題ないはずです。
※NVIDIA グラフィックドライバ 334.89以降がインストールされていること

※XPではたぶん動作しません。
まあ、もう気にしなくていいよね、XP。余命あとすこしだし。

使用可能かは設定画面で確認できます。

NVEnc_logo ←使用可能

NVEnc_logo_disabled ←使用不可



使用方法



ダウンロードしたら解凍して出てくるauo_setupを実行してください。

以下のものを必要なら自動でダウンロード・インストール・配置します。
・.NET Framework 4.0 Client Profile
・neroaacenc
・L-SMASH
・msvcr120.dll
・msvcp120.dll

NVEncは.NET 4.0系を使用します。ただ、通常はWindows Updateによりインストールされているはずです。



いつもの注意事項など



無保証です。自己責任で使用してください。拡張 NVEnc 出力 (NVEnc.auo)を使用したことによる、いかなる損害・トラブルについても責任を負いません。



機能・特徴等



・NVEncによる高速エンコード
・CQP / CBR / VBR モード
・インタレ保持(PAFF)エンコード
・色空間情報の指定 (H.264 VUI Info)
・自動フィールドシフト対応
・高速化
  - 色空間変換のSIMD対応 (SSE2~AVX2)
  - 入力バッファによるGPUへの転送レイテンシの遮蔽
・設定ファイルの保存
・QSVEncと同様に、各種音声エンコーダに対応
・音声同時変換
・エンコード一時停止
・残り時間・経過時間表示
・ログ自動保存

[非対応 & 対応予定なし機能]
・Aviutlのコピーフレーム
・Aviutlのキーフレーム
・オーディオディレイカットの「映像追加」モード



解決できていない問題



[未実装] minQP / maxQPの指定ができない問題。
[バグ] nvCuda.dllがない環境でAviutlを実行すると、「nvCuda.dllが存在しません」と出てAviutlを起動できない問題。 (0.01で修正)

…すみません、そのうち直します。



エンコードのさらなる高速化
~GPUへのデータ転送時間の遮蔽とか~



NVEncでの処理は、順に

1. Aviutlでのデコード
2. Aviutlのフィルタチェーン
3. AviutlからYUY2で受け取りNV12に変換
4. cuMemcpyHtoDにより、フレームをGPUに転送
5. GPUにエンコード命令を発行
6. GPUからの出力をファイルに書き出し

となる。で、ここでは2のフィルタは使わないとして考えてみる。

こうしたハードウェアエンコーダを使用する場合、速度は多くの場合CPUのデコード処理によって律速されてしまう。つまりエンコードの速度はいかに速くデコードし、エンコーダにフレームを渡すかにかかっている。

そこで、「4:GPUへの転送 + 5:エンコード命令発行」を別のスレッドに分け、並列に実行することにより、メインスレッドがデコード~NV12変換に専念できるようにした。やはりGPUへのフレーム転送は遅いようで、この工夫によってGPU転送のレイテンシを遮蔽し、そこそこ(10%程度)高速化できる。

GPUへデータを転送する、というコードを書くだけならまったく簡単で問題ない。ところが、GPUへの転送を別スレッドにやらせるコードを書くにはやっぱりわりと面倒。GPUへの転送CPUメモリとGPUメモリがわかれていることのデメリットがこうした工夫をしなければならないことにあると思う。AMDの言うHSAのメリットというののひとつは、統一メモリによりこうした問題がなくなってコードが書きやすくなる、ということなんだと思う。
(膨大な数の細かい独立したタスクがあって、その一部でGPUを使用するみたいな場合にはあまり気にしなくていい…つまり、やらせるタスクにもよるのだけど…)

またいつもどおり、YUY2→NV12変換はSSE2~AVX2を使用して高速化している。



設定画面 スクリーンショット



NVEncStg



検証環境



Win7 x64
Intel Core i7 4770K @ 4.4GHz
Asrock Z87 Extreme4
GeForce GTX 660
DDR3-2600, 16GB RAM, 10-12-12-31-2
NVIDIA グラフィックドライバ 335.23

Aviutl 1.00
NVEnc 0.00 (335.23ドライバ)
QSVEnc 1.20 (3412ドライバ)
x264guiEx 2.06
x264 8bit, x64 rev2409 POP氏ビルド

ソース
この大空に、翼をひろげて FLIGHT DIARY オープニングムービー(Downloadできるやつ)
VC-1, 1280x720p, 30.00fps, 3140frmaes, 約1分45秒, 70.5MB

エンコード設定
NVEnc
CQP 28:32:35

QSVEnc
CQP 25:28:33

x264
--crf 27.3 --preset slow --psy-rd 1.0:0.2 --aq-strength 0.5

この設定で映像ビットレートとエンコード速度は
NVEnc 1480kbps (104.08 fps)
QSVEnc 1469kbps (99.46 fps)
x264  1463kbps (64.04 fps)
とだいたい1500kbps弱に合わせることができた。

エンコード速度は大きな差がないけど、この動画ではデコードが遅いのが原因。もっと高速にデコード出来る素材なら、ハードウェアエンコはもっと速くなると思う。



画質比較 (1721frame目)



わかりにくい場合は別のタブで複数の画像を開いて、タブ切り替えで比べてみてください。

オリジナル
compare_original_1721



NVEnc 1480kbps
う~ん、やや荒れ気味か。輪郭の崩れ、背景のテクスチャの潰れが気になる。
compare_nvenc_1721



QSVEnc 1469kbps
輪郭周りがやはり微妙。背景のテクスチャは結構よく残っている。
compare_qsv_1721



x264 1463kbps
さすが…というべきで、背景のテクスチャも潰れずよく再現出来ている。
compare_x264_1721




画質比較 (2127frame目)



オリジナル
compare_original_2127



NVEnc 1480kbps
う~ん、わりと劣化が進んでしまっている。空(青)と髪(黒)の境界付近の破綻がひどい。
compare_nvenc_2127



QSVEnc 1469kbps
まあまあ。それなりではある。
compare_qsv_2127



x264 1463kbps
ここでは完璧に再現出来ているわけではないけれど、ごまかし方がうまい。
compare_x264_2127



というわけで、NVEncは画質面ではすごくよい、というわけではない。というよりまあ当たり前だけど、やっぱりx264の画質(圧縮率)は圧倒的で、ハードウェアエンコは遠く及ばない。

それでも、そこそこの画質で高速にエンコードできるようなので、もしKepler/MaxwellなGPUが付いていて、興味を持ったら遊んでみてください。



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



スポンサーサイト



コメントの投稿

非公開コメント

No title

無理なお願い聞いて頂いて本当に有難うございます(>_<)
早速試してみたいと思います!!

Re: No title

かなり突貫工事だったので、他の環境でも無事動くと良いのですが。

大丈夫だとは思いつつ…

No title

i7-3610QM+GTX660M(NVIDIA Optimus)でのNVEncを確認しました。

フルHDのMP4をMP4 File Reader(lwinput.auiではデコードがボトルネックになるため)で読ませ、そのままノンフィルタで出力しました。
私の環境では54fpsでしたが、恐らくEU数の問題では無いかと思います(GTX660MのEU数は…たったの2)。

にしても、流石にI:21・P:23・B:25程度まで上げると、十分見れる画質になりましたね。
かなりビットレートが上がってしまうので、勿論ニコニコ向けにはなりませんし、容量を気にする人には向きませんが、Youtube向けや容量をさほど気にしない人にとっては結構使えるものになると思います。
…まぁ、私のPCでも使えることが分かったってだけでも十分でしたけどね。

Re: No title

無事動いたようでよかったです。

たしかにNVEncの速度がなにによって決まるのか、気になりますね。GPU-Zを見る限りだとGPU Loadはほとんど増えないのでGPUの演算力はあまり関係ないのかな、と勝手に思っていましたが、そうでもないのでしょうか…。

No title

こちらでもx264・QSV・NVEncの比較をしてみました。
やはりというか何というか、AviUtl側のデコードが遅いせいで、設定をかなり重めにしてもさほどエンコ速度が変わりませんでしたね…

私が使ったソースは、1280x720かつ、WMVのように重くないソース…ということで、
「Magical Charming!」のOPの、ダウンロードできるもののうち、MP4(100MB)の方を使ってみました。
また、そのうち、検証に使用したのは、実利用も考慮し、映像が明確に出る、頭から3040フレームまでとしました。

H.264 1280x720p 30.00fps 3040frames 約1分41秒

検証環境
Win7 x64 SP1
Intel Core i7-3610QM 2.3GHz→TB 3.3GHz(4コア時平均3.1GHz)
Intel HM76 Express
GeForce GTX 660M(NVIDIA Optimus)
DDR3-1600 4GBx2
Intel GPUドライバ 15.33.14.64.3412(更新してないです、スミマセン)
NVIDIA GPUドライバ 335.23

Aviutl 1.00
NVEnc 0.00(335.23ドライバ)
QSVEnc 1.20(3412ドライバ)
x264guiEx 2.06
x264 8bit x64 rev2409 POP氏ビルド
フィルタ関連は全てOFF。

尚、今回は…
・MP4 File Reader Ver1.5
・L-SMASH File Reader r694
でのデコード比較もしてみました。

エンコ設定
x264
・以下「medium」設定と称するもの
--crf 29.5 --qcomp 0.7 --vbv-bufsize -1 --vbv-maxrate -1 --aq-strength 0.3 --psy-rd 0.3:0 --keyint -1 --bframes 2 --b-adapt 2 --no-deblock --direct auto --ref 2 --weightp 1 --no-fast-pskip --no-dct-decimate --trellis 2 --colormatrix auto
・以下「ultrafast」設定と称するもの
--preset ultrafast --profile baseline --crf 36 --scenecut 40 --b-pyramid none

QSV
共通設定
CQP、GOP長自動、連続Bフレーム数2、シーンチェンジ検出ON、OpenGOP OFF、歪みレート最適化 All Frames、スライス数自動、colormatrix auto

NVEnc
共通設定
CQP、GOP長自動、Bフレーム数2、動き探索精度full-pel、動き予測方式auto、参照距離2、AdaptiveTransform auto、スライス数1、CABAC ON、colormatrix auto

参照距離とBフレームを2に統一したのは、QSVと条件を揃えるためです。
QSVとNVEncに関しては、各エンコで若干品質指定値が違うので、結果の方に載せます。
一応、1500kbps前後になるように調整したつもりですが、誤差は全体で100kbps近く出てしまったので、画質に関してはあまり比較する意味が無いかもしれません…

結果
x264
・medium
51.39fps・1491kbps(L-SMASH)
55.95fps・1474kbps(MP4 Reader)
・ultrafast
82.85fps・1487kbps(L-SMASH)
93.72fps・1474kbps(MP4 Reader)

QSV
・1-BestQuality
89.51fps・1492kbps(I28・P32・B36・L-SMASH)
95.17fps・1484kbps(I27・P32・B36・MP4 Reader)
・7-Fastest
89.55fps・1520kbps(I28・P33・B36・L-SMASH)
95.21fps・1503kbps(I28・P33・B36・MP4 Reader)

NVEnc
92.75fps・1482kbps(I30・P35・B38・L-SMASH)
99.2fps・1545kbps(I31・P34・B38・MP4 Reader)

…どう考えても明らかにCPUがボトルネックですね^^;
試しにTBを切って上限を2.3GHzにしてやってみたところ、QSVやNVEncでも70fps前後しか出ませんでした。
CPUがボトルネックになるため、厳密な比較はできませんが、恐らく、Kepler世代間では搭載されているハードエンコーダは全く同一のもので、GPUを上位種にしたところでエンコ速度は大差無いものと思われます。
書かれているEU数は、GPUのCUDAユニット(?)の数を示しているだけだと思われます。

にしても、読み込みプラグインの違いがここまで顕著(平均7%、最大13%)に出るとは想定外でした。
L-SMASHを最新版に更新していないのも悪いのですが、ここまで差が出るとなると…
まぁ、MP4 Readerはエラーが多いのであまり使いたくはないのですが…

で、気になるx264の最速設定(?)との比較ですが、これに関してはultrafastの完敗(速度も画質も)です。
よって、高速プリセットを使うくらいならQSVやNVEncを利用した方が良い結果が出るかもしれません。
まぁ、プリセット自体極端なくらいに速度よりなので、これがfastやfasterレベルならもう少し変わってくるかもしれません。

…で、ここまで言及してこなかったQSVとNVEncの比較ですが、NVEncのが若干速いものの、その差は有意とは言えません。
というか、恐らくCPUリソースの使用率の差になっていると思います。
画質の方では、QSVの方がまだましかなぁ…といったところでした。NVEncだと、シーンチェンジ時のノイズやエッジの汚さが気になりました。

Ivy世代のHD4000でさえこの状況ですので、既にQSVが使用可能な環境であれば、無理にNVEncを導入する必要はないかもしれません。
ただ、QSVにも弱点があり、QSV中にブラウザスクロールするだけで顕著にフレームレートが低下してしまうほど、他リソースのメモリアクセスには弱いようです。これではバックグラウンド処理なんて任せられません(たんにCPUスペックが足りてないだけかもですが)。
まだ詳しくは検証していませんが、そういった場合にはNVEncは活用出来るかもしれませんね。

とりあえず当方の環境では、CPUが遅い上に、尚且つTBオフで常用していたことが多かったこともあり。リサイズフィルタを併用しただけで1920x1080のMP4ソースのエンコがQSVでも15fps程度に落ちてしまったりと、AviUtlではあまりハードエンコの恩恵を受けられては居ませんが、活用出来そうな場面があったら積極的に活用していきたいと思います。

…とてつもない長文、大変失礼しましたm(__)m

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

No title

動画にアンチエイリアスとか使えたら面白そうなのにねw

Re: No title

非常に詳細な報告、ありがとうございました!

まあ、画質はどうしてもQSVのほうがやや上なような気がしますね。ただ、NVEncの動き探索精度は「full-pel(1画素精度)」でなく「Q-pel(1/4画素精度)」にしてあげたほうがよいかもしれません。(QSVも1/4画素精度だと思いますので)

NVEncは良い点としては、QSVと違いGPUをあまり使わないので、消費電力が少なめな気はしますが、それがそんなに大きい差なのか、と言われると…

やっぱりAviutl経由だとデコードがボトルネックになりやすいですよね。i7-4770Kの4.4GHzでもボトルネックになるので…。このあたりは難しい問題です。

No title

物凄くいまさらですが…この動画はオープニングではなくプレビュームービー(はて何のことか)だと思います(OPは200MBある)

で、VCEEnc0.02v2で同じ動画を使ってテストしてみました
設定はプロファイルの画質重視、CQPで30/34、1486.91Kbps
環境はAMD FX-8350+R9 270(VCE1?)
変換速度は平均105.24FPSでした(意外と早い)

1721F目
http://i.imgur.com/Tek4WSE.png
2127F目
http://i.imgur.com/h73UF69.png

うーん、画質は昔あったAVIVO Converterからあんまり進歩してないような…画質的にはNVEncとQSVの中間な感じですかね

No title

VCEでも比べていただきありがとうございます!

おっしゃるように、QSV/NVEnc/VCEを比べると画質ではQSVが一番ですよね。

要望

Aviutlの出力プラグインで使用させていただいているのですが
複数枚グラボを乗せているとどれか1つに処理が偏ってしまい
これを均等に処理させるようなことはできないでしょうか?

Re: 要望

複数のエンコードを同時に実行する場合でしたら、可能かもしれませんが、ひとつのエンコードを分散させることはNVEncでは難しいようです。

"GPU GM107"

初めまして
最近「NVIDIA GeForce GTX 750 Ti」のグラフィックカードに付け替えまして、色々探していたところこちらのHPに辿り着きました。
普段「aviutl + x264」にてエンコードしております。
「拡張NVEnc」の存在を最近知り、本日インストールしてみましたが、「動画エンコード」の画面でマークがグレーのままでどうも使用不可のようです。
「GPU-Z」の表示では「GPU:GM107」と表示されております。
こちらのカードには対応してないという認識で宜しいでしょうか。
もし宜しければご返信頂ければ幸いです。
兎にも角にも素晴らしいソフトウェアのご提供感謝しております。

Re: "GPU GM107"

マークがグレーのままですと、使用できないということになってしまいます。

一度GPUのドライバを確認していただけないでしょうか。(GPU-Zにも表示されていると思います)

NVEncには、347.09以降のドライバが必要です。

ドライバーを入れ替えてみますね。

rigayaさん
 ご返信頂きまして誠に有り難う御座います。
 当方「TMPGEnc Authoring Works 5」を使用しており、最新ドライバーでは「CUDA」を使用出来ないとの事でした。
 サポート曰く
---
CUDAエンコーダーをご利用いただく際には、「340.52 WHQL」、「340.43
BETA」より以前のバージョンのNVIDIA グラフィックドライバーをご利用
いただく必要がございますが、現在ご利用のバージョンはいくつになります
でしょうか。

もし、「340.52 WHQL」、「340.43 BETA」以降のバージョンをご利用の
場合はNVIDIA社様のウェブサイトにて「337.88」以前のドライバーを
ダウンロードしインストールいただければと存じます。
---
という事でしたので、現在「337.88-desktop-win8-win7-winvista-32bit-international-whql.exe」をインストールしております。
が・・・CUDAを使った方が逆に遅くなってまして今は使用してない次第です。
ぶっちゃけ「TMPGEnc Authoring Works 5」でCUDAを使用すると非常に遅くなりますので、これなら「NVEncを試す為に」ドライバーの入れ替えをとも考えております。
なかなか知らない世界ですので難しいですね。一度最新の物を入れて試させて頂きますね。
ご返信有り難う御座いました。

No title

gtx750tiを使用しているのですがこちらのNvencが使用できません。
nvenc [error]: nvEncodeAPI.dllがシステムに存在しませんと表示されます
ドライバは最新で、aviutlも最新です。

No title

お騒がせしました。バージョンの問題でした。

No title

改善しませんでした。gtx750tiでは、動作しないのですかね

Re: No title

gtx750tiでも動作するはずです。ドライバのクリーンインストールで改善するかもしれません。

お返事ありがとうございます。
試してみます。

マルチGPU

すみません。NVEncのバージョン1.00以降を利用するには、347.09以降のドライバが必要ですよね?
できれば、少し前のドライバでも動くようになっては欲しいんですが。

理由は、自分はAviutl以外でCUDAを利用しますが、最新のドライバーだと、バグが確認されて、ほとんどのプログラムでCUDAが使えないからです。

また、複数のGPUで変換できる「マルチGPGPU」機能も搭載して欲しいとは思っているんですが、たぶん無理ですよね。

出来る範囲でお願いします。

Re: マルチGPU

NVEncのベースとなっているNVENC SDKが347.09ドライバ以降となっており、NVEnc 1.xxでの対応は難しいです。NVEnc 0.xx系ならベースとなっているNVENC SDKが古いので、もう少し前のドライバから動きます。

「マルチGPUによる変換」は、2つの異なる動画を同時にエンコードするといった用途でしょうか? それでしたら、GPUの選択機能をつければよいかもしれません。

一方、2枚のGPUを使い、1つの動画を高速にエンコードするといった用途に使用することは残念ながらできません…

No title

GPGPUのH264エンコーダーを探してココにたどり着きました。

H264が元々整数演算だよりだったのかな、とおもうと浮動小数点演算でどう、処理されてるのか気になります。

「エクセルでミスが出る」と ある場所で読んだ限りでは
01のコンピューターの世界では10進数が通じないとかが ちょっとした目からうろこでした。

現実に際した用途としては コンピューターをストレスなく使いながらも 
大量の動画を一気に再圧縮したいなど コンピューターの負荷分散的 その結果としてのシステムの安定性などところにメリットが有るのかなと思いました。

ニコニコ動画では最近1920x1080の60FPSなんて動画も見かけるようになりましたが さすがにWinタブレットでこれを再生すると熱は持つし、バッテリーがすぐ死んでしまいます。

こういうのをFPS&解像度調整&ベースライン再エンコ
などで無理なく再生しようとしてたのですが
大量にある動画を圧縮するとPCが使えない状態が続きそうなのでずっと作業が止まってました。

この用途なら、画質の低下はある程度容認できますし、GPUもP0(最大クロック状態)の3~6%使ってますので十分使っているとは思います。

(重いと言われる某ゲームでもP0状態で動くことはそうはない)

ソレニシテモ、ボトルネックというのはどこでも出てくるモンスターです

私がずっと悩まされているのは数百Mの光回線で数十Mしか出ないという事情のボトルネックです(笑

公式のCUDAに対応しているGPUに9600GTがあるのですが、NVEncではできませんでした。また別のを使わないといけないということでしょうか?

Re: タイトルなし

9600GTではNVEncは使用できません。

動作条件は以下の通りです。

Windows 7,8,8.1,10 (x86/x64)
Aviutl 0.99g4 以降
NVEncが載ったハードウェア
NVIDIA製 GPU GeForce Kepler世代以降 (GT/GTX 6xx 以降)
※GT 63x, 62x等はFermi世代のリネームであるため非対応なものがあります。
NVEnc 1.xx NVIDIA グラフィックドライバ 347.09以降
NVEnc 2.xx NVIDIA グラフィックドライバ 358 以降

OS10仕様にて

使用するAviutl.exeのあるフォルダを指定し、
「次へ」をクリックしてください。

以下のもののインストールを行います。
・NVEnc
・qaac
・L-SMASH (remuxer, muxer等)をセットアップしようと指定フォルダのフォルダー参照でデスクトップのみしか表示されずローカル関係のハードが表示されなく指定できませんでした以前はOS7の64ビット版仕様してたのですが7はうまくハード指定できました、OSの10にしたら指定できなくorzあとh264もい同じ不具合がおきもしかしたらウインドウズ10にはあんまり対応してないんすかね?説明文少しややこしいのですが不具合の調査もしできたらお願いします。

Re: OS10仕様にて

こちらではwin10でも問題なく下記のように表示されます。

http://dl.dropboxusercontent.com/u/61616420/Photos/auoSetup/auo_setup_win10.png

フォルダー参照の表示は、アプリケーション側の問題ではないように思います。

No title

こんばんは。
NVEnc_2.07をインストールしようとauo_setup.exeを起動すると”サポートされていない16ビットのアプリケーション”とでてきてインストールができません。
Windows7 64bit
Visual C++ はインストールしてあります。

No title

Win7環境がないのでこちらでは試していないですが、Win8.1では問題なく動作しており、該当メッセージの出る原因はよくわかりません。16bitプログラムのはずはないので、なにかを誤認識しているのだと思います。

うまくいかない場合は、auoフォルダにあるものをAviutlフォルダにコピーし、設定画面から音声エンコーダとl-smashの場所を指定して使用してください。

Re: No title

すこし調べていたところ、VC2015 runtimeがインストールされていない環境で発生することが分かりましたので、NVEnc 2.07v2で修正しました。
http://rigaya34589.blog135.fc2.com/blog-entry-796.html

報告いただきありがとうございました。

爆速に感動!

NVEncの爆速に感動!
以前のノートPC(今では考えられないほど低スペック)で3時間かかっていたエンコード処理が1分半でできるようになりました。実に1/120。本当に有難うございました。

GPUが認識されない…

こんにちは。

最近こちらのNvencを使わせてもらっているのですが、何故かGPUが読み込まれないです…
GPUの部分がunknownと表記されます
GPUはGTX980です

Re: GPUが認識されない…

>>GPUが読み込まれないです
とのことですが、GPUが正しく認識されず、エンコードが開始されないということでしょうか?

GTX980はNVENCが使用できるはずですので、もしかするとドライバのバージョンなどの問題も考えられます。その際のエラーメッセージなどありましたら、教えていただけないでしょうか?

GPU使用率......

こんにちは、せっかくだから変えたばっかりのグラボでエンコしてみようと思い、使わせていただいたのですが、
GPU使用率が10%前後を行き来してちょっと30%まで行った程度しか使われてないみたいなんです......

一応今見れる値を書き込んでおくと
Frame Buffer 4%
Video Engine 45%
Bus Interface 7%
Memory     13%
(どれも最大値)
でした。

こんなものですかね......?

GPUはPalitのSuper Jet Stream GTX1080です
CPUはi7-4790Kです
ドライバは最新の安定板でした(βではない)

既出でしたらすみません。

Re: GPU使用率......

Aviutlから使用する場合は、どうしてもそこで遅くなってしまって、十分な速度が出ない場合があります。こちらでも(GTX1060ですが)Video Engineのところは50%~60%前後です。

NVEncCだと、Video Engineのところが90%近くまで行くようです。

突然使えなくなった

普段から使わせてもらってます
GTX980tiで使用しているのですがある日突然設定画面のマークがグレーになり使えなくなりました。
エンコードをすると
cuCtxCreate error:0x3e7
Cudaの初期化に失敗しました。
と表示されます
グラボのドライバーのバージョンは378.66です。
このバージョンでは使用できないということでしょうか?

Re: 突然使えなくなった

CUDA関係のエラーに見えますが、よくわかりません。突然ということですが、ドライバの更新などをされた後ということでしょうか。

こちらではWin10 x64 + 376.53で動作しています。

突然使えなくなった

返信ありがとうございます
OSはwin10 x64です。
最後に使えた時から変わったのはグラボのドライバーが変わっただけだと思います。特にaviutlの設定などもいじってません。

Re: 突然使えなくなった

グラボのドライバを変えたのは重要だと思いますが…。

すこしでも合わせようと思い、こちらも378.66にしてみましたが、Win10 + GTX1060では問題なく動作しており、残念ながらよくわかりません。Maxwell世代(GTX9xx)は持っていないので検証できず、申し訳ありません。

Re: Re: 突然使えなくなった

こちら側でいろいろ試しましたがやはりだめでした
別ソフトのxmediarecodeの方もNVEncが使えなくなってたのでドライバーとグラボの相性が悪いんでしょうかね
ここはじたばたせずにドライバーの更新を待つことにします。

わざわざ試していただきありがとうございました

上記の件と合わせて。

上記のyuki様が質問されている症状だったのですが、グラフィックドライバを378.66に変更することで使用できるようになりました。

AviUtl:Ver1.00
このプラグイン:Ver3.06
グラフィックドライバ:Ver378.66です。

グラボはGTX980Tiです。

しかし、使用はできるのですが、タスクマネージャ、GPUZを合わせてみてみるとCPU使用率が100%、GPU使用率が5%と明らかにCPUでエンコードしているようなのですが、GPUを使用するように変更するための設定などがあるのでしょうか?

Re:上記の件と合わせて

コメントに誤植がありました。

グラフィックドライバのバージョンが378.66ではなく376.33の間違いです。

Re:上記の件と合わせて

GPUを使うための設定は特にありませんので、エンコードできていればHWエンコになっているはずです。

NVEnc利用時には、GPU使用率はほとんど上がらないです。GPU-Zで言うと"Video Engine Load"が上がっているか確認してください。

NVEncが遅い場合には、Aviutl側がボトルネックとなっている場合がありますので、まずは短い動画でフィルタなどをすべて除いてエンコードしてみてください。

No title

[未実装] minQP / maxQPの指定ができない問題。
上記を実装する予定はありませんか。

Re: No title

すみません、ちょっと今NVEncのコードはいろいろいじくり回しているので難しいです。後ほど検討したいと思います。

No title

エンコードソフト色々使わせてもらってます。
大変に重宝しています。
有難うございます。

1つ質問ですけど。。。
NVEncでエンコード中タスクマネージャーを開くと Nvidiaのソフトが動いてないですがそれは正常でしょうか?
お手数ですが教えてもらえますか。
宜しく御願いします。

Re: No title

「Nvidiaのソフト」とおっしゃるのが具体的にどういったものかよくわかりませんが、他のソフトを起動したりはしないかと思います。

No title

NVEncのアイコンが灰色なのですが
GTX 1060 対応していないのでしょうか?

Re: No title

>GTX 1060 対応していないのでしょうか?
そんなことはないと思いますけど…。

ドライバのバージョン等の問題ではないでしょうか。

お疲れ様です。
この度新しく、サブでノートパソコンを増やしましたが、Geforceのmx150は非対応なのでしょうか?バージョンは388.71を使用しております。設定画面では色が入ってなく、このまま出力すると nvEncodeAPI.dllがシステムに存在しません。 と出ます。

Re: タイトルなし

調べてみたところ、Geforce mx150はPascalですが、GTX1030と同系のGP108系のようです。
http://www.4gamer.net/games/382/G038221/20170527002/
https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units

このGP108は残念ながら例外的にNVENCが載っておらず、非対応となってしまいます。

GTX650 vs GTX650Ti

GeForce GTX650Ti(Kepler)ではなくて GTX650ですが、AviUtlでNVEncを導入してみたところ快適に動作しました。設定画面でも緑色のNVEncのロゴが表示されました。
GPU-ZではGPU=GK107となっています。(ちなみにGTX650TiではGPU=GK106になるようです)
システム環境はDesktopPC Intel Corei7 860 Windows7です。
GeForce GTX650のドライバーはVersion 381.65(2017/04/06リリース版)です。

ありがとうございます。

No title

返信ありがとうございます。
mx150の者です。
年末のお買い物は大爆死により終了し、素晴らしい年明けが迎えられました。このシリーズが対応する事を、ちんたら出力させながお待ちしております...詳しくお調べ頂いてありがとうございました!

エンコード速度が出ない

エンコードのfpsが9前後しかでないのですが、なぜでしょう?。
使用PCは、CPU i7-3770、GPU GTX1050ti で、
動画サイズは1920x1080、60fps(長さは2分くらい)です。

標準で付いているプロファイルを使用してもやはり9fpsしかでません・・・。
別記事のコメント欄に、Aviutl側のフィルタが、というのがあったのでAviutlを確認しましたが、フィルタは一切使用していませんでした。

Re: エンコード速度が出ない

9fpsとなると、x264のほうが速そうですね…。

速度が出ない場合は、読み込み/フィルタ/エンコード/書き出しのどこかしらに原因があることになりますが、原因が多岐にわたるため、申し訳ないのですがこちらでは原因の把握が難しいです。

x264のほうが速かったりすると、まず読み込みやフィルタ、書き出しなどは問題なさそうですが…。

あとはCPU/GPU間の接続の問題もあり得ますが、いただいた構成からさすがにPCIex1の接続、ということはないでしょうし…。

No title

お返事ありがとうございます。
CPUでも早くて11fpsしかでませんね・・・。
接続など確認してみて、それでも無理そうならPCの新調も考えてみます。
ありがとうございました。

No title

再度失礼します。
エンコード速度で100fpsや200fpsが出た!というわけではないのですが、なんとか60fpsまで出せましたので報告に来ました。

方法は、システム→設定の、画像処理スレッド数が「0」になっていたのを「8」にすることでした。

No title

1060 6GBです。
NVEncを導入したのですが、アイコンがグレーのままなのですがどうすれば有効になるのでしょうか...

↓環境↓
Aviutl 1.00
NVEnc 4.15
GeForce ドライバー ver399.24
Windows10 Home 64bit

Aviutlを再インストールしたりグラボのドライバーを最新にしましたがそれでもダメでした。
どうかよろしくおねがいします。

動作条件について


Loaded nvEncodeAPI.dll.
InitCuda: device #0.

OS Version Windows 7 x64 (7601)
CPU Intel Core i5-4590 @ 3.30GHz [TB: 3.60GHz] (4C/4T)
Failed to find required function "cuvidGetDecoderCaps" in nvcuvid.dll
Failed to find required function "cuvidGetDecoderCaps" in nvcuvid.dll
No GPU found suitable for NVEnc Encoding.
Failed to initialize CUDA.
No NVEnc support.
…とbatから出力されましたが、GPUの不適合ということなのでしょうか。動作要件を見る限りすべてクリアしているようなのですが、再起動後も同様のエラーが出るため原因が分かりませんでした。よろしければご教示いただけると幸いです。

No title

あまり見たことのないエラーなのですが、デコードで必要になるドライバ付属のモジュールをロードしている箇所なので、もしドライバを更新していなければ、更新すると改善するかもしれません。

ドライバが更新済みですと、ちょっと原因がわかりません。

もっともWin7ではテストできていないので、そのあたりの問題なのかもしれませんが…。

NVEncの現バージョンについて

当記事で載せておられた
NVEncの設定SS通りに設定したのですが
どうしても速度をかんじられません。

エンコード中のプログラム文(?)を
コピペしますので、
何か悪いところがあれば
指摘をお願いします。

以下コピペ

[E:\全動画データ保管ファイル\3FcF 完成動画\零 紅い蝶 2.mp4]
------------------------------------------------------------------------------------------------------------------------------
auo [info]: converting YUY2 -> nv12p, using AVX AVX2
auo [info]: NVEncC options...
-c h264 --cqp 26:29:32 --qp-init 20:23:25 --gop-len 300 -o "E:\全動画データ保管ファイル\3FcF 完成動画\零 紅い蝶 2.264"
--y4m -i -
NVEncC (x64) 4.18 (r857) by rigaya, Sep 27 2018 21:15:57 (VC 1900/Win/avx2)
OS Version Windows 10 x64 (17134)
CPU Intel Core i5-8400 @ 2.80GHz [TB: 3.78GHz] (6C/6T)
GPU #0: GeForce GTX 1050 (640 cores, 1455 MHz)[417.35]
NVENC / CUDA NVENC API 8.1, CUDA 10.0, schedule mode: auto
Input Buffers CUDA, 36 frames
Input Info y4m(nv12)->nv12 [AVX2], 1980x1080, 60/1 fps
Vpp Filters copyHtoD
Output Info H.264/AVC high @ Level auto
1980x1080p 1:1 60.000fps (60/1fps)
Encoder Preset default
Rate Control CQP I:26 P:29 B:32
Lookahead off
GOP length 300 frames
B frames 3 frames
Ref frames 3 frames, LTR: off
AQ off
Others mv:auto cabac deblock adapt-transform:auto bdirect:auto

Re: NVEncの現バージョンについて

速度を感じられないとのことですが、具体的にどのぐらいの速度でしょうか…?

NVEncの場合、エンコード側の設定で速度があまり変わらないことが多く、どちらかというとNVENCによるエンコード以外のAviutlの処理(ファイルの読み込み・デコード・フィルタなど)で速度が決まることが多いです。この部分が、下記のログの「Aviutl 平均フレーム取得時間」にあたります。

下のログでは、Aviutl側の処理が重い時の例です。「Aviutl 平均フレーム取得時間」が12.586msとなっていますので、エンコードを除いても1000/12.586=79.45fpsは越えられない状況で、そのため74.02fpsというエンコード速度になっています。

なお、「Aviutl 平均フレーム取得時間」を表示できるのはNVEnc 4.26からとなります。お使いのNVEncは4.18のようですので、更新の上、確認してみていただけないでしょうか。


auo [info]: converting YUY2 -> nv12p, using AVX AVX2
auo [info]: NVEncC options...
-c h264 --cqp 20:23:25 --qp-init 20:23:25 --gop-len auto -o "F:\test.264" --y4m -i -
NVEncC (x64) 4.29 (r977) by rigaya, Dec 17 2018 20:25:56 (VC 1900/Win/avx2)
OS Version Windows 10 x64 (17134)
CPU Intel Core i9-7980XE @ 2.60GHz [TB: 4.11GHz] (18C/36T)
GPU #0: GeForce RTX 2070 (4608 cores, 1710 MHz)[PCIe3x16][417.22]
NVENC / CUDA NVENC API 8.1, CUDA 10.0, schedule mode: auto
Input Buffers CUDA, 36 frames
Input Info y4m(nv12)->nv12 [AVX2], 1920x1080, 24000/1001 fps
Vpp Filters copyHtoD
Output Info H.264/AVC high @ Level auto
1920x1080p 1:1 23.976fps (24000/1001fps)
Encoder Preset default
Rate Control CQP I:20 P:23 B:25
Lookahead off
GOP length 240 frames
B frames 3 frames
Ref frames 3 frames, LTR: off
AQ off
Others mv:auto cabac deblock adapt-transform:auto bdirect:auto


encoded 11053 frames, 74.02 fps, 583.02 kbps, 32.04 MB
encode time 0:02:29, CPU: 0.4, GPU: 2.9, VE: 15.6, GPUClock: 1410MHz, VEClock: 1305MHz
frame type IDR 47
frame type I 47, total size 3.01 MB
frame type P 2763, total size 16.20 MB
frame type B 8243, total size 12.84 MB
auo [info]: CPU使用率: Aviutl: 13.09% / NVEnc: 0.60%
auo [info]: Aviutl 平均フレーム取得時間: 12.586 ms
auo [info]: NVEncエンコード時間 : 0時間 2分33.4秒
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

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

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

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

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

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

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

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

○その他
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 (ミラー)

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

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

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