NVEnc 1.00 (HEVC対応)

まだ変なところがあるかもしれないけど、ひととおりチェックを済ませたので、NVEnc 1.00として公開。

1.00での変更点



・NVEnc API v5.0に対応し、HEVCハードウェアエンコードに対応。
動作には347.09以降のドライバが必要。

これがいちばんやりたかったこと。これに伴い、内部的には大部分のコードを作りなおした。

ただ残念ながら現時点ではBフレームが全く使えない状態でのエンコードになってしまう。なので圧縮率としてはかなり厳しい物になるんじゃないかなと思う。

これがわたしの書いたコードが悪いのか、ドライバの問題なのか、あるいはハードウェアの限界なのかはわからない。

・デフォルトパラメータを高品質よりに調整。
・プリセットを更新。HEVC用のプリセットを追加。

・コマンドライン版NVEncCを追加。
- raw, y4m … YV12読み込み
- avs …YV12/YUY2読み込み

QSVEncに対するQSVEncC.exeのNVEnc版を作った。需要あるかはわからないけど。

ただ、現時点ではQSVEncCにあるような多くの機能はなく、とてもシンプルになっている。もしなにか欲しい機能があったら言ってください。

・x264guiEx 2.24までの更新を反映。
- qaacについて、edtsにより音声ディレイのカットをする機能を追加
- 音声エンコーダにfdkaacを追加
- muxerのコマンドに--file-formatを追加。
- flacの圧縮率を変更できるように
- 音声やmuxerのログも出力できるように
- 0秒時点にチャプターがないときは、ダミーのチャプターを追加するように。Apple形式のチャプター埋め込み時に最初のチャプターが時間指定を無視して0秒時点に振られてしまうのを回避。
- ログにmuxer/音声エンコーダのバージョンを表示するように。
- ログが文字化けすることがあるのを改善。
- 音声エンコーダにopusencを追加。
- nero形式のチャプターをUTF-8に変換すると、秒単位に切り捨てられてしまう問題を修正。
- CPU使用率を表示。




1.00べーた からの修正点



[共通]
・HEVCの参照距離が適切に設定されないのを修正。

[NVEncC]
・colormatrix, colorprim, transferが正しく設定されないのを修正。
・短縮オプションの一部がヘルプにないのを修正。
・AVSリーダーでYUY2読み込みが正常に行われていなかったのを修正。



HEVCエンコの謎



さっき書いたように、わたしのGTX970と、あと情報提供いただいたGTX980では、NVEncのAPIから使える機能を表示するとHEVCエンコのMax Bframesが0になってしまう(=Bフレームが全く使えない)。

GTX970の例

NVEncC.exe --check-features > S:\nvenc_features.txt

Environment Info
OS : Windows 8.1 (x64)
CPU: Intel Core i7-5960X @ 3.00GHz [TB: 4.40GHz] (8C/16T)
GPU: GeForce GTX 970 (13 EU) @ 1253 MHz (347.25)
RAM: Total 32670 MB / Used 20774 MB

使用可能な各機能の情報を表示します。
コーデック: H.264/AVC
Max Bframes 4
RC Modes 63
Field Encoding 1
MonoChrome 0
FMO 0
Quater-Pel MV 1
B Direct Mode 1
CABAC 1
Adaptive Transform 1
Max Temporal Layers 0
Hierarchial P Frames 0
Hierarchial B Frames 0
Max Level 51
Min Level 1
4:4:4 0
Max Width 4096
Max Height 4096
Dynamic Resolution Change 1
Dynamic Bitrate Change 1
Forced constant QP 0
Dynamic RC Mode Change 0
Subframe Readback 0
Constrained Encoding 0
Intra Refresh 1
Custom VBV Bufsize 1
Dynamic Slice Mode 1
Ref Pic Invalidiation 1
PreProcess 0
Async Encoding 1
Max MBs 65536
MAX MB per sec 983040
Lossless 1

コーデック: H.265/HEVC
Max Bframes 0
RC Modes 63
Field Encoding 0
MonoChrome 0
FMO 1
Quater-Pel MV 1
B Direct Mode 0
CABAC 1
Adaptive Transform 0
Max Temporal Layers 0
Hierarchial P Frames 0
Hierarchial B Frames 0
Max Level 62
Min Level 1
4:4:4 0
Max Width 4096
Max Height 4096
Dynamic Resolution Change 1
Dynamic Bitrate Change 1
Forced constant QP 0
Dynamic RC Mode Change 0
Subframe Readback 0
Constrained Encoding 1
Intra Refresh 1
Custom VBV Bufsize 1
Dynamic Slice Mode 1
Ref Pic Invalidiation 1
PreProcess 0
Async Encoding 0
Max MBs 65536
MAX MB per sec 983040
Lossless 0


わたしのプログラムの問題、ドライバの問題、ハードウェアの問題(限界)、どれなのか…

もしGTX960をお持ちの方がいらっしゃれば、この情報を教えていただけると幸いです。
(2015.01.25) GTX960についても情報頂きました。やはりMax B Frames = 0とのことです。情報頂きありがとうございました。
GTX980について教えてくださった方も、ありがとうございました。

NVEncCフォルダ内のNVEncC_test.batをダブルクリックしていただけると、nvenc_features.txtというファイルができるので、その内容を教えていただければと思います。



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



スポンサーサイト

コメントの投稿

非公開コメント

No title

GTX 960でもMax Bframes=0です。

Environment Info
OS : Windows 8.1 (x64)
CPU: Intel Core i7-4790K @ 4.00GHz [TB: 4.20GHz] (4C/8T)
GPU: GeForce GTX 960 (8 EU) @ 1253 MHz (347.25)
RAM: Total 8077 MB / Used 3814 MB

コーデック: H.265/HEVC
Max Bframes 0
RC Modes 63
Field Encoding 0
MonoChrome 0
Quater-Pel MV 1
B Direct Mode 0
Max Temporal Layers 0
Hierarchial P Frames 0
Hierarchial B Frames 0
Max Level 62
Min Level 1
4:4:4 0
Max Width 4096
Max Height 4096
Dynamic Resolution Change 1
Dynamic Bitrate Change 1
Forced constant QP 0
Dynamic RC Mode Change 0
Subframe Readback 0
Constrained Encoding 1
Intra Refresh 1
Custom VBV Bufsize 1
Dynamic Slice Mode 1
Ref Pic Invalidiation 1
PreProcess 0
Async Encoding 0
Max MBs 65536
MAX MB per sec 983040
Lossless 0

Re: No title

GTX960の情報頂きありがとうございます!

残念ながら、まだ現時点ではHEVCのBフレームのサポートはなし、ということになりそうですね。

No title

GTX970 のメモリ問題・・・
大丈夫なんでしょうか?

Re: No title

いやあ、まあメモリ3.5GBだと思えば…(苦笑)

メモリ量だけじゃなく帯域も細いんでしょうかねえ。

No title

いまさらですが、第二世代Maxwellって確か
圧縮で帯域負荷を減らす
→メモリ帯域を減らす
→その分別の高性能化、低消費電力化に回す
って設計思想でしたよね(そもそもTegra向けに開発した)。

GTX960はメモリ帯域128bitでGTX660(192bit)より高速ですし。

なので、メモリ帯域が細い=性能が低い、ではないのでしょうが逆に「圧縮が効く処理効かない処理」がありそう。




素人考えなのですが、HaswellにGTX960載せた環境で「QSVとNVencとCPUソフトエンコとOpenCLエンコ」組み合わせたようなエンコってできないんでしょうか。

動画ファイルを解析してビットレートに合わせて分割し、ビットレートが大きいファイル→重要なシーンだから2パスCPUエンコ、残りは適当にQSV及びNVENCに投げる、とか。

多分無意味だから誰もやってないのでしょうが。

Re: No title

おっしゃるように、圧縮には向き不向きがありそうなので、圧縮で帯域負荷を減らすよりも単純にbit幅増やしてほしいものです。そのほうが確実なので。なんでGTX960は128bitなのか…。

エンコの合わせ技は、難しいんじゃないでしょうか…。解析にも時間かかりそうですしね。

No title

それこそ物理的配線数低減のメリットが圧縮によるデメリットを上回るからかと。実質192bitとのことです。ゲームに関しては性能は上がってますが、GPGPUだとどうなんでしょうね。

消費電力下がる分セミファンレス動作、クロック向上はメリットですね。
プロフィール

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