1

NV Encode SDK 2.0に含まれている nvEncoder サンプル アプリケーションを実行しようとすると、エンコード セッションを開くことができません。出力は次のとおりです。

C:\Users\Timothy\Downloads\nvenc_2.0_pkg\Samples\nvEncodeApp>1080p_heavyhand_3se
c.bat

C:\Users\Timothy\Downloads\nvenc_2.0_pkg\Samples\nvEncodeApp>nvEncoder -infile=.
.\yuv\1080p\HeavyHandIdiot.3sec.yuv -outfile=HeavyHandIdiot.3sec.264 -width=1920
 -高さ=1080 -ビットレート=6000000
> Encoder[0] の NVEncode 構成パラメーター
> GPU デバイス ID = 0
> 入力ファイル = ..\yuv\1080p\HeavyHandIdiot.3sec.yuv
> 出力ファイル = HeavyHandIdiot.3sec.264
> フレーム [000--01] = 0 フレーム
> マルチビュー コーデック = いいえ
> 幅、高さ = [1920,1080]
> ビデオ出力コーデック = 4 - H.264 コーデック
> 平均ビットレート = 6000000 (bps/秒)
> ピーク ビットレート = 24000000 (bps/秒)
> バッファサイズ = 3000000
> レート制御モード = 2 - CBR (固定ビットレート)
> フレームレート (Num/Denom) = (30000/1001) 29.9700 fps
> GOP の長さ = 30
> 初期 RC QP = 0 に設定
> 初期 RC QP (I、P、B) = I(0)、P(0)、B(0)
> B フレーム数 = 0
> 表示アスペクト比 X = 1920
> 表示アスペクト比 Y = 1080
> B フレーム数 = 0
> QP (全フレーム) = 26
> QP (I フレーム) = 25
> QP (P フレーム) = 28
> QP (B フレーム) = 31
> 階層 P フレーム = 0
> 階層 B フレーム = 0
> SVC の時間的スケーラビリティ = 0
> 時間レイヤーの数 = 0
> アウトバンド SPSPPS = 0
> ビデオ コーデック プロファイル = 100
> ステレオ 3D モード = 0
> ステレオ 3D 有効 = いいえ
> フレームあたりのスライス数 = 1
> エンコーダー プリセット = 3 - 高性能 (HP) プリセット
> 非同期モード = はい
> YUV 入力フォーマット = NV12 (セミプレーナー UV インターリーブ) ピッチ リニア
> NVENC API インターフェイス = 2 - CUDA
> Map Resource API Demo = いいえ
> 動的解像度変更 = 0
> 動的ビットレート変更 = 0
入力ファイルサイズ: 236390400 バイト
入力ファイル名: ..\yuv\1080p\HeavyHandIdiot.3sec.yuv
自動検出 (nvAppEncoderParams.endFrame = 76 フレーム)


>> GetNumberEncoders() は 1 つの CUDA 対応 GPU デバイスを検出しました <<
  [ GPU #0 - < GeForce GTX 670 > は Compute SM 3.0、NVENC 利用可能 ]

>> InitCUDA() は 1 つの CUDA 対応 GPU デバイスを検出しました<<
  [ GPU #0 - < GeForce GTX 670 > は Compute SM 3.0 を搭載し、NVENC を使用可能 ]

>> GPU #0 を選択 - < GeForce GTX 670 > は SM 3.0 と NVENC をサポート
ファイル: src\CNVEncoder.cpp、行: 1380、nvEncOpenEncodeSessionEx() が e で返される
エラー21
注: GUID キーが無効または正しくない可能性があります。ドライバをアップグレードすることをお勧めします
新しい鍵を入手する
src\CNVEncoder.cpp:1382 code=21 での NVENC エラー (c では​​ NVENC 機能を使用できません
現在のライセンス キーの種類) "nvStatus"

API によると、エラー コード 21 はNV_ENC_ERR_INCOMPATIBLE_CLIENT_KEYであり、次のコメントが含まれています。

/**
 * This indicates that the client is attempting to use a feature
 * that is not available for the license type for the current system.
 */

プログラミングガイドには次のように書かれています。

2. エンコードのためのハードウェアのセットアップ

2.1 エンコード セッションを開く

NVENC インターフェイスをロードした後、クライアントは最初に呼び出しNvEncOpenEncodeSessionてエンコード セッションを開く必要があります。NVENC インターフェイスは、クライアントにエンコード セッション ハンドルを提供します。これは、現在のセッションでの以降のすべての API 呼び出しに使用する必要があります。

2.1.1 ライセンス クライアント キー GUID の使用:

クライアントは、この SDK で提供されるか、ライセンスの一部として個別に購入されたキー GUID へのポインターを渡す必要があります。NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS::clientKeyPtr

ガイドによると、サンプルコードは設定されていないため無効NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS::clientKeyPtrです。しかし、ガイドにあるように、SDK には主要な GUID が付属していませんでした。

誰かがここで同じ問題を抱えていて、無料の試用版キーを使用して解決しました. SDK の 2.0 ベータ版に含まれていたようですが、これは利用できなくなりました。

また、ドライバー 311.06、312.07、および 314.22 をインストールしようとしましたが、成功しませんでした。GeForce GTX 670 を持っています。

解決策はありますか?

4

3 に答える 3

1

残念ながら、SDK のベータ版をどこにも見つけることができず、最終版しか見つかりませんでした。おそらく唯一の方法は、ベータ版をダウンロードした人を見つけることでしょう.

もう 1 つの方法は、NVIDIA のドライバー (特に「Shadowplay」と SHIELD の両方が NVENC を使用している場合) をリバース エンジニアリングするか、Geforce カードで NVENC の使用が許可されている既存のエンコード ツールを使用して、互換性のあるキーを見つけることです。

私が注目しているもう 1 つの潜在的な解決策は、カードを Quadro/Tesla/GRID に単純にハード MOD することです。これは 670 で実行できるはずです (残念ながら、私にとっては誰も Titan で試したことはありません): http: //www.eevblog.com/forum/projects/hacking-nvidia-cards-into-their-professional-counterparts/

厄介なことに、NVIDIA は、GTX 680 の発売時に NVENC をコンシューマ レベルの Kepler カードの機能として宣伝しましたが、これを撤回してプロ専用の機能にしました. 私の "プロシューマー" $1k GTX Titans でも動作しません。皮肉なことに、私はタイタンを長期的に使用したくありません。NVENC を使用しても、Grid K1 または K2 の方が私のプロジェクトにははるかに適しています。自分のお金を GPU に投じるよりも、スケールアップする (そして大量の NVIDIA GPU を購入する) 前に、自分のワークステーション/ゲーム リグで何かを動作させることができれば素晴らしいことです。 GNU/Linux 上の Catalyst がサポートしていないことを除いて、代わりに Open Video Encode エンジンを使用した AMD/OpenCL ルート。うーん。

于 2013-05-27T16:03:05.023 に答える
-1

ライセンス キーが必要です。ライセンス キーは、Nvidia に問い合わせて取得するか (頑張ってください)、共有ライブラリを逆アセンブルするか、バンドルされているサンプル コードで gdb の rwatch を使用して取得できます。申し訳ありませんが、これ以上お役に立てません。

于 2014-06-08T04:10:41.597 に答える