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 つの接続されたピンの間に自動的に配置することを読みました。動作していますが、ビデオの品質がひどいです。多くのピクセルが混在しているか、破損しているようです。また、フィルターが追加されたという証拠もありません。プログラムでデコーダーをそれらの間に配置していないためですか?可能であれば、このフィルターを追加するにはどうすればよいですか?
事前に感謝し、英語で申し訳ありません。