問題タブ [desktop-duplication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image - D3D11_MAPPED_SUBRESOURCE (デスクトップ複製 API) からの、デスクトップ イメージ フレームの生のリソース データの圧縮
Desktop Duplication API でキャプチャされたデスクトップ イメージ データのフレームをネットワーク経由で転送する必要がありますが、問題が 1 つあります。DXGI_FORMAT_B8G8R8A8_UNORM形式のFullHDの生フレームデータのサイズ は、約 8 MBで、サイズが大きすぎます。特に1フレーム。
D3D11_MAPPED_SUBRESOURCEからのデスクトップ イメージのフレームを圧縮し、少なくともKB単位でサイズを取得する良い方法はありますか? bmp から jpeg への何らかの変換でしょうか?
私はすでにLZ4_compress_defaultメソッドを使用してLZ4圧縮を試しましたが、3.4 MBサイズのバイト配列を取得しましたが、これはまだフレームには大きすぎます。
c# - DesktopDuplication API での ReleaseFrame() の無効な呼び出し
私のアプリのユーザーは、DesktopDuplication API
.
キャプチャを開始すると、アプリが のフレームを解放できないため、アプリがクラッシュしOutputDuplication
ます。
ユーザーの PC の詳細:
エラーログ:
ユーザーは、マウス カーソルがキャプチャされていないときに画面をキャプチャできるため、カーソルもキャプチャするキャプチャ メソッドに何か問題があるはずです。
各フレームのキャプチャが終了したら、 はDuplicatedOutput
フレームを解放する必要があります。
しかし、リリースが で失敗した場合InvalidCall
、どうすればよいですか?
また、(開発者のマシンではなく) ユーザーの PC でこの種のエラーをデバッグするにはどうすればよいですか?
編集:
これは私がやろうとしていることです:
onをGraphics Tools
有効にしてWindows Settings
、次のコードをキャプチャの初期化に追加しました。
次に、ノートブックの専用 GPU で実行するようにアプリを設定しますInvalidException
。
アプリを実行して試してみましoutput1.DuplicateOutput(Device);
たが、期待どおりに失敗しました。
その後、DebugView の実行中にアプリを実行しようとしましたが、エラーが発生したときではなく、アプリを閉じたときにのみメッセージが表示されました。
そこで、次のdxcap
コマンドを使用して、 を使用してエラーをキャプチャしようとしました。
dxcap -debug -toXML '[path]\debug.xml' -file '[path]\debug.vsglog' -c '[path]\bin\Debug\MyApp.exe'
残念ながら、次のようにCreateDevice()
失敗します。
HRESULT: [0x887A0004]、モジュール: [SharpDX.DXGI]、ApiCode: [DXGI_ERROR_UNSUPPORTED/Unsupported]、メッセージ: 指定されたデバイス インターフェイスまたは機能レベルは、このシステムではサポートされていません。
その後、もう一度試してみましたが、今回はのみDeviceCreationFlags.Debug
でうまくいきました。私はまだファイルを分析しています。