2011-06-20 42 views
1

私はDirectShowを使ってビジュアルC++ビデオキャプチャアプリケーションを開発しています。キャプチャフィルタの出力ピンのAM_MEDIA_TYPE構造体のメディアサブタイプを調べると、MEDIASUBTYPE_RGB24、MEDIASUBTYPE_MJPGなどの異なるフォーマットのデータをキャプチャすることができます。キャプチャピンのプロパティを編集する方法はありますか?

出力ピンにMEDIASUBTYPE_RGB24のような共通の形式でデータを出力しますか?私は可能なすべてのサブタイプの解読を含めたくありません。

エンコーダに渡す前に、キャプチャしたすべてのWebcamデータを一般的な種類にする方法があるかどうか教えてください。

答えて

0

受信したいフォーマットに固定されたピンにシンクを接続し、DirectShowでフィルタを挿入して、入力タイプを目的のタイプに変換します。

このexampleを参照してください。

0

一般に、各カメラは独自の固有のフォーマットでデータを生成しますが、キャプチャドライバ内でRGB24または他の形式にトランスコードできる保証はありません。すべてのフォーマットのうち、YUVのバリエーションは最も一般的です。これらのフォーマットは画面上に直接表示されるだけでなく、ダウンストリーム圧縮フィルタに供給されるためです。

@Christopherが指摘している例では、キャプチャ形式を制御する方法の問題に実際には触れていません。ビデオキャプチャフィルタは、無数の出力フォーマットの可能性を制御するために、独自のインターフェイスセットを使用します。

IAMStreamConfig.SetFormat()を使用して、キャプチャデバイスからの出力ストリーム(キャプチャとプレビュー)のフレームレート、サイズ、色空間、および圧縮を選択します。

IAMStreamConfig.GetStreamCaps()を使用して、レート、ディメンション、色空間、および圧縮形式が使用可能なフレームを特定します。ほとんどのカメラは、さまざまなフォーマットを提供します。

関連する問題