アプリケーションでDirectShowを使用して、Webカメラからビデオをキャプチャしています。カメラを使用して1080Pビデオをプレビューおよびキャプチャするときに問題が発生します。例:LogitechのHD ProWebcamC910カメラ。1080Pビデオプレビューは非常にぎくしゃくしていて、HDの鮮明さは観察されませんでした。列挙されたデバイス名は「USBビデオデバイス」であることがわかりました
今日、これらのXPマシンにLogitechWebカメラソフトウェアをインストールしました。そのアプリケーションでは、ジャークすることなく1080Pビデオを見ることができました。また、Logitechアプリケーションで1080Pビデオを録画し、高品質で見ました。
しかし、アプリケーションをテストすると、
列挙されたデバイス名が、前の場合のように「USBビデオデバイス」ではなく「LogitechProWebcamC910」に変更されていることがわかります。
私のアプリケーションが消費するCPUは20%ですが、プロセス「SYSTEM」は60%以上を消費し、CPU全体は約100%回転します
ビデオ品質が大幅に改善されたとしても、100%CPUが原因である可能性があります。
アプリケーションを閉じると、「システム」プロセスによる高いCPU使用率がなくなります。
私のアプリケーションについて-ICaptureGraphBuilder2::RenderStreamを使用してプレビューストリームとキャプチャストリームを作成します。
キャプチャストリームでは、中間フィルターとしてサンプルグラバーを使用してカメラフィルターをNULLレンダラーに接続します。
プレビューストリームでは、
g_pBuild->RenderStream(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,cam,NULL,NULL);
プレビューは、IVideoWindowインターフェイスを使用して指定されたウィンドウに表示されます。私は以下を使用します
g_vidWin->put_Owner((OAHWND)(HWND)hWnd);
g_vidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);
g_vidWin->put_MessageDrain((OAHWND)hWnd);
フレームレートをさまざまな値(AvgTimePerFrame = 500000(20 fps)および666667(15 fps)など)に設定してみました。
しかし、すべての試行で、同じ結果が得られます。明瞭さは増していますが、「システム」による60%以上の利用により、まだいくつかのジャークが残っており、CPUはほぼ100%です。ビデオアプリケーションを閉じると、「システム」による使用率が1〜2%に戻ります。
これに関するどんな助けでも大歓迎です。
前もって感謝します、