0

DirectShow APIを使用して、パネル ハンドルでカメラのライブ ストリーミングを表示するC++ dllを作成しました。私のカメラは Logitech c920 Webcam です。私のカメラは、3 番目の出力ピンで H264 コーデックを提供します。

graphEdit を使用する場合、Logitech Webcam の 3 番目の出力ピンVideo Mixing Render 9 の 1 番目の入力ピンに接続すると、DTV-DVD microsoft デコーダーが次のように接続間に自動的に追加されます。

Logitech HD Pro Webcam C920 [Capturer] => [VMR Input0] ビデオ ミキシング レンダラー 9

(接続時は となります)

Logitech HD Pro Webcam C920 [Capturer] => [video Input1] Microsoft DTV-DVD Video Decoder [video Output 1] => [VMR Input0] Video Mixing Renderer 9

品質は非常に良く、アクティブなムービー ウィンドウでのビデオ ストリーミング速度は高速です。

これが間違っているところです。私のコードでは、キャプチャ ソースの 3 番目のピンを vmr7 入力ピンに直接接続しました (dt-dvd デコーダーを追加せずに)。また、IAMStreamConfig を使用して、ビデオ設定を 1600x896 および H264 Mediatype に設定しました。

msdn で (正しく理解していれば)、directshow が必要なフィルターを 2 つの接続されたピンの間に自動的に配置することを読みました。動作していますが、ビデオの品質がひどいです。多くのピクセルが混在しているか、破損しているようです。また、フィルターが追加されたという証拠もありません。プログラムでデコーダーをそれらの間に配置していないためですか?可能であれば、このフィルターを追加するにはどうすればよいですか?

事前に感謝し、英語で申し訳ありません。

4

1 に答える 1

1

問題はここにあります:

Logitech Webcam の 3 番目の出力ピンを Video Mixing Render 9 に接続すると、

キャプチャ ソースの 3 番目のピンを vmr7 入力ピンに直接接続しました。

VMR-9 対 VMR-7。前者は Direct3D サーフェスに支えられており、フレームはハードウェアによってスムーズにスケーリングされます。後者は反対に、Windows Vista 以降スケーリングが利用できない DirectDraw サーフェスを使用しており、画質はひどいものです。

最高の画質を得るには、ビデオ レンダラー (または VMR-9) として EVR を使用します。

于 2013-08-23T20:25:05.363 に答える