1

Web カメラ ビデオをプレビューする必要がある Directshow アプリケーションがあり、ユーザーが [録画] をクリックすると、ビデオのファイルへのキャプチャを開始する必要があります。

そのために、PREVIEW ピンを RENDER フィルターに接続し、CAPTURE ピンをファイルに保存する AVI_MUX フィルターに接続して、1 つのキャプチャ グラフを作成しました。

次のようになります。

                        /[PREVIEW PIN]-->[VIDEO_RENDERER]--->[SCREEN]
[VIDEO CAPTURE FILTER] /
                       \
                        \[CAPTURE PIN]--->[AVI_MUX]--->[FILE WRITER]

グラフで Run() を呼び出すと、ビデオが画面に表示され、ファイルに正しく保存されます。

私の質問は、CAPTURE_PIN セクションなしでグラフの PREVIEW PIN セクションのみを実行するにはどうすればよいかということです。

私の最初のアイデアは、それぞれのフィルターを手動で開始/停止することでしたが、Microsoft の Directshow amcap サンプルを調べたところ、実際には 2 つの別々のグラフが作成されました。1 つはプレビュー用、もう 1 つはキャプチャ用です。ユーザーがビデオをプレビューしたい場合は、キャプチャ グラフを破棄し、プレビュー グラフを作成します。また、ユーザーがビデオを録画したい場合は、プレビュー グラフを破棄し、キャプチャ グラフを作成します。

特に、1 つのグラフに既に PREVIEW ピンと CAPTURE ピンの両方が含まれているため、これは無駄に思えます。ここで正しいアプローチは何ですか?

4

2 に答える 2

2

フィルター グラフは全体として状態を変更できます。その部分を個別に個別に実行することはできません。

最も簡単な解決策は、プレビュー グラフを個別に作成し、記録を開始する必要がある場合は、プレビュー グラフを停止/閉じて、新しいキャプチャ グラフを再構築することです。これは確かに、「記録開始」コマンドへの応答に一定の遅延を伴います。

もう 1 つのオプションは、複数のグラフを使用し、コード内または「ブリッジ」を使用して 2 つの間でデータを共有し、グラフを個別に開始/停止することです。

于 2012-08-17T06:49:19.487 に答える
1

2 つの異なるグラフを切り替えることができます。

1)最初の単純なグラフ、ユーザーが見るだけ

2) ユーザーが同時に見たり記録したりするよりも、2 番目の複雑なグラフ

于 2012-08-17T07:04:37.263 に答える